Changeset 459
- Timestamp:
- 02/27/03 15:35:33 (6 years ago)
- Files:
-
- trunk/RBFoundation/RBFoundation/XMLNode.py (modified) (2 diffs)
- trunk/RBMessaging/RBMessaging/Client (added)
- trunk/RBMessaging/RBMessaging/Client/Connection.py (added)
- trunk/RBMessaging/RBMessaging/Client/Handlers (added)
- trunk/RBMessaging/RBMessaging/Client/Handlers/Authentication.py (added)
- trunk/RBMessaging/RBMessaging/Client/Handlers/Error.py (added)
- trunk/RBMessaging/RBMessaging/Client/Handlers/Message.py (added)
- trunk/RBMessaging/RBMessaging/Client/Handlers/__init__.py (added)
- trunk/RBMessaging/RBMessaging/Client/__init__.py (added)
- trunk/RBMessaging/RBMessaging/Host (added)
- trunk/RBMessaging/RBMessaging/Host/Connection.py (added)
- trunk/RBMessaging/RBMessaging/Host/Handlers (added)
- trunk/RBMessaging/RBMessaging/Host/Handlers/Authentication.py (added)
- trunk/RBMessaging/RBMessaging/Host/Handlers/Error.py (added)
- trunk/RBMessaging/RBMessaging/Host/Handlers/Message.py (added)
- trunk/RBMessaging/RBMessaging/Host/Handlers/__init__.py (added)
- trunk/RBMessaging/RBMessaging/Host/__init__.py (added)
- trunk/RBMessaging/RBMessaging/Model.py (modified) (4 diffs)
- trunk/RBMessaging/RBMessaging/Packet (added)
- trunk/RBMessaging/RBMessaging/Packet/__init__.py (added)
- trunk/RBMessaging/RBMessaging/Router (added)
- trunk/RBMessaging/RBMessaging/Router/SimpleRouter.py (added)
- trunk/RBMessaging/RBMessaging/Router/__init__.py (added)
- trunk/RBTelepathy/RBTelepathy/Connection.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/XMLNode.py
r453 r459 106 106 def __init__(self, node=None, namespace=None, prefix='', default_namespaces=None, attrlookup=None): 107 107 self.enableattrlookup(attrlookup) 108 if default_namespaces: self.namespaces = default_namespaces 109 else: self.namespaces = self.default_namespaces.copy() 108 if default_namespaces is not None: 109 self.namespaces = default_namespaces 110 else: 111 self.namespaces = self.default_namespaces.copy() 110 112 self.elems = self.default_elements[:] 111 113 self.attrs = self.default_attributes.copy() 112 114 self.node = node or self.default_node or self.__class__.__name__ 113 self.namespace = (prefix, namespace) 115 if namespace is None: 116 self.namespace = (prefix, ) 117 else: 118 self.namespace = (prefix, namespace) 114 119 self.softspace = 0 # for compatibility with file-like objects 115 120 … … 373 378 #~ namespace property ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 374 379 375 def _get namespace(self):380 def _get_namespace(self): 376 381 """Returns the namespace of the xmlnode""" 377 382 return self.namespaces.xmlns(self.prefix or '') 378 def _set namespace(self, namespace):383 def _set_namespace(self, value): 379 384 """Sets the namespace of the xmlnode""" 380 if isinstance( namespace, tuple):381 if len( namespace) == 1:382 self.prefix, namespace = namespace[0], ''385 if isinstance(value, tuple): 386 if len(value) == 1: 387 self.prefix, namespace = value[0] or '', None 383 388 else: 384 self.prefix, namespace = namespace 385 self.prefix = self.prefix or '' 389 self.prefix, namespace = value[0] or '', value[1] 390 else: 391 self.prefix, namespace = self.prefix or '', value 386 392 if namespace is not None: 387 393 self.namespaces.setxmlns(self.prefix, namespace) 388 def _del namespace(self):394 def _del_namespace(self): 389 395 """Removes the namespace of the xmlnode""" 390 396 try: del self.namespaces[self.prefix or ''] 391 397 except KeyError: pass 392 namespace = property(_get namespace, _setnamespace, _delnamespace)398 namespace = property(_get_namespace, _set_namespace, _del_namespace) 393 399 394 400 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ trunk/RBMessaging/RBMessaging/Model.py
r415 r459 25 25 26 26 import weakref 27 import socket 28 import logging 29 import logging.handlers 27 30 28 import Connection29 31 from RBFoundation import SmartSelect 32 from RBTelepathy import SocketConnections 33 34 from RBMessaging.Packet import RBNamespace 35 36 from Router import SimpleRouter 37 import Client.Connection 38 import Host.Connection 30 39 31 40 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 33 42 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 34 43 35 class M essagingModel(object):44 class Model(object): 36 45 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 37 46 #~ Public Methods … … 41 50 self.Connections = {} 42 51 self.Routers = {} 52 self.Routers[(RBNamespace, 'message')] = SimpleRouter.AuthorityDictRouter() 43 53 44 54 def GetRouter(self, key): 45 try: 46 return weakref.proxy(self.Routers[key]) 47 except KeyError: 48 return None 55 try: return weakref.proxy(self.Routers[key]) 56 except KeyError: return None 49 57 50 58 def Process(self, timeout): 51 59 return self.SmartSelectCollection.Process(timeout) 60 61 def Connect(self, host='localhost'): 62 host = host or socket.gethostname() 63 conn = Client.Connection.Connection.BuildFromInfo(self, host) 64 logging.info('Connecting to %r', host) 65 return conn 66 67 def Serve(self, host='localhost'): 68 host = host or socket.gethostname() 69 conn = SocketConnections.ServerConnection.BuildFromInfo(self, host) 70 logging.info('Serving Connections on %r', host) 71 conn.ConnectionBuilder = Host.Connection.Connection.BuildFromSocket 52 72 53 73 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 66 86 SmartSelectCollection = property(_GetSmartSelectCollection, None, _DelSmartSelectCollection) 67 87 88 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 89 90 if __name__ == '__main__': 91 logging.basicConfig() 92 logging.root.setLevel(logging.INFO) 93 #logging.root.setLevel(logging.DEBUG) 94 95 try: 96 model = Model() 97 model.Serve(None) 98 send = model.Connect(None).Login('send') 99 while not getattr(send, 'loginaddr', None): 100 model.Process(0.1) 101 recv = model.Connect(None).Login('recv') 102 while not getattr(recv, 'loginaddr', None): 103 model.Process(0.1) 104 send.Message('recv', 'Some text for recv!') 105 send.Message('recv', 'Some data for recv!', '\xde\xad\xbe\xef') 106 while 1: 107 model.Process(0.1) 108 except KeyboardInterrupt: 109 pass 110 trunk/RBTelepathy/RBTelepathy/Connection.py
r455 r459 89 89 for key in handler.RoutedPacketHandlers: 90 90 self.RoutedPacketHandlers[key] = handler 91 return handler 91 92 except ErrorTypes.RBTelepathyError, e: 92 93 raise
