本文整理汇总了Python中connection.Connection.fileno方法的典型用法代码示例。如果您正苦于以下问题:Python Connection.fileno方法的具体用法?Python Connection.fileno怎么用?Python Connection.fileno使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类connection.Connection
的用法示例。
在下文中一共展示了Connection.fileno方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __onNewConnection
# 需要导入模块: from connection import Connection [as 别名]
# 或者: from connection.Connection import fileno [as 别名]
def __onNewConnection(self, localDescr, event):
if event & POLL_EVENT_TYPE.READ:
try:
sock, addr = self.__socket.accept()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, self.__conf.sendBufferSize)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, self.__conf.recvBufferSize)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
sock.setblocking(0)
conn = Connection(socket=sock, timeout=self.__conf.connectionTimeout)
descr = conn.fileno()
self.__unknownConnections[descr] = conn
self.__poller.subscribe(descr,
self.__processUnknownConnections,
POLL_EVENT_TYPE.READ | POLL_EVENT_TYPE.ERROR)
except socket.error as e:
if e.errno != socket.errno.EAGAIN:
self.__isInitialized = False
LOG_WARNING('Error in main socket:' + str(e))
if event & POLL_EVENT_TYPE.ERROR:
self.__isInitialized = False
LOG_WARNING('Error in main socket')
示例2: Node
# 需要导入模块: from connection import Connection [as 别名]
# 或者: from connection.Connection import fileno [as 别名]
class Node(object):
def __init__(self, syncObj, nodeAddr):
self.__syncObj = weakref.ref(syncObj)
self.__nodeAddr = nodeAddr
self.__ip = syncObj._getResolver().resolve(nodeAddr.split(':')[0])
self.__port = int(nodeAddr.split(':')[1])
self.__poller = syncObj._getPoller()
self.__conn = Connection(socket=None, timeout=syncObj._getConf().connectionTimeout)
self.__shouldConnect = syncObj._getSelfNodeAddr() > nodeAddr
self.__lastConnectAttemptTime = 0
self.__lastPingTime = 0
self.__status = NODE_STATUS.DISCONNECTED
def __del__(self):
self.__conn = None
self.__poller = None
def onPartnerConnected(self, conn):
self.__conn = conn
self.__status = NODE_STATUS.CONNECTED
self.__poller.subscribe(self.__conn.fileno(),
self.__processConnection,
POLL_EVENT_TYPE.READ | POLL_EVENT_TYPE.WRITE | POLL_EVENT_TYPE.ERROR)
def getStatus(self):
return self.__status
def isConnected(self):
return self.__status == NODE_STATUS.CONNECTED
def getAddress(self):
return self.__nodeAddr
def getSendBufferSize(self):
return self.__conn.getSendBufferSize()
def send(self, message):
if self.__status != NODE_STATUS.CONNECTED:
return False
self.__conn.send(message)
if self.__conn.isDisconnected():
self.__status = NODE_STATUS.DISCONNECTED
self.__poller.unsubscribe(self.__conn.fileno())
self.__conn.close()
return False
return True
def connectIfRequired(self):
if not self.__shouldConnect:
return
if self.__status != NODE_STATUS.DISCONNECTED:
return
if time.time() - self.__lastConnectAttemptTime < self.__syncObj()._getConf().connectionRetryTime:
return
self.__status = NODE_STATUS.CONNECTING
self.__lastConnectAttemptTime = time.time()
if not self.__conn.connect(self.__ip, self.__port):
self.__status = NODE_STATUS.DISCONNECTED
return
self.__poller.subscribe(self.__conn.fileno(),
self.__processConnection,
POLL_EVENT_TYPE.READ | POLL_EVENT_TYPE.WRITE | POLL_EVENT_TYPE.ERROR)
def __processConnection(self, descr, eventType):
if descr != self.__conn.fileno():
self.__poller.unsubscribe(descr)
return
isError = False
if eventType & POLL_EVENT_TYPE.ERROR:
isError = True
if eventType & POLL_EVENT_TYPE.READ or eventType & POLL_EVENT_TYPE.WRITE:
if self.__conn.socket().getsockopt(socket.SOL_SOCKET, socket.SO_ERROR):
isError = True
else:
if self.__status == NODE_STATUS.CONNECTING:
self.__conn.send(self.__syncObj()._getSelfNodeAddr())
self.__status = NODE_STATUS.CONNECTED
if isError or self.__conn.isDisconnected():
self.__status = NODE_STATUS.DISCONNECTED
self.__conn.close()
self.__poller.unsubscribe(descr)
return
if eventType & POLL_EVENT_TYPE.WRITE:
if self.__status == NODE_STATUS.CONNECTING:
self.__conn.send(self.__syncObj()._getSelfNodeAddr())
self.__status = NODE_STATUS.CONNECTED
self.__conn.trySendBuffer()
event = POLL_EVENT_TYPE.READ | POLL_EVENT_TYPE.ERROR
if self.__conn.getSendBufferSize() > 0:
event |= POLL_EVENT_TYPE.WRITE
if not self.__conn.isDisconnected():
self.__poller.subscribe(descr, self.__processConnection, event)
if eventType & POLL_EVENT_TYPE.READ:
if self.__conn.read():
#.........这里部分代码省略.........