<?php

namespace xmvc\daemon\lib;

/**
 * 消息系统在线用户
 */
class Online
{
    /*
    $list = [
        id => [
            'userid' => 'admin', //用户ID
            'connection' => $connection, //连接
            'lastReadTime' => 1234567890, //最后访问时间
            'lastSendTime' => 1234567890, //服务端对其最后发送时间
        ]
    ];
    */
    public $timeoutval = 90; //超时时间(秒)
    public $list = [];

    public function set($connection, $userid)
    {
        $this->list[$connection->id] = [
            'userid' => $userid,
            'connection' => $connection,
            'lastReadTime' => time(),
            'lastSendTime' => 0
        ];
    }

    public function del($id)
    {
        if (isset($this->list[$id])) {
            unset($this->list[$id]);
        }
    }

    public function clear()
    {
        foreach ($this->list as $k => $v) {
            if ($v['lastReadTime'] < time() - $this->timeoutval) {
                $this->del($k);
            }
        }
    }

    public function updateReadTime($id)
    {
        if (isset($this->list[$id])) {
            $this->list[$id]['lastReadTime'] = time();
        }
    }

    public function lastSendTime($id)
    {
        if (isset($this->list[$id])) {
            $this->list[$id]['lastSendTime'] = time();
        }
    }

    /*
    * 根据用户ID，取所有连接id
    */
    public function getIdsByUserid($userid)
    {
        $ids = [];
        foreach ($this->list as $k => $v) {
            if ($v['userid'] == $userid) {
                $ids[$k] = $k;
            }
        }
        return $ids;
    }
}
