/** * 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; }