Exemplo n.º 1
0
 public function writeObject($className, $objectFields, IProtocolFormatter $writer)
 {
     if (is_null($className)) {
         $writer->beginWriteObjectMap(count($objectFields));
     } else {
         $writer->beginWriteNamedObject($className, count($objectFields));
     }
     $keys = array_keys($objectFields);
     $fieldCount = count($objectFields);
     for ($i = 0; $i < $fieldCount; $i++) {
         $fieldName = $keys[$i];
         $writer->writeFieldName($fieldName);
         $writer->beginWriteFieldValue();
         try {
             MessageWriter::writeObject($objectFields[$fieldName], $writer);
         } catch (Exception $exception) {
             if (LOGGING) {
                 Log::logException(LoggingConstants::ERROR, "unable to serialize object's field " . $fieldName, $exception);
             }
         }
         $writer->endWriteFieldValue();
     }
     if (is_null($className)) {
         $writer->endWriteObjectMap();
     } else {
         $writer->endWriteNamedObject();
     }
 }
Exemplo n.º 2
0
 public function write(&$obj, IProtocolFormatter $writer)
 {
     $writer->directWriteString($obj->getName());
     $writer->directWriteBoolean($obj->getMustUnderstand());
     $writer->directWriteInt(-1);
     MessageWriter::writeObject($obj->getValue(), $writer);
 }
Exemplo n.º 3
0
 public function write(&$obj, IProtocolFormatter $writer)
 {
     $resourceType = get_resource_type($obj);
     // only database resource supported
     $databaseName = substr($resourceType, 0, strpos($resourceType, ' '));
     MessageWriter::writeObject(new DataTable($obj, $databaseName), $writer);
 }
Exemplo n.º 4
0
 public function write(&$obj, IProtocolFormatter $writer)
 {
     $writer->beginWriteArray(count($obj));
     $keys = array_keys($obj);
     $size = count($obj);
     for ($index = 0; $index < $size; $index++) {
         MessageWriter::writeObject($obj[$keys[$index]], $writer);
     }
     $writer->endWriteArray();
 }
Exemplo n.º 5
0
 public function write(&$obj, IProtocolFormatter $writer)
 {
     $writer->directWriteString(is_null($obj->getResponseURI()) ? "null" : $obj->getResponseURI());
     $writer->directWriteString(is_null($obj->getServiceURI()) ? "null" : $obj->getServiceURI());
     $writer->directWriteInt(-1);
     $writer->resetReferenceCache();
     $writer->beginWriteBodyContent();
     MessageWriter::writeObject($obj->getResponseDataObject(), $writer);
     $writer->endWriteBodyContent();
 }
 public function write(&$obj, IProtocolFormatter $writer)
 {
     $writer->beginWriteArray($obj->count());
     $iterator = $obj->getIterator();
     while ($iterator->valid()) {
         MessageWriter::writeObject($iterator->current(), $writer);
         $iterator->next();
     }
     $writer->endWriteArray();
 }
 function writeObject($className, $objectFields, IProtocolFormatter $writer)
 {
     unset($objectFields["_orbclassname"]);
     /*V3ReferenceCache*/
     $cache = $writer->GetReferenceCache();
     /*String*/
     $traitsClassId = $className;
     if ($traitsClassId == null) {
         $str = "";
         $keys = array_keys($objectFields);
         $fieldCount = count($objectFields);
         for ($i = 0; $i < $fieldCount; $i++) {
             $str .= $keys[$i] . "-";
         }
         $traitsClassId = $str;
     }
     if ($cache->HasTraits($traitsClassId)) {
         /*MemoryStream*/
         $stream = "";
         /*int*/
         $traitId = $cache->GetTraitsId($traitsClassId);
         $writer->directWriteBytes(Datatypes::OBJECT_DATATYPE_V3);
         $writer->directWriteVarInt(0x1 | $traitId << 2);
     } else {
         $writer->beginWriteNamedObject($className, count($objectFields));
         if ($className == null) {
             $cache->AddToTraitsCache($traitsClassId);
         }
         $keys = array_keys($objectFields);
         $fieldCount = count($objectFields);
         for ($i = 0; $i < $fieldCount; $i++) {
             $fieldName = $keys[$i];
             $writer->writeFieldName($fieldName);
         }
     }
     $keys = array_keys($objectFields);
     $fieldsCount = count($objectFields);
     for ($i = 0; $i < $fieldsCount; $i++) {
         $fieldName = $keys[$i];
         $writer->beginWriteFieldValue();
         try {
             MessageWriter::writeObject($objectFields[$fieldName], $writer);
         } catch (Exception $exception) {
             if (LOGGING) {
                 Log::log(LoggingConstants::ERROR, "unable to serialize object's field " . $fieldName, $exception);
             }
         }
         $writer->endWriteFieldValue();
     }
     $writer->endWriteNamedObject();
 }
 public function write(&$obj, IProtocolFormatter $writer)
 {
     $dbReader = DatabaseReaderFactory::getReader($obj->getDatabaseName());
     if ($dbReader == null) {
         if (LOGGING) {
             Log::log(LoggingConstants::ERROR, "Database reader for " . $databaseName . " not found");
         }
         $writer->writeNull();
         return;
     }
     $arr = array();
     while ($object = $dbReader->readObject($obj->getResource())) {
         $arr[] = $object;
     }
     if ($writer instanceof AmfV3Formatter) {
         MessageWriter::writeObject($arr, $writer);
     } else {
         $remotingDataSet = new RemotingDataSet($arr);
         MessageWriter::writeObject($remotingDataSet->getDataSetInfo(), $writer);
     }
 }
