Inheritance: use trait Thruway\Message\Traits\OptionsTrait
Example #1
0
 /**
  * Create Subscription from SubscribeMessage
  *
  * @param Session $session
  * @param SubscribeMessage $msg
  * @return Subscription
  */
 public static function createSubscriptionFromSubscribeMessage(Session $session, SubscribeMessage $msg)
 {
     $options = $msg->getOptions();
     $subscription = new Subscription($msg->getTopicName(), $session, $options);
     if (isset($options->disclose_publisher) && $options->disclose_publisher === true) {
         $subscription->setDisclosePublisher(true);
     }
     return $subscription;
 }
 /**
  * Gets and published the topics state to this subscription
  *
  * @param Subscription $subscription
  * @return mixed
  */
 public function publishState(Subscription $subscription)
 {
     //Pause all non-state building event messages
     $subscription->pauseForState();
     $sessionId = $subscription->getSession()->getSessionId();
     $this->clientSession->call($this->getProcedureName(), [$subscription->getUri(), $sessionId, $subscription->getOptions(), $subscription->getSession()->getAuthenticationDetails()])->then(function ($res) use($subscription) {
         $pubId = null;
         if (isset($res[0])) {
             $pubId = $res[0];
         }
         $subscription->unPauseForState($pubId);
     }, function ($error) use($subscription) {
         Logger::error($this, "Could not call '{$this->getProcedureName()}' when restoring state");
         $subscription->unPauseForState();
     });
 }
Example #3
0
 /**
  * @param Subscription $subscription
  * @return StateHandlerRegistration|bool|null
  */
 private function getStateHandlerRegistrationForSubscription(Subscription $subscription)
 {
     $subscriptionGroup = $subscription->getSubscriptionGroup();
     if ($subscriptionGroup instanceof SubscriptionGroup) {
         if (!$this->stateHandlerMap->contains($subscriptionGroup)) {
             $this->setupStateHandlerRegistration($subscriptionGroup);
         }
         return $this->stateHandlerMap[$subscriptionGroup];
     }
     Logger::alert($this, "processSubscriptionAdded called with subscription that does not have subscriptionGroup set.");
     return false;
 }
Example #4
0
 /**
  * @param Session $session
  * @param SubscribeMessage $msg
  * @return Subscription
  */
 public function processSubscribe(Session $session, SubscribeMessage $msg)
 {
     $subscription = Subscription::createSubscriptionFromSubscribeMessage($session, $msg);
     $this->addSubscription($subscription);
     $subscription->setSubscriptionGroup($this);
     Logger::debug($this, "Added subscription to \"" . $this->getMatchType() . "\":\"" . $this->getUri() . "\"");
     $session->sendMessage(new SubscribedMessage($msg->getRequestId(), $subscription->getId()));
     return $subscription;
 }