コード例 #1
0
ファイル: Response.php プロジェクト: neilberget/OpenZIS
 private function processResponse($m)
 {
     $dom = $m->dom;
     $headerNode = $m->headerNode;
     $originalMsgId = $m->msgId;
     $this->originalMsgId = $m->msgId;
     $originalSourceId = $m->sourceId;
     $version = $m->version;
     $this->originalSourceId = $originalSourceId;
     $this->originalMsgId = $originalMsgId;
     $validSourceId = Agent::checkSourceId($originalSourceId);
     if (!$validSourceId) {
         RegisterError::invalidSourceId($agent->sourceId, $originalMsgId);
         exit;
     } else {
         $agent = new Agent($originalSourceId);
         if (!$agent->isRegistered()) {
             RegisterError::notRegisteredError($originalSourceId, $originalMsgId);
             exit;
         } else {
             $msgId = $dom->getElementsByTagName('SIF_RequestMsgId')->item(0)->nodeValue;
             if (!RequestObject::validRequestMsgId($msgId)) {
                 RequestError::invalidMsgId($originalSourceId, $originalMsgId);
             } else {
                 $requestObject = new RequestObject($msgId);
                 $sifResponseNode = $dom->getElementsByTagName('SIF_Response')->item(0);
                 $size = strlen($dom->saveXML($sifResponseNode));
                 if (!$requestObject->compareBufferSize($size)) {
                     $categoryCode = "8";
                     $sifCode = "11";
                     $shortDesc = "Response Error";
                     $longDesc = "SIF_Response is larger than requested SIF_MaxBufferSize";
                     $this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc);
                     SifLogEntry::CreateSifLogEvents($dom->saveXml($headerNode), 4, 2, 'Invalid buffersize for response to agent ' . $agent->sourceId . ' request');
                     RequestError::invalidBufferSize($originalSourceId, $originalMsgId);
                 } else {
                     $destinationId = $dom->getElementsByTagName('SIF_DestinationId')->item(0)->nodeValue;
                     if (!$requestObject->compareDestinationId($destinationId)) {
                         $categoryCode = "8";
                         $sifCode = "14";
                         $shortDesc = "Response Error";
                         $longDesc = "SIF_DestinationId does not match SIF_SourceId from SIF_Request";
                         $this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc);
                         SifLogEntry::CreateSifLogEvents($dom->saveXml($headerNode), 4, 1, 'Invalid destinationId for response to agent ' . $agent->sourceId . ' request');
                         RequestError::invalidDestination($originalSourceId, $originalMsgId);
                     } else {
                         if (RequestObject::validMessageVersion($msgId, $version)) {
                             if (ResponseObject::responseExist($msgId)) {
                                 $responseObject = new ResponseObject($msgId);
                                 $packetNum = $dom->getElementsByTagName('SIF_PacketNumber')->item(0)->nodeValue;
                                 if ($packetNum != $responseObject->nextPacketNum) {
                                     $categoryCode = "8";
                                     $sifCode = "12";
                                     $shortDesc = "SIF_PacketNumber is invalid in SIF_Response";
                                     $longDesc = 'Invalid packet number of ' . $packetNum . ' was expecting ' . $responseObject->nextPacketNum . 'for response to agent ' . $agent->sourceId . ' request';
                                     //$this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc);
                                     RequestError::invalidPacketNum($originalSourceId, $originalMsgId, $longDesc);
                                 } else {
                                     $this->setupResponseOld($agent, $msgId, $responseObject);
                                 }
                             } else {
                                 $packetNum = $dom->getElementsByTagName('SIF_PacketNumber')->item(0)->nodeValue;
                                 if ($packetNum != 1) {
                                     $categoryCode = "8";
                                     $sifCode = "12";
                                     $shortDesc = "Response Error";
                                     $longDesc = 'Invalid packet number of ' . $packetNum . ' was expecting 1 for response to agent ' . $agent->sourceId . ' request';
                                     RequestError::invalidPacketNum($originalSourceId, $originalMsgId, $longDesc);
                                 } else {
                                     $this->setupResponseNew($agent, $msgId, $m);
                                 }
                                 //check if packetnum is 1
                             }
                             //check if response with more packets
                         } else {
                             $categoryCode = "8";
                             $sifCode = "13";
                             $shortDesc = "Response Error";
                             $longDesc = "SIF_Response does not match any SIF_Version from SIF_Request.";
                             $this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc);
                             RequestError::invalidVersion($originalSourceId, $originalMsgId);
                         }
                         //check if version is valid
                     }
                     // check if valid destination
                 }
                 //check if valid buffer
             }
             //check if valid request message id
         }
         //check if registered
     }
     //check sourceId
 }