Standardized Interfaces
Allowed null to be returned instead of NullCommand on Observers Removed profanity
This commit is contained in:
		
							parent
							
								
									68e718cc54
								
							
						
					
					
						commit
						7c5c5ed6ce
					
				| @ -4,6 +4,7 @@ use Ratchet\Server\Aggregator; | ||||
| use Ratchet\Protocol\ProtocolInterface; | ||||
| use Ratchet\Logging\LoggerInterface; | ||||
| use Ratchet\Logging\NullLogger; | ||||
| use Ratchet\Command\CommandInterface; | ||||
| 
 | ||||
| /** | ||||
|  * Creates an open-ended socket to listen on a port for incomming connections.  Events are delegated through this to attached applications | ||||
| @ -74,12 +75,6 @@ class Server implements SocketObserver, \IteratorAggregate { | ||||
|      * @todo Should I make handling open/close/msg an application? | ||||
|      */ | ||||
|     public function run($address = '127.0.0.1', $port = 1025) { | ||||
|         /* Put this back if I change the server back to Chain of Responsibility | ||||
|         if (count($this->_receivers) == 0) { | ||||
|             throw new \RuntimeException("No receiver has been attached to the server"); | ||||
|         } | ||||
|         */ | ||||
| 
 | ||||
|         set_time_limit(0); | ||||
|         ob_implicit_flush(); | ||||
| 
 | ||||
| @ -100,23 +95,27 @@ class Server implements SocketObserver, \IteratorAggregate { | ||||
| 
 | ||||
|     			foreach($changed as $resource) { | ||||
|                     if ($this->_master->getResource() === $resource) { | ||||
|                         $this->onOpen($this->_master); | ||||
|                         $res = $this->onOpen($this->_master); | ||||
|                     } else { | ||||
|                         $conn  = $this->_connections[$resource]; | ||||
|                         $data  = null; | ||||
|                         $bytes = $conn->recv($data, 4096, 0); | ||||
| 
 | ||||
|                         if ($bytes == 0) { | ||||
|                             $this->onClose($conn); | ||||
|                             $res = $this->onClose($conn); | ||||
|                         } else { | ||||
|                             $this->onRecv($conn, $data); | ||||
|                             $res = $this->onRecv($conn, $data); | ||||
|                         } | ||||
|                     } | ||||
| 
 | ||||
|                     if ($res instanceof CommandInterface) { | ||||
|                         $res->execute(); | ||||
|                     } | ||||
|                 } | ||||
|             } catch (Exception $e) { | ||||
|                 $this->_log->error($e->getMessage()); | ||||
|             } catch (\Exception $fuck) { | ||||
|                 $this->_log->error('Big uh oh: ' . $fuck->getMessage()); | ||||
|             } catch (Exception $se) { | ||||
|                 $this->_log->error($se->getMessage()); | ||||
|             } catch (\Exception $e) { | ||||
|                 $this->_log->error('Big uh oh: ' . $e->getMessage()); | ||||
|             } | ||||
|         } while (true); | ||||
| 
 | ||||
| @ -131,23 +130,28 @@ class Server implements SocketObserver, \IteratorAggregate { | ||||
| 
 | ||||
|         $this->_log->note('New connection, ' . count($this->_connections) . ' total'); | ||||
| 
 | ||||
|         $this->_app->onOpen($new_connection)->execute(); | ||||
|         return $this->_app->onOpen($new_connection); | ||||
|     } | ||||
| 
 | ||||
|     public function onRecv(SocketInterface $from, $msg) { | ||||
|         $this->_log->note('New message "' . trim($msg) . '"'); | ||||
| 
 | ||||
|         $this->_app->onRecv($from, $msg)->execute(); | ||||
|         return $this->_app->onRecv($from, $msg); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @todo Make sure it's OK to executre the command after resources have been free'd | ||||
|      */ | ||||
|     public function onClose(SocketInterface $conn) { | ||||
|         $resource = $conn->getResource(); | ||||
| 
 | ||||
|         $this->_app->onClose($conn)->execute(); | ||||
|         $cmd = $this->_app->onClose($conn); | ||||
| 
 | ||||
|         unset($this->_connections[$resource]); | ||||
|         unset($this->_resources[array_search($resource, $this->_resources)]); | ||||
| 
 | ||||
|         $this->_log->note('Connection closed, ' . count($this->_connections) . ' connections remain (' . count($this->_resources) . ')'); | ||||
|         $this->_log->note('Connection closed, ' . count($this->_connections) . ' connections remain'); | ||||
| 
 | ||||
|         return $cmd; | ||||
|     } | ||||
| } | ||||
| @ -8,6 +8,7 @@ interface SocketObserver { | ||||
|     /** | ||||
|      * When a new connection is opened it will be passed to this method | ||||
|      * @param SocketInterface | ||||
|      * @return Command\CommandInterface|NULL | ||||
|      */ | ||||
|     function onOpen(SocketInterface $conn); | ||||
| 
 | ||||
| @ -15,12 +16,14 @@ interface SocketObserver { | ||||
|      * Triggered when a client sends data through the socket | ||||
|      * @param SocketInterface | ||||
|      * @param string | ||||
|      * @return Command\CommandInterface|NULL | ||||
|      */ | ||||
|     function onRecv(SocketInterface $from, $msg); | ||||
| 
 | ||||
|     /** | ||||
|      * This is called just before the connection is closed | ||||
|      * @param SocketInterface | ||||
|      * @return Command\CommandInterface|NULL | ||||
|      */ | ||||
|     function onClose(SocketInterface $conn); | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Chris Boden
						Chris Boden