coding standards

This commit is contained in:
Yann Leboulanger 2008-03-21 17:17:12 +00:00
parent 92690da36b
commit 45211c43f5
1 changed files with 87 additions and 81 deletions

View File

@ -36,8 +36,8 @@ log = logging.getLogger('gajim.c.z.client_zeroconf')
from common.zeroconf import roster_zeroconf from common.zeroconf import roster_zeroconf
MAX_BUFF_LEN = 65536 MAX_BUFF_LEN = 65536
DATA_RECEIVED='DATA RECEIVED' DATA_RECEIVED = 'DATA RECEIVED'
DATA_SENT='DATA SENT' DATA_SENT = 'DATA SENT'
TYPE_SERVER, TYPE_CLIENT = range(2) TYPE_SERVER, TYPE_CLIENT = range(2)
# wait XX sec to establish a connection # wait XX sec to establish a connection
@ -112,7 +112,8 @@ class ZeroconfListener(IdleObject):
return _sock return _sock
class P2PClient(IdleObject): class P2PClient(IdleObject):
def __init__(self, _sock, host, port, conn_holder, stanzaqueue = [], to = None, on_ok=None, on_not_ok=None): def __init__(self, _sock, host, port, conn_holder, stanzaqueue=[], to=None,
on_ok=None, on_not_ok=None):
self._owner = self self._owner = self
self.Namespace = 'jabber:client' self.Namespace = 'jabber:client'
self.defaultNamespace = self.Namespace self.defaultNamespace = self.Namespace
@ -141,7 +142,8 @@ class P2PClient(IdleObject):
else: else:
self.sock_type = TYPE_CLIENT self.sock_type = TYPE_CLIENT
self.fd = -1 self.fd = -1
conn = P2PConnection('', _sock, host, port, self._caller, self.on_connect, self) conn = P2PConnection('', _sock, host, port, self._caller, self.on_connect,
self)
if not self.conn_holder: if not self.conn_holder:
# An error occured, disconnect() has been called # An error occured, disconnect() has been called
if on_not_ok: if on_not_ok:
@ -159,11 +161,11 @@ class P2PClient(IdleObject):
on_not_ok('Connection to host could not be established.') on_not_ok('Connection to host could not be established.')
return return
if self.conn_holder.number_of_awaiting_messages.has_key(self.fd): if self.conn_holder.number_of_awaiting_messages.has_key(self.fd):
self.conn_holder.number_of_awaiting_messages[self.fd]+=1 self.conn_holder.number_of_awaiting_messages[self.fd] += 1
else: else:
self.conn_holder.number_of_awaiting_messages[self.fd]=1 self.conn_holder.number_of_awaiting_messages[self.fd] = 1
def add_stanza(self, stanza, is_message = False): def add_stanza(self, stanza, is_message=False):
if self.Connection: if self.Connection:
if self.Connection.state == -1: if self.Connection.state == -1:
return False return False
@ -173,14 +175,14 @@ class P2PClient(IdleObject):
if is_message: if is_message:
if self.conn_holder.number_of_awaiting_messages.has_key(self.fd): if self.conn_holder.number_of_awaiting_messages.has_key(self.fd):
self.conn_holder.number_of_awaiting_messages[self.fd]+=1 self.conn_holder.number_of_awaiting_messages[self.fd] += 1
else: else:
self.conn_holder.number_of_awaiting_messages[self.fd] = 1 self.conn_holder.number_of_awaiting_messages[self.fd] = 1
return True return True
def on_message_sent(self, connection_id): def on_message_sent(self, connection_id):
self.conn_holder.number_of_awaiting_messages[connection_id]-=1 self.conn_holder.number_of_awaiting_messages[connection_id] -= 1
def on_connect(self, conn): def on_connect(self, conn):
self.Connection = conn self.Connection = conn
@ -210,11 +212,13 @@ class P2PClient(IdleObject):
self.Dispatcher._metastream.setAttr('from', self.conn_holder.zeroconf.name) self.Dispatcher._metastream.setAttr('from', self.conn_holder.zeroconf.name)
if self.to: if self.to:
self.Dispatcher._metastream.setAttr('to', self.to) self.Dispatcher._metastream.setAttr('to', self.to)
self.Dispatcher.send("<?xml version='1.0'?>%s>" % str(self.Dispatcher._metastream)[:-2]) self.Dispatcher.send("<?xml version='1.0'?>%s>" % str(
self.Dispatcher._metastream)[:-2])
def _check_stream_start(self, ns, tag, attrs): def _check_stream_start(self, ns, tag, attrs):
if ns<>NS_STREAMS or tag<>'stream': if ns<>NS_STREAMS or tag<>'stream':
self.Connection.DEBUG('Incorrect stream start: (%s,%s).Terminating! ' % (tag, ns), 'error') self.Connection.DEBUG('Incorrect stream start: (%s,%s).Terminating! ' \
% (tag, ns), 'error')
self.Connection.disconnect() self.Connection.disconnect()
if self.on_not_ok: if self.on_not_ok:
self.on_not_ok('Connection to host could not be established: Incorrect answer from server.') self.on_not_ok('Connection to host could not be established: Incorrect answer from server.')
@ -235,7 +239,6 @@ class P2PClient(IdleObject):
stanza, is_message = self.stanzaqueue.pop(0) stanza, is_message = self.stanzaqueue.pop(0)
self.send(stanza, is_message) self.send(stanza, is_message)
def on_disconnect(self): def on_disconnect(self):
if self.conn_holder: if self.conn_holder:
if self.conn_holder.number_of_awaiting_messages.has_key(self.fd): if self.conn_holder.number_of_awaiting_messages.has_key(self.fd):
@ -271,7 +274,8 @@ class P2PClient(IdleObject):
return True return True
def _register_handlers(self): def _register_handlers(self):
self.RegisterHandler('message', lambda conn, data:self._caller._messageCB(self.Server, conn, data)) self.RegisterHandler('message', lambda conn, data:self._caller._messageCB(
self.Server, conn, data))
self.RegisterHandler('iq', self._caller._siSetCB, 'set', self.RegisterHandler('iq', self._caller._siSetCB, 'set',
common.xmpp.NS_SI) common.xmpp.NS_SI)
self.RegisterHandler('iq', self._caller._siErrorCB, 'error', self.RegisterHandler('iq', self._caller._siErrorCB, 'error',
@ -286,11 +290,12 @@ class P2PClient(IdleObject):
common.xmpp.NS_BYTESTREAM) common.xmpp.NS_BYTESTREAM)
class P2PConnection(IdleObject, PlugIn): class P2PConnection(IdleObject, PlugIn):
def __init__(self, sock_hash, _sock, host = None, port = None, caller = None, on_connect = None, client = None): def __init__(self, sock_hash, _sock, host=None, port=None, caller=None,
on_connect=None, client=None):
IdleObject.__init__(self) IdleObject.__init__(self)
self._owner = client self._owner = client
PlugIn.__init__(self) PlugIn.__init__(self)
self.DBG_LINE='socket' self.DBG_LINE = 'socket'
self.sendqueue = [] self.sendqueue = []
self.sendbuff = None self.sendbuff = None
self.buff_is_message = False self.buff_is_message = False
@ -301,7 +306,7 @@ class P2PConnection(IdleObject, PlugIn):
self.client = client self.client = client
self.writable = False self.writable = False
self.readable = False self.readable = False
self._exported_methods=[self.send, self.disconnect, self.onreceive] self._exported_methods = [self.send, self.disconnect, self.onreceive]
self.on_receive = None self.on_receive = None
if _sock: if _sock:
self._sock = _sock self._sock = _sock
@ -312,9 +317,11 @@ class P2PConnection(IdleObject, PlugIn):
else: else:
self.state = 0 self.state = 0
try: try:
self.ais = socket.getaddrinfo(host, port, socket.AF_UNSPEC, socket.SOCK_STREAM) self.ais = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
socket.SOCK_STREAM)
except socket.gaierror, e: except socket.gaierror, e:
log.info("Lookup failure for %s: %s[%s]", host, e[1], repr(e[0]), exc_info=True) log.info('Lookup failure for %s: %s[%s]', host, e[1], repr(e[0]),
exc_info=True)
else: else:
self.connect_to_next_ip() self.connect_to_next_ip()
@ -329,10 +336,10 @@ class P2PConnection(IdleObject, PlugIn):
try: try:
self._sock = socket.socket(*ai[:3]) self._sock = socket.socket(*ai[:3])
self._sock.setblocking(False) self._sock.setblocking(False)
self._server=ai[4] self._server = ai[4]
except: except:
if sys.exc_value[0] != errno.EINPROGRESS: if sys.exc_value[0] != errno.EINPROGRESS:
#for all errors, we try other addresses # for all errors, we try other addresses
self.connect_to_next_ip() self.connect_to_next_ip()
return return
self.fd = self._sock.fileno() self.fd = self._sock.fileno()
@ -351,8 +358,8 @@ class P2PConnection(IdleObject, PlugIn):
return True return True
def plugout(self): def plugout(self):
''' Disconnect from the remote server and unregister self.disconnected method from '''Disconnect from the remote server and unregister self.disconnected method from
the owner's dispatcher. ''' the owner's dispatcher.'''
self.disconnect() self.disconnect()
self._owner = None self._owner = None
@ -368,7 +375,7 @@ class P2PConnection(IdleObject, PlugIn):
if not recv_handler(None) and _tmp == self.on_receive: if not recv_handler(None) and _tmp == self.on_receive:
self.on_receive = recv_handler self.on_receive = recv_handler
def send(self, packet, is_message = False, now = False): def send(self, packet, is_message=False, now=False):
'''Append stanza to the queue of messages to be send if now is '''Append stanza to the queue of messages to be send if now is
False, else send it instantly. False, else send it instantly.
If supplied data is unicode string, encode it to utf-8. If supplied data is unicode string, encode it to utf-8.
@ -393,7 +400,7 @@ class P2PConnection(IdleObject, PlugIn):
def read_timeout(self): def read_timeout(self):
if self.client.conn_holder.number_of_awaiting_messages.has_key(self.fd) \ if self.client.conn_holder.number_of_awaiting_messages.has_key(self.fd) \
and self.client.conn_holder.number_of_awaiting_messages[self.fd] > 0: and self.client.conn_holder.number_of_awaiting_messages[self.fd] > 0:
self.client._caller.dispatch('MSGERROR',[unicode(self.client.to), -1, \ self.client._caller.dispatch('MSGERROR',[unicode(self.client.to), -1,
_('Connection to host could not be established: Timeout while sending data.'), None, None]) _('Connection to host could not be established: Timeout while sending data.'), None, None])
self.client.conn_holder.number_of_awaiting_messages[self.fd] = 0 self.client.conn_holder.number_of_awaiting_messages[self.fd] = 0
self.pollend() self.pollend()
@ -419,7 +426,6 @@ class P2PConnection(IdleObject, PlugIn):
# we are connected # we are connected
self.on_connect(self) self.on_connect(self)
def pollout(self): def pollout(self):
if self.state == 0: if self.state == 0:
self.do_connect() self.do_connect()
@ -556,7 +562,6 @@ class P2PConnection(IdleObject, PlugIn):
self._owner.disconnected() self._owner.disconnected()
self.sent_data = None self.sent_data = None
class ClientZeroconf: class ClientZeroconf:
def __init__(self, caller): def __init__(self, caller):
self.caller = caller self.caller = caller
@ -606,11 +611,11 @@ class ClientZeroconf:
self.zeroconf.username = self.caller.username self.zeroconf.username = self.caller.username
return self.announce() return self.announce()
def zeroconf_init(self, show, msg): def zeroconf_init(self, show, msg):
self.zeroconf = zeroconf.Zeroconf(self.caller._on_new_service, self.zeroconf = zeroconf.Zeroconf(self.caller._on_new_service,
self.caller._on_remove_service, self.caller._on_name_conflictCB, self.caller._on_remove_service, self.caller._on_name_conflictCB,
self.caller._on_disconnected, self.caller._on_error, self.caller.username, self.caller.host, self.port) self.caller._on_disconnected, self.caller._on_error,
self.caller.username, self.caller.host, self.port)
self.zeroconf.txt['msg'] = msg self.zeroconf.txt['msg'] = msg
self.zeroconf.txt['status'] = show self.zeroconf.txt['status'] = show
self.zeroconf.txt['1st'] = self.caller.first self.zeroconf.txt['1st'] = self.caller.first
@ -639,7 +644,7 @@ class ClientZeroconf:
connection.force_disconnect() connection.force_disconnect()
def add_connection(self, connection, ip, port, recipient): def add_connection(self, connection, ip, port, recipient):
sock_hash = connection.sock_hash sock_hash=connection.sock_hash
if sock_hash not in self.connections: if sock_hash not in self.connections:
self.connections[sock_hash] = connection self.connections[sock_hash] = connection
self.ip_to_hash[ip] = sock_hash self.ip_to_hash[ip] = sock_hash
@ -675,7 +680,7 @@ class ClientZeroconf:
return self.roster.getRoster() return self.roster.getRoster()
return {} return {}
def send(self, stanza, is_message = False, now = False, on_ok=None, def send(self, stanza, is_message=False, now=False, on_ok=None,
on_not_ok=None): on_not_ok=None):
stanza.setFrom(self.roster.zeroconf.name) stanza.setFrom(self.roster.zeroconf.name)
to = stanza.getTo() to = stanza.getTo()
@ -704,4 +709,5 @@ class ClientZeroconf:
return 0 return 0
# otherwise open new connection # otherwise open new connection
P2PClient(None, item['address'], item['port'], self, [(stanza, is_message)], to, on_ok=on_ok, on_not_ok=on_not_ok) P2PClient(None, item['address'], item['port'], self,
[(stanza, is_message)], to, on_ok=on_ok, on_not_ok=on_not_ok)