Esempio n. 1
0
 /**
  * Get argument for serialization
  *
  * @return array
  */
 public function getArgumentsForSerialization()
 {
     $a = [];
     $args = $this->getArguments();
     $argsKw = $this->getArgumentsKw();
     if ($args !== null && is_array($args) && count($args) > 0) {
         $a = array_merge($a, [$args]);
         if ($argsKw !== null && Message::isAssoc($argsKw) && count((array) $argsKw) > 0) {
             $a = array_merge($a, [$argsKw]);
         }
     } else {
         if ($argsKw !== null && Message::isAssoc($argsKw) && count((array) $argsKw) > 0) {
             $a = array_merge($a, [[], $argsKw]);
         }
     }
     return $a;
 }
Esempio n. 2
0
 /**
  * process call
  *
  * @param \Thruway\ClientSession $session
  * @param string $procedureName
  * @param mixed $arguments
  * @param mixed $argumentsKw
  * @param mixed $options
  * @return \React\Promise\Promise
  */
 public function call(ClientSession $session, $procedureName, $arguments = null, $argumentsKw = null, $options = null)
 {
     //This promise gets resolved in Caller::processResult
     $futureResult = new Deferred();
     $requestId = Session::getUniqueId();
     $this->callRequests[$requestId] = ["procedure_name" => $procedureName, "future_result" => $futureResult];
     if (!(is_array($options) && Message::isAssoc($options))) {
         if ($options !== null) {
             Logger::warning($this, "Options don't appear to be the correct type.");
         }
         $options = new \stdClass();
     }
     $callMsg = new CallMessage($requestId, $options, $procedureName, $arguments, $argumentsKw);
     $session->sendMessage($callMsg);
     return $futureResult->promise();
 }