Hprose\Service::internalPush PHP Method

internalPush() public method

*private
public internalPush ( $topic, $id, $result )
    function internalPush($topic, $id, $result)
    {
        if (Future\isFuture($result)) {
            $self = $this;
            return $result->complete(function ($value) use($self, $topic, $id) {
                return $self->internalPush($topic, $id, $value);
            });
        }
        $topics = $this->getTopics($topic);
        if (!isset($topics[$id])) {
            return Future\value(false);
        }
        if (isset($topics[$id]->request)) {
            $topics[$id]->request->resolve($result);
            unset($topics[$id]->request);
            $this->setTimer($topics, $topic, $id);
            return Future\value(true);
        } else {
            $detector = new Future();
            $message = new stdClass();
            $message->detector = $detector;
            $message->result = $result;
            $topics[$id]->messages->push($message);
            $this->setTimer($topics, $topic, $id);
            return $detector;
        }
    }