Exemplo n.º 1
0
 protected function grabModemMessages($cycle)
 {
     $this->_logger->log(__CLASS__ . ' ' . __METHOD__, array('cycle' => $cycle));
     $output = null;
     if ($this->_connector->readData($output) === false) {
     }
     $this->returnResult(__CLASS__ . ' ' . __METHOD__, $output);
 }
Exemplo n.º 2
0
 protected function listen()
 {
     $this->_logger->log(__CLASS__ . ' ' . __METHOD__ . ' Start listen.', array('source' => $this->source));
     $messages = null;
     $process = $this;
     $logger = $process->_logger;
     $this->_connector->onReceiveMessage = function ($message, $station_id, $source_info) use(&$process, &$logger) {
         $logger->log(__CLASS__ . ' ' . __METHOD__ . ' New message', array('message' => $message, 'listener_id' => $process->listener->listener_id, 'overwrite' => $process->settings->overwrite_data_on_listening));
         $messageId = ListenerLog::addNew($message, $process->listener->listener_id, $process->settings->overwrite_data_on_listening, 'server', 0, $source_info);
         ListenerProcess::addComment($process->listener->listener_id, 'comment', 'got msg #' . $messageId);
     };
     $this->_connector->readData($messages);
     $this->_logger->log(__CLASS__ . ' ' . __METHOD__ . ' Complete listen.', array('source' => $this->source));
 }
 public function readData(&$output)
 {
     parent::readData($output);
     $xml = $this->loadXml();
     if (is_null($xml)) {
         $this->errors[] = 'Can\'t load xml file: ' . $path;
         return false;
     }
     if ($this->validate($xml) === false) {
         $this->errors[] = 'Validation failed.';
         return false;
     }
     $this->process($xml);
     return true;
 }
