MCPcopy Index your code
hub / github.com/Bitmessage/PyBitmessage / sendBytes

Method sendBytes

src/class_sendDataThread.py:76–114  ·  view source on GitHub ↗
(self, data = "")

Source from the content-addressed store, hash-verified

74 self.versionSent = 1
75
76 def sendBytes(self, data = ""):
77 self.buffer += data
78 if len(self.buffer) < throttle.SendThrottle().chunkSize and self.sendDataThreadQueue.qsize() > 1:
79 return True
80
81 while self.buffer and state.shutdown == 0:
82 isSSL = False
83 try:
84 if ((self.services & protocol.NODE_SSL == protocol.NODE_SSL) and
85 self.connectionIsOrWasFullyEstablished and
86 protocol.haveSSL(not self.initiatedConnection)):
87 isSSL = True
88 amountSent = self.sslSock.send(self.buffer[:throttle.SendThrottle().chunkSize])
89 else:
90 amountSent = self.sock.send(self.buffer[:throttle.SendThrottle().chunkSize])
91 except socket.timeout:
92 continue
93 except SSLError as e:
94 if e.errno == SSL_ERROR_WANT_WRITE:
95 select.select([], [self.sslSock], [], 10)
96 logger.debug('sock.recv retriable SSL error')
97 continue
98 logger.debug('Connection error (SSL)')
99 return False
100 except socket.error as e:
101 if e.errno in (errno.EAGAIN, errno.EWOULDBLOCK) or \
102 (sys.platform.startswith('win') and \
103 e.errno == errno.WSAEWOULDBLOCK):
104 select.select([], [self.sslSock if isSSL else self.sock], [], 10)
105 logger.debug('sock.recv retriable error')
106 continue
107 if e.errno in (errno.EPIPE, errno.ECONNRESET, errno.EHOSTUNREACH, errno.ETIMEDOUT, errno.ECONNREFUSED):
108 logger.debug('Connection error: %s', str(e))
109 return False
110 raise
111 throttle.SendThrottle().wait(amountSent)
112 self.lastTimeISentData = int(time.time())
113 self.buffer = self.buffer[amountSent:]
114 return True
115
116 def run(self):
117 logger.debug('sendDataThread starting. ID: ' + str(id(self)) + '. Number of queues in sendDataQueues: ' + str(len(state.sendDataQueues)))

Callers 2

sendVersionMessageMethod · 0.95
runMethod · 0.95

Calls 2

waitMethod · 0.80
sendMethod · 0.45

Tested by

no test coverage detected