mirror of
https://github.com/SantaSpeen/winConnect.git
synced 2026-10-27 14:40:24 +00:00
[+] Now self._header_size auto calculated
This commit is contained in:
1 parent
9931003c5e
commit
4ad22726ae
2 files changed
+19
-8
No files matched your search
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
from winConnect import WinConnectDaemon
|
from winConnect import WinConnectDaemon
|
||||||
|
|
||||||
connector = WinConnectDaemon('test')
|
connector = WinConnectDaemon('test')
|
||||||
connector.set_header_settings(">L", 32)
|
connector.set_header_settings(">L")
|
||||||
|
|
||||||
for data in connector.listen():
|
for data in connector.listen():
|
||||||
print(data)
|
print(data)
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ class WinConnectErrors(Enum):
|
|||||||
|
|
||||||
class WinConnectBase:
|
class WinConnectBase:
|
||||||
init_encoding = 'utf-8'
|
init_encoding = 'utf-8'
|
||||||
init_header_format = ">L" # Format for reading header (big-endian, unsigned long)
|
init_header_format = ">L" # Format for reading header (big-endian, unsigned long; 4 bytes)
|
||||||
init_header_size = 32 # bits; Size of header
|
|
||||||
|
|
||||||
default_encoding = 'utf-8'
|
default_encoding = 'utf-8'
|
||||||
|
|
||||||
@@ -44,8 +43,9 @@ class WinConnectBase:
|
|||||||
self._pipe = None
|
self._pipe = None
|
||||||
self._opened = False
|
self._opened = False
|
||||||
|
|
||||||
self.header_format = self.init_header_format
|
self._header_format = self.init_header_format
|
||||||
self.header_size = self.init_header_size // 8 # bytes
|
self._header_size = struct.calcsize(self._header_format) # bytes
|
||||||
|
self._calc_body_max_size()
|
||||||
|
|
||||||
self._client_connected = False
|
self._client_connected = False
|
||||||
self._inited = False
|
self._inited = False
|
||||||
@@ -55,9 +55,20 @@ class WinConnectBase:
|
|||||||
|
|
||||||
self._lock = threading.Lock()
|
self._lock = threading.Lock()
|
||||||
|
|
||||||
def set_header_settings(self, format, size):
|
def _calc_body_max_size(self):
|
||||||
self.header_format = format
|
# Max size of body: 2 ** (8 * header_size) - 1 - header_size - 1
|
||||||
self.header_size = size // 8
|
# - header_size; X byte for header_size
|
||||||
|
self._body_max_size = SimpleConvertor.struct_range(self._header_format)[1] - self._header_size
|
||||||
|
|
||||||
|
def set_header_settings(self, fmt):
|
||||||
|
if self._client_connected:
|
||||||
|
raise WinConnectSessionAlreadyActiveError("Session is active. Can't change header settings")
|
||||||
|
try:
|
||||||
|
self._header_format = fmt
|
||||||
|
self._header_size = struct.calcsize(fmt)
|
||||||
|
self._calc_body_max_size()
|
||||||
|
except struct.error as e:
|
||||||
|
raise WinConnectStructFormatError(f"Error in struct format. ({e})")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def pipe_name(self):
|
def pipe_name(self):
|
||||||
|
|||||||
Reference in new issue
Block a user