MCPcopy Create free account
hub / github.com/aitjcize/Overlord / BufferedSocket

Class BufferedSocket

py/ghost.py:81–119  ·  view source on GitHub ↗

A buffered socket that supports unrecv. Allow putting back data back to the socket for the next recv() call.

Source from the content-addressed store, hash-verified

79
80
81class BufferedSocket:
82
83 """A buffered socket that supports unrecv.
84
85 Allow putting back data back to the socket for the next recv() call.
86 """
87
88 def __init__(self, sock):
89 self.sock = sock
90 self._buf = b''
91
92 def fileno(self):
93 return self.sock.fileno()
94
95 def Recv(self, bufsize, flags=0):
96 if self._buf:
97 if len(self._buf) >= bufsize:
98 ret = self._buf[:bufsize]
99 self._buf = self._buf[bufsize:]
100 return ret
101 ret = self._buf
102 self._buf = b''
103 return ret + self.sock.recv(bufsize - len(ret), flags)
104 return self.sock.recv(bufsize, flags)
105
106 def UnRecv(self, buf):
107 self._buf = buf + self._buf
108
109 def Send(self, *args, **kwargs):
110 return self.sock.send(*args, **kwargs)
111
112 def RecvBuf(self):
113 """Only recive from buffer."""
114 ret = self._buf
115 self._buf = b''
116 return ret
117
118 def Close(self):
119 self.sock.close()
120
121
122class TLSSettings:

Callers 1

RegisterMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected