Пример #1
0
    def runTest( self ):
        c = Context( 'Root' )
        c.start()

        o0 = self.TestObj()
        Dispatcher.add( obj=o0, parentObj=None, context=c )

        o1 = self.TestObj()
        Dispatcher.add( obj=o1, parentObj=None, context=c )
        Dispatcher.addListener( srcObj=o1, dstObj=o0 )

        Dispatcher.send( event=Event( '1' ), srcObj=o0, dstObj=o1 )
        assert( str(o1.lastHandler) == 'on1' )

        Dispatcher.queue( event=Event( '2' ), srcObj=o0, dstObj=o1 )
        #assert( str(o1.lastHandler) == 'on2' )

        Dispatcher.send( event=Event( '3' ), srcObj=o0, dstObj=o1 )
        #assert( str(o1.lastHandler) == 'on3' )

        Dispatcher.notify( event=Event( '4' ), srcObj=o1 )
        #assert( str(o1.lastHandler) == 'on4' )
        Dispatcher.notify( event=Event( '4' ), srcObj=o1 )
        #assert( str(o1.lastHandler) == 'on4' )

        c.stop()
Пример #2
0
	def inBound_onUnbind( self, event ):
		self.state = self.STATE_UNBINDING

		self.socket.close()
		self.socket = None

		event.binding = self
		self.state = self.STATE_UNBOUND
		Dispatcher.notify( StateEvent( State.EVENT_STATE_CHANGE, self.state, self.STATE_BOUND ) )
Пример #3
0
	def inConnected_onUnbind( self, event ):
		self.state = self.STATE_DISCONNECTING

		self.socket.shutdown( SHUT_RDWR )

		self.state = self.STATE_DISCONNECTED

		newEvent = NetEvent( NetEvent.EVENT_DISCONNECTED, self.transport, self.localAddress, self.localPort, self.remoteAddress, self.remotePort, connection=self )
		Dispatcher.notify( newEvent )
Пример #4
0
	def close( self, event ):
		self.state = self.STATE_DISCONNECTING

		self.socket.close()
		self.socket = None

		self.state = self.STATE_DISCONNECTED

		newEvent = NetEvent( NetEvent.EVENT_DISCONNECTED, self.transport, self.localAddress, self.localPort, self.remoteAddress, self.remotePort, connection=self )
		Dispatcher.notify( newEvent )
Пример #5
0
	def inInitial_onBind( self, event ):
		self.state = self.STATE_BINDING

		self.socket = socket( AF_INET, SOCK_DGRAM )
		self.socket.setblocking( 0 )
		self.socket.bind( ( self.localAddress, self.localPort ) )
		self.socket.setsockopt( SOL_SOCKET, SO_REUSEADDR, 1 )

		event.binding = self
		self.state = self.STATE_BOUND
		Dispatcher.notify( StateEvent( State.EVENT_STATE_CHANGE, self.state, self.STATE_INITIAL ) )
Пример #6
0
	def inBound_onRead( self, event ):
		if self.socket:
			try:
				buffer, source = self.socket.recvfrom( self.query( 'network.maxmessage' ), self.query( 'network.recvfromflags' ) )
				self.log.info( 'recvfrom:\n%s(%s:%s %s:%s)\n%s.' % ( str(self.transport), str(self.localAddress), str(self.localPort), str(source[0]), str(source[1]), str(buffer) ) )

				newEvent = NetEvent( NetEvent.EVENT_RX_PACKET, self.transport, self.localAddress, self.localPort, remoteAddress=source[0], remotePort=source[1], packet=str(buffer) )
				Dispatcher.notify( newEvent )
			except error, e:
				newEvent = NetError( e[0], e[1], self.transport, self.localAddress, self.localPort )
				Dispatcher.notify( newEvent )
Пример #7
0
	def inConnected_onRead( self, event ):
		if self.socket:
			buffer = self.socket.recv( self.query( 'network.maxmessage' ), self.query( 'network.recvflags' ) )
			if buffer:
				self.log.info( 'recv:\n%s(%s:%s %s:%s)\n%s.' % ( str(self.transport), str(self.localAddress), str(self.localPort), str(self.remoteAddress), str(self.remotePort), str(buffer) ) )

				newEvent = NetEvent( NetEvent.EVENT_RX_PACKET, self.transport, self.localAddress, self.localPort, self.remoteAddress, self.remotePort, packet=str(buffer), connection=self )
				Dispatcher.notify( newEvent )
			else:
				# Remote disconnect.
				self.close( event )
Пример #8
0
	def inInitial_onBind( self, event ):
		self.state = self.STATE_BINDING
		#Dispatcher.notify( StateEvent( State.EVENT_STATE_CHANGE, self.state, self.STATE_INITIAL ) )

		self.socket = socket( AF_INET, SOCK_STREAM )
		self.socket.setblocking( 0 )
		self.socket.bind( ( self.localAddress, self.localPort ) )
		self.socket.setsockopt( SOL_SOCKET, SO_REUSEADDR, 1 )
		self.socket.listen( self.query( 'network.maxconnections' ) )

		event.binding = self
		self.state = self.STATE_BOUND
		Dispatcher.notify( StateEvent( State.EVENT_STATE_CHANGE, self.state, self.STATE_INITIAL ) )
Пример #9
0
	def inBound_onQueue( self, event ):
		self.__queue.put( event )

		self.remoteAddress = event.remoteAddress
		self.remotePort = event.remotePort
#FIXME:		self.socket.settimeout( self.query( 'network.connecttimeout' ) )
		try:
			self.socket.connect( (event.remoteAddress, event.remotePort) )

			self.state = self.STATE_CONNECTING

			return True
		except error, e:
			newEvent = NetError( e[0], e[1], self.transport, self.localAddress, self.localPort, connection=self )
			Dispatcher.notify( newEvent )

			self.close( event )

			return False
Пример #10
0
	def onNetError( self, event ):
		Dispatcher.notify( event )
Пример #11
0
	def onDisconnected( self, event ):
		Dispatcher.notify( event )
Пример #12
0
	def onRxPacket( self, event ):
		Dispatcher.notify( event )
Пример #13
0
	def inBound_onError( self, event ):
		error = self.socket.getsockopt( SOL_SOCKET, SO_ERROR )
		Dispatcher.notify( NetError( error, None, self.transport, self.localAddress, self.localPort ) )
Пример #14
0
	def inConnected_onError( self, event ):
		error = self.socket.getsockopt( SOL_SOCKET, SO_ERROR )
		Dispatcher.notify( NetError( error, None, self.transport, self.localAddress, self.localPort, self.remoteAddress, self.remotePort, connection=self ) )

		self.close( event )
Пример #15
0
	def inBound_onDisconnected( self, event ):
		Dispatcher.notify( event )