Esempio n. 1
0
 /**
  * Load server config
  *   <format>
  *     {
  *       "transport": "",
  *       "services": [
  *         {
  *           "interface": "",
  *           "reference": ""
  *         },
  *         ...
  *       ]
  *     }
  *   </format>
  *
  * @return Server
  * @throws InitiallyRpcException
  */
 public static function server()
 {
     $configFile = ServerApp::getInstance()->getConfigFile();
     $content = file_get_contents($configFile);
     $config = json_decode($content, true);
     if (!is_array($config)) {
         throw new InitiallyRpcException("Server config error: format error");
     } else {
         if (!isset($config["transport"])) {
             throw new InitiallyRpcException("Server config error: undefined transport");
         }
     }
     $serverConfig = new Server();
     $serverConfig->setTransport($config["transport"]);
     if (isset($config["services"]) && is_array($config["services"]) && !empty($config["services"])) {
         foreach ($config["services"] as $key => $value) {
             if (!is_array($value)) {
                 throw new InitiallyRpcException("Server config error: service format error");
             } else {
                 if (!isset($value["interface"])) {
                     throw new InitiallyRpcException("Server config error: undefined interface");
                 } else {
                     if (!isset($value["reference"])) {
                         throw new InitiallyRpcException("Server config error: undefined reference");
                     }
                 }
             }
             $service = new Service();
             $service->setInterface($value["interface"]);
             $service->setReference($value["reference"]);
             $serverConfig->addService($service);
         }
     }
     return $serverConfig;
 }
Esempio n. 2
0
 /**
  * Get target
  *
  * @param $interface
  * @return mixed
  * @throws InitiallyRpcException
  */
 public function getTarget($interface)
 {
     $reference = $this->config->getService($interface)->getReference();
     if (!class_exists($reference)) {
         throw new InitiallyRpcException("Reference class not exists");
     }
     return new $reference();
 }