Exemplo n.º 4
0
 protected function listenDLTorrent($cycle = 1)
 {
     $this->_logger->log(__METHOD__, array('cycle' => $cycle));
     $this->_connector->setParams(array('timeout' => 60));
     ListenerProcess::addComment($this->listener->listener_id, 'comment', 'Opening COM connection');
     $messages = null;
     $process = $this;
     $logger = $process->_logger;
     $this->_connector->onReceiveMessage = function ($message) use(&$process, &$logger) {
         $logger->log(__METHOD__ . ' New message', array('message' => $message, 'listener_id' => $process->listener->listener_id, 'overwrite' => $process->settings->overwrite_data_on_listening));
         $messageId = ListenerLog::addNew($message, $process->listener->listener_id, $process->settings->overwrite_data_on_listening, 'datalogger');
         ListenerProcess::addComment($process->listener->listener_id, 'comment', 'got msg #' . $messageId);
     };
     $result = $this->_connector->readData($messages);
     $this->_logger->log(__METHOD__ . ' Complete listen datalogger.', array('cycle' => $cycle, 'result' => $result));
 }
 protected function listenPollingTemp($cycle = 1)
 {
     $this->_logger->log(__CLASS__ . ' ' . __METHOD__, array('cycle' => $cycle));
     $this->_connector->setParams(array('timeout' => 60));
     // 1min
     ListenerProcess::addComment($this->listener->listener_id, 'comment', 'Start polling');
     $messages = null;
     $process = $this;
     $logger = $process->_logger;
     $this->_connector->onReceiveMessage = function ($message, $stationId) use(&$process, &$logger) {
         $logger->log(__CLASS__ . ' ' . __METHOD__ . ' New message', array('message' => $message, 'listener_id' => $process->listener->listener_id, 'overwrite' => $process->settings->overwrite_data_on_listening));
         $messageId = ListenerLogTemp::addNew($message, $process->listener->listener_id, $process->settings->overwrite_data_on_listening, 'poller', $stationId);
         ListenerProcess::addComment($process->listener->listener_id, 'comment', 'got msg #' . $messageId);
     };
     $result = $this->_connector->readData($messages);
     $this->_logger->log(__CLASS__ . ' ' . __METHOD__ . ' Complete listen datalogger.', array('cycle' => $cycle, 'result' => $result));
     return $result;
 }
 public function readData(&$output)
 {
     parent::readData($output);
     $this->_logger->log(__METHOD__);
     $master = array();
     // !!! PROTOCOL (TCP by default) SHOULD BE IN LOWER CASE !!!
     $uri = $this->_protocol . '://' . $this->_address . ':' . $this->_port;
     $this->_logger->log(__METHOD__ . ' Trying to start server', array('uri' => $uri));
     $server = @stream_socket_server($uri, $errno, $errstr);
     //        stream_set_blocking($server,0);
     $this->_logger->log(__METHOD__ . ' Server start result', array('socket' => $server));
     if ($server === false) {
         $this->_logger->log(__METHOD__ . ' Server start error', array('error' => $errstr, 'number' => $errno));
         $this->_errors[] = $errstr . '(' . $errno . ')';
     } else {
         $master[] = $server;
         $idleTime = 0;
         while (true) {
             $read = $master;
             $this->_logger->log(__METHOD__ . ' Waiting for event.');
             $except = null;
             $write = null;
             $startTime = time();
             // If timeout is null then it will wait forever.
             // Use null in case when reset SMS message is not needed.
             $modCount = @stream_select($read, $write, $except, 2000);
             //                $idleTime += time() - $startTime;
             $this->_logger->log(__METHOD__ . ' Waiting result', array('count' => $modCount));
             //
             //
             if ($modCount === false) {
                 $this->_errors[] = 'Error during waiting for event.';
                 continue;
             }
             foreach ($read as $readStream) {
                 if ($readStream === $server) {
                     $this->_logger->log(__METHOD__ . ' Client connected');
                     // New client connected. Add to list.
                     $client = @stream_socket_accept($server);
                     $master[] = $client;
                 } else {
                     // Client did something
                     $socketData = $this->readStringFromSocket($readStream);
                     $this->_logger->log(__METHOD__ . ' Received data', array('data' => $socketData));
                     if ($socketData === false) {
                         // Error
                         $index = array_search($readStream, $master, true);
                         unset($master[$index]);
                     } else {
                         if (strlen($socketData) === 0) {
                             $this->_logger->log(__METHOD__ . ' Client disconnected');
                             // Client disconnected
                             $index = array_search($readStream, $master, true);
                             @fclose($readStream);
                             unset($master[$index]);
                         } else {
                             // Client sent some data
                             $this->_logger->log(__METHOD__ . ' Received message', array('message' => $socketData));
                             $output = preg_split("/\r\n/", $socketData, -1, PREG_SPLIT_NO_EMPTY);
                             foreach ($output as $message) {
                                 $this->_logger->log(__METHOD__ . ' $readStream1 ' . print_r($readStream, 1));
                                 $m = $this->onReceiveDataMessageEvent($message);
                                 //                                    $this->_logger->log(__METHOD__. ' $readStream2 '.print_r($readStream,1));
                                 $this->writeStringToSocket($readStream, $m);
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 7
0
 public function readData(&$output)
 {
     parent::readData($output);
 }
Exemplo n.º 8
0
 /**
  * Opens COM port and tries to read messages.
  * @param array $output
  * @return boolean True if there was no errors, false - otherwise.
  */
 public function readData(&$output)
 {
     parent::readData($output);
     $this->_logger->log(__METHOD__);
     set_error_handler(array($this, 'errorHandler'));
     try {
         if ($this->_serial->deviceSet($this->_port) === true) {
             if (!is_null($this->_baudrate)) {
                 $this->_serial->confBaudRate($this->_baudrate);
             }
             if (!is_null($this->_flowControl)) {
                 $this->_serial->confFlowControl($this->_flowControl);
             }
             if (!is_null($this->_parity)) {
                 $this->_serial->confParity($this->_parity);
             }
             if (!is_null($this->_stopBits)) {
                 $this->_serial->confStopBits($this->_stopBits);
             }
             if (!is_null($this->_dataBits)) {
                 $this->_serial->confCharacterLength($this->_dataBits);
             }
             if ($this->_serial->deviceOpen('r+b') === true) {
                 $this->readCustomData($output);
                 $this->_serial->deviceClose();
             } else {
                 $this->_errors[] = 'Can\'t open port "' . $this->_port . '".';
             }
         } else {
             $this->_errors[] = 'Can\'t set port "' . $this->_port . '".';
         }
     } catch (Exception $ex) {
         if ($this->_serial->_dState === PhpSerial::SERIAL_DEVICE_OPENED) {
             $this->_serial->deviceClose();
         }
         $this->_errors[] = $ex->getMessage();
     }
     restore_error_handler();
     $result = count($this->_errors) === 0;
     return $this->returnResult(__METHOD__, $result);
 }
 public function readData(&$output)
 {
     parent::readData($output);
     $this->_logger->log(__METHOD__);
     return $this->pollDataFromStation($this->_station, $this->_timeout);
 }