Exemplo n.º 9
0
 public function write(&$obj, IProtocolFormatter $writer)
 {
     $writer->beginWriteMessage($obj);
     $writer->writeMessageVersion($obj->getVersion());
     $headers = $obj->getResponseHeaders();
     $bodies = $obj->getResponseBodies();
     if (LOGGING) {
         Log::log(LoggingConstants::DEBUG, "got headers " . count($headers));
         Log::log(LoggingConstants::DEBUG, "got bodies " . count($bodies));
         Log::log(LoggingConstants::DEBUG, "message version: " . $obj->getVersion());
     }
     $headerCount = count($headers);
     $writer->directWriteShort($headerCount);
     for ($index = 0; $index < $headerCount; $index++) {
         MessageWriter::writeObject($headers[$index], $writer);
     }
     $bodyCount = count($bodies);
     $writer->directWriteShort($bodyCount);
     for ($index = 0; $index < $bodyCount; $index++) {
         MessageWriter::writeObject($bodies[$index], $writer);
     }
     $writer->endWriteMessage();
 }
Exemplo n.º 10
0
 public function write(&$obj, IProtocolFormatter $formatter)
 {
     MessageWriter::writeObject($obj->getBody(), $formatter);
 }
Exemplo n.º 11
0
 private function serializeResponse(Request $request)
 {
     $formatter = $request->getFormatter();
     MessageWriter::writeObject($request, $formatter);
     $byteBuffer = $formatter->getBytes();
     ob_clean();
     header("Content-type: " . $formatter->getContentType());
     header("Content-length: " . strlen($byteBuffer));
     $formatter->cleanup();
     print $byteBuffer;
     ob_end_flush();
 }
Exemplo n.º 12
0
 public function createRequest2($className, $methodName, $args, $headers)
 {
     /*Header[]*/
     $headersArray = null;
     if (count($headers) != 0) {
         $headersArray = array();
         $i = 0;
         foreach ($headers as $headerName => $header) {
             $headersArray[$i] = new Header($headerName, false, -1, new ConcreteObject($header));
             $i++;
         }
     }
     /*Body[]*/
     $bodiesArray = array();
     /*ReqMessage*/
     $bodyMessage = new ReqMessage();
     $bodyMessage->body = new BodyHolder();
     $bodyMessage->body->body = $args;
     $bodyMessage->destination = $this->destination;
     $bodyMessage->timestamp = 0;
     $bodyMessage->timeToLive = 0;
     if ($className != null) {
         $bodyMessage->source = $className;
     }
     $bodyMessage->operation = $methodName;
     $bodiesArray[0] = new Body(".", ".", -1, null);
     /*Message*/
     $request = new Request(3, $headersArray, $bodiesArray);
     $request->setResponseBodyPart($bodyMessage);
     //setResponseBodyData( bodyMessage );
     /*AmfV3Formatter*/
     $formatter = new AmfV3Formatter();
     MessageWriter::writeObject($request, $formatter);
     /*byte[]*/
     $requestBytes = $formatter->getBytes();
     //    var_dump($requestBytes);
     //
     //		Log::log(LoggingConstants::MYDEBUG, ob_get_contents());
     $formatter->cleanup();
     return $requestBytes;
 }