예제 #1
0
파일: Timers.php 프로젝트: carriercomm/NPG
 /**
  * Method to validate request timers
  * 
  * @param object $request Request Object
  * @return boolean true when the request timing is valid 
  *   string when request timing is not valid with the correct ack
  */
 public static function validate($request)
 {
     //reset the failure for next validation
     self::$failure = FALSE;
     $ret = TRUE;
     $isTimeout = FALSE;
     //we're on check - no timers
     if (!isset($request->last_method_time) && !$request->last_method_time) {
         return TRUE;
     }
     $msg_type = strtolower($request->getHeaderField('MSG_TYPE'));
     self::$last_transaction = $request->last_method;
     self::$last_request_time = $request->last_method_time;
     self::$last_port_time = $request->last_transfer_time;
     self::$port_time = $request->getBodyField("PORT_TIME");
     // current port time
     if (isset(self::$timerMethodArr[$msg_type])) {
         $timer = self::$timerMethodArr[$msg_type];
         //			Application_Model_Agg::insertInvalidProcessByTimer($timer, $request->getHeaderField('MSG_TYPE') , $waiting);
         if ($timer['time'] == "PORT") {
             $input_time = self::$last_port_time;
         } else {
             $input_time = self::$last_request_time;
         }
         if ($timer['lt']) {
             $isTimeout = self::isTimeout($timer['code'], $input_time);
             //true of false
         } else {
             $isTimeout = self::isTimeout($timer['code'], $input_time, null, FALSE);
             //true of false
         }
     }
     // the first timeout should return true or false (no further use for the timer code)
     if ($isTimeout === TRUE) {
         Application_Model_General::writeToTimersActivity($request->getHeaders(), self::$failure);
         if (self::isDebug()) {
             error_log("Timer is not valid: " . $ret);
         }
         return "Gen07";
     }
     $method_name = $msg_type . "Timeout";
     if (in_array($method_name, get_class_methods("Np_Timers"))) {
         self::$method_name();
         if (self::$failure !== FALSE) {
             $ret = ucfirst(strtolower(self::$failure));
             Application_Model_General::writeToTimersActivity($request->getHeaders(), $ret);
             if (self::isDebug()) {
                 error_log("Timer is not valid: " . $ret);
             }
             return $ret;
         }
     }
     return $ret;
 }