socket.d 2.4.10.5__tar.gz → 2.4.10.7__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/PKG-INFO +1 -1
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/setup.py +1 -1
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socket.d.egg-info/PKG-INFO +1 -1
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socket.d.egg-info/SOURCES.txt +2 -2
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/broker/BrokerListenerBase.py +5 -5
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/cluster/ClusterClientSession.py +2 -2
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/cluster/LoadBalancer.py +2 -2
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/HandshakeDefault.py +4 -4
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/IdGenerator.py +2 -2
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/entity/FileEntity.py +0 -1
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/fragment/FragmentAggregatorDefault.py +2 -2
- socket.d-2.4.10.7/socketd/transport/core/listener/EventListener.py +57 -0
- socket.d-2.4.10.5/socketd/transport/utils/AsyncUtil.py → socket.d-2.4.10.7/socketd/transport/utils/AsyncUtils.py +4 -4
- socket.d-2.4.10.5/socketd/transport/utils/StrUtil.py → socket.d-2.4.10.7/socketd/transport/utils/StrUtils.py +3 -3
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_aio_tcp/TcpAioClientConnector.py +2 -2
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/WsAioClientConnector.py +2 -2
- socket.d-2.4.10.5/socketd/transport/core/listener/EventListener.py +0 -57
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/README.md +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/setup.cfg +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socket.d.egg-info/dependency_links.txt +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socket.d.egg-info/requires.txt +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socket.d.egg-info/top_level.txt +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socket.d.egg-info/zip-safe +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/SocketD.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/broker/BrokerFragmentHandler.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/broker/BrokerListener.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/broker/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/cluster/ClusterClient.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/cluster/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/exception/SocketDExecption.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/exception/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/Client.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientBase.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientChannel.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientConfig.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientConfigHandler.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientConnectHandler.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientConnector.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientConnectorBase.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientHandshakeResult.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientHeartbeatHandler.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientProvider.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/ClientSession.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/client/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Asserts.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Channel.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/ChannelAssistant.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/ChannelInternal.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/ChannelSupporter.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Codec.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Config.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Costants.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Entity.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/EntityMetas.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Flags.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/FragmentAggregator.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/FragmentHandler.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Frame.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Frames.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Listener.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Message.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Processor.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/Session.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/codec/Buffer.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/codec/ByteBufferCodecReader.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/codec/ByteBufferCodecWriter.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/codec/CodecDefault.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/codec/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/entity/EntityDefault.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/entity/MessageBuilder.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/entity/MessageDefault.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/entity/StringEntity.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/entity/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/fragment/FragmentHandlerBase.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/fragment/FragmentHandlerDefault.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/fragment/FragmentHolder.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/fragment/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/impl/ChannelBase.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/impl/ChannelDefault.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/impl/ConfigBase.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/impl/LogConfig.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/impl/ProcessorDefault.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/impl/SessionBase.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/impl/SessionDefault.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/impl/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/listener/PathListener.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/listener/PathMapper.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/listener/PipelineListener.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/listener/SimpleListener.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/listener/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/server/Server.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/server/ServerBase.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/server/ServerConfig.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/server/ServerProvider.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/server/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/stream/RequestStream.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/stream/SendStream.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/stream/Stream.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/stream/StreamBase.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/stream/StreamManger.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/stream/StreamMangerDefault.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/stream/SubscribeStream.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/stream/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/utils/CompletableFuture.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/utils/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/utils/async_api/AtomicRefer.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/utils/async_api/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/utils/sync_api/AtomicRefer.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/utils/sync_api/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_aio_tcp/TCPAIOServer.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_aio_tcp/TCPStreamIO.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_aio_tcp/TcpAIOChannelAssistant.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_aio_tcp/TcpAioClient.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_aio_tcp/TcpAioProvider.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_aio_tcp/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/WsAioChannelAssistant.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/WsAioClient.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/WsAioProvider.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/WsAioServer.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/__init__.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/impl/AIOConnect.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/impl/AIOServe.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/impl/AIOWebSocketClientImpl.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/impl/AIOWebSocketServerImpl.py +0 -0
- {socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd_websocket/impl/__init__.py +0 -0
@@ -97,9 +97,9 @@ socketd/transport/stream/StreamManger.py
|
|
97
97
|
socketd/transport/stream/StreamMangerDefault.py
|
98
98
|
socketd/transport/stream/SubscribeStream.py
|
99
99
|
socketd/transport/stream/__init__.py
|
100
|
-
socketd/transport/utils/
|
100
|
+
socketd/transport/utils/AsyncUtils.py
|
101
101
|
socketd/transport/utils/CompletableFuture.py
|
102
|
-
socketd/transport/utils/
|
102
|
+
socketd/transport/utils/StrUtils.py
|
103
103
|
socketd/transport/utils/__init__.py
|
104
104
|
socketd/transport/utils/async_api/AtomicRefer.py
|
105
105
|
socketd/transport/utils/async_api/__init__.py
|
@@ -6,7 +6,7 @@ from socketd.transport.core.EntityMetas import EntityMetas
|
|
6
6
|
from socketd.transport.core.Listener import Listener
|
7
7
|
from socketd.transport.core.Message import Message
|
8
8
|
from socketd.transport.core.Session import Session
|
9
|
-
from socketd.transport.utils.
|
9
|
+
from socketd.transport.utils.StrUtils import StrUtils
|
10
10
|
|
11
11
|
|
12
12
|
# 经纪人监听器基类(实现玩家封闭管理)
|
@@ -41,7 +41,7 @@ class BrokerListenerBase(Listener, ABC):
|
|
41
41
|
|
42
42
|
# 获取任意一个玩家会话
|
43
43
|
def get_player_any(self, atName: str, requester: Session | None, message: Message | None) -> ClientSession | None:
|
44
|
-
if
|
44
|
+
if StrUtils.is_empty(atName):
|
45
45
|
return None
|
46
46
|
|
47
47
|
if atName.endswith("!"):
|
@@ -51,7 +51,7 @@ class BrokerListenerBase(Listener, ABC):
|
|
51
51
|
if message is not None:
|
52
52
|
x_hash = message.meta(EntityMetas.META_X_Hash)
|
53
53
|
|
54
|
-
if
|
54
|
+
if StrUtils.is_empty(x_hash):
|
55
55
|
if requester is None:
|
56
56
|
return LoadBalancer.get_any_by_poll(self.get_player_all(atName))
|
57
57
|
else: # 使用请求者 ip 分流
|
@@ -63,7 +63,7 @@ class BrokerListenerBase(Listener, ABC):
|
|
63
63
|
|
64
64
|
# 添加玩家会话
|
65
65
|
def add_player(self, name: str, session: Session):
|
66
|
-
if
|
66
|
+
if StrUtils.is_not_empty(name):
|
67
67
|
tmp: List[Session] = self.__playerSessions.get(name)
|
68
68
|
if tmp is None:
|
69
69
|
tmp = [session]
|
@@ -74,7 +74,7 @@ class BrokerListenerBase(Listener, ABC):
|
|
74
74
|
|
75
75
|
# 移除玩家会话
|
76
76
|
def remove_player(self, name: str, session: Session):
|
77
|
-
if
|
77
|
+
if StrUtils.is_not_empty(name):
|
78
78
|
tmp: list[Session] = self.get_player_all(name)
|
79
79
|
if tmp is not None:
|
80
80
|
tmp.remove(session)
|
@@ -5,14 +5,14 @@ from socketd.transport.core import Entity
|
|
5
5
|
from socketd.transport.stream.RequestStream import RequestStream
|
6
6
|
from socketd.transport.stream.SendStream import SendStream
|
7
7
|
from socketd.transport.stream.SubscribeStream import SubscribeStream
|
8
|
-
from socketd.transport.utils.
|
8
|
+
from socketd.transport.utils.StrUtils import StrUtils
|
9
9
|
|
10
10
|
|
11
11
|
class ClusterClientSession(ClientSession):
|
12
12
|
|
13
13
|
def __init__(self, _sessionSet):
|
14
14
|
self.__sessionSet: list[ClientSession] = _sessionSet
|
15
|
-
self.__sessionId =
|
15
|
+
self.__sessionId = StrUtils.guid()
|
16
16
|
|
17
17
|
def get_session_all(self) -> list[ClientSession]:
|
18
18
|
return self.__sessionSet
|
@@ -2,7 +2,7 @@ from threading import RLock
|
|
2
2
|
from typing import List
|
3
3
|
|
4
4
|
from socketd.transport.client.ClientSession import ClientSession
|
5
|
-
from socketd.transport.utils.
|
5
|
+
from socketd.transport.utils.StrUtils import StrUtils
|
6
6
|
|
7
7
|
|
8
8
|
class LoadBalancer:
|
@@ -29,7 +29,7 @@ class LoadBalancer:
|
|
29
29
|
# 根据 hash 获取任意一个
|
30
30
|
@staticmethod
|
31
31
|
def get_any_by_hash(coll: List[ClientSession], diversion: str) -> ClientSession:
|
32
|
-
return LoadBalancer.get_any(coll,
|
32
|
+
return LoadBalancer.get_any(coll, StrUtils.hash_code(diversion))
|
33
33
|
|
34
34
|
# 获取任意一个
|
35
35
|
@staticmethod
|
@@ -3,7 +3,7 @@ from urllib.parse import urlparse, parse_qsl
|
|
3
3
|
|
4
4
|
from socketd.transport.core.EntityMetas import EntityMetas
|
5
5
|
from socketd.transport.core.Message import Message, MessageInternal
|
6
|
-
from socketd.transport.utils.
|
6
|
+
from socketd.transport.utils.StrUtils import StrUtils
|
7
7
|
|
8
8
|
|
9
9
|
class Handshake:
|
@@ -33,7 +33,7 @@ class HandshakeInternal(Handshake):
|
|
33
33
|
class HandshakeDefault(HandshakeInternal):
|
34
34
|
def __init__(self, source: MessageInternal):
|
35
35
|
linkUrl = source.data_as_string()
|
36
|
-
if
|
36
|
+
if StrUtils.is_empty(linkUrl):
|
37
37
|
# 兼容旧版本(@deprecated 2.2)
|
38
38
|
linkUrl = source.event()
|
39
39
|
|
@@ -44,7 +44,7 @@ class HandshakeDefault(HandshakeInternal):
|
|
44
44
|
self._paramMap = self._parse_query_string(self._uri.query)
|
45
45
|
self._outMetaMap:dict[str,str] = {}
|
46
46
|
|
47
|
-
if
|
47
|
+
if StrUtils.is_empty(self._path):
|
48
48
|
self._path = "/" # tcp://1.1.1.1 无路径连接时,path 为空
|
49
49
|
|
50
50
|
self._paramMap.update(source.meta_map())
|
@@ -84,7 +84,7 @@ class HandshakeDefault(HandshakeInternal):
|
|
84
84
|
@staticmethod
|
85
85
|
def _parse_query_string(query_string):
|
86
86
|
params = {}
|
87
|
-
if
|
87
|
+
if StrUtils.is_not_empty(query_string):
|
88
88
|
for name, value in parse_qsl(query_string):
|
89
89
|
params[name] = value
|
90
90
|
return params
|
{socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/fragment/FragmentAggregatorDefault.py
RENAMED
@@ -9,7 +9,7 @@ from socketd.exception.SocketDExecption import SocketDException
|
|
9
9
|
|
10
10
|
from .FragmentHolder import FragmentHolder
|
11
11
|
from ..entity.MessageBuilder import MessageBuilder
|
12
|
-
from ...utils.
|
12
|
+
from ...utils.StrUtils import StrUtils
|
13
13
|
|
14
14
|
|
15
15
|
class FragmentAggregatorDefault(FragmentAggregator):
|
@@ -22,7 +22,7 @@ class FragmentAggregatorDefault(FragmentAggregator):
|
|
22
22
|
self.__fragmentHolders: list[FragmentHolder] = []
|
23
23
|
|
24
24
|
data_length: str = frame.meta(EntityMetas.META_DATA_LENGTH)
|
25
|
-
if
|
25
|
+
if StrUtils.is_empty(data_length):
|
26
26
|
raise SocketDException(f"Missing {EntityMetas.META_DATA_LENGTH} meta, event= {frame.event()}")
|
27
27
|
self.__data_length = int(data_length)
|
28
28
|
self.__data_stream_size = 0
|
@@ -0,0 +1,57 @@
|
|
1
|
+
from typing import Callable, Union, Dict
|
2
|
+
|
3
|
+
from socketd.transport.core.Listener import Listener
|
4
|
+
from socketd.transport.core.Session import Session
|
5
|
+
from socketd.transport.core.Message import Message
|
6
|
+
|
7
|
+
|
8
|
+
class EventListener(Listener):
|
9
|
+
"""
|
10
|
+
@author bai
|
11
|
+
@since 2.0
|
12
|
+
"""
|
13
|
+
|
14
|
+
def __init__(self):
|
15
|
+
self._doOnOpenHandler: Union[Callable[[Session], None], None] = None
|
16
|
+
self._doOnMessageHandler: Union[Callable[[Session, Message], None], None] = None
|
17
|
+
self._doOnCloseHandler: Union[Callable[[Session], None], None] = None
|
18
|
+
self._doOnErrorHandler: Union[Callable[[Session, Exception], None], None] = None
|
19
|
+
self._eventRouteSelector: Union[Dict[str, Callable[[Session, Message], None]], None] = None
|
20
|
+
|
21
|
+
def do_on_open(self, _on_open_handler: Callable[[Session, Message], None]) -> 'EventListener':
|
22
|
+
self._doOnOpenHandler = _on_open_handler
|
23
|
+
return self
|
24
|
+
|
25
|
+
def do_on_message(self, _on_message_handler: Callable[[Session], None]) -> 'EventListener':
|
26
|
+
self._doOnMessageHandler = _on_message_handler
|
27
|
+
return self
|
28
|
+
|
29
|
+
def do_on_close(self, _on_close_handler: Callable[[Session, Exception], None]) -> 'EventListener':
|
30
|
+
self._doOnCloseHandler = _on_close_handler
|
31
|
+
return self
|
32
|
+
|
33
|
+
def do_on_error_handler(self, _on_error_handler: Callable[[Session, Exception], None]) -> 'EventListener':
|
34
|
+
self._doOnErrorHandler = _on_error_handler
|
35
|
+
return self
|
36
|
+
|
37
|
+
def do_on(self, event: str, handler: Callable[[Session, Message], None]):
|
38
|
+
self._eventRouteSelector[event] = handler
|
39
|
+
|
40
|
+
async def on_open(self, session: Session):
|
41
|
+
if self._doOnOpenHandler:
|
42
|
+
self._doOnOpenHandler(session)
|
43
|
+
|
44
|
+
async def on_message(self, session: Session, message: Message):
|
45
|
+
if self._doOnMessageHandler:
|
46
|
+
self._doOnMessageHandler(session, message)
|
47
|
+
|
48
|
+
if message_handler := self._eventRouteSelector.get(message.event()):
|
49
|
+
message_handler(session, message)
|
50
|
+
|
51
|
+
def on_close(self, session: Session):
|
52
|
+
if self._doOnCloseHandler:
|
53
|
+
self._doOnCloseHandler(session)
|
54
|
+
|
55
|
+
def on_error(self, session: Session, error: Exception):
|
56
|
+
if self._doOnErrorHandler:
|
57
|
+
self._doOnErrorHandler(session, error)
|
@@ -8,7 +8,7 @@ if sys.platform == "win32":
|
|
8
8
|
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
|
9
9
|
|
10
10
|
|
11
|
-
class
|
11
|
+
class AsyncUtils(object):
|
12
12
|
|
13
13
|
@staticmethod
|
14
14
|
def thread_handler(_loop: asyncio.AbstractEventLoop, fn: asyncio.Task):
|
@@ -47,7 +47,7 @@ class AsyncUtil(object):
|
|
47
47
|
|
48
48
|
try:
|
49
49
|
future.add_done_callback(
|
50
|
-
lambda f:
|
50
|
+
lambda f: AsyncUtils.stop(_loop))
|
51
51
|
_loop.run_forever()
|
52
52
|
finally:
|
53
53
|
try:
|
@@ -81,10 +81,10 @@ class AsyncUtil(object):
|
|
81
81
|
loop.stop()
|
82
82
|
|
83
83
|
if thread:
|
84
|
-
t = Thread(target=
|
84
|
+
t = Thread(target=AsyncUtils.thread_handler, args=(loop, loop.create_task(_run())))
|
85
85
|
t.start()
|
86
86
|
elif pool:
|
87
|
-
pool.submit(lambda x:
|
87
|
+
pool.submit(lambda x: AsyncUtils.thread_handler(*x), (loop, loop.create_task(_run())))
|
88
88
|
return loop
|
89
89
|
|
90
90
|
@staticmethod
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import uuid
|
2
2
|
|
3
3
|
|
4
|
-
class
|
4
|
+
class StrUtils(object):
|
5
5
|
@staticmethod
|
6
6
|
def guid() -> str:
|
7
7
|
return str(uuid.uuid4()).replace("-", "")
|
@@ -12,12 +12,12 @@ class StrUtil(object):
|
|
12
12
|
|
13
13
|
@staticmethod
|
14
14
|
def is_not_empty(txt: str) -> bool:
|
15
|
-
return not
|
15
|
+
return not StrUtils.is_empty(txt)
|
16
16
|
|
17
17
|
@staticmethod
|
18
18
|
def hash_code(txt: str) -> int:
|
19
19
|
hashCode = 0
|
20
|
-
if
|
20
|
+
if StrUtils.is_empty(txt):
|
21
21
|
return hashCode
|
22
22
|
for char in txt:
|
23
23
|
hashCode = (hashCode * 31 + ord(char)) & 0xffffffff # unsigned
|
@@ -11,7 +11,7 @@ from socketd.transport.core.Flags import Flags
|
|
11
11
|
from socketd.transport.core.Frame import Frame
|
12
12
|
from socketd.transport.core.impl.ChannelDefault import ChannelDefault
|
13
13
|
from socketd.transport.core.impl.LogConfig import log
|
14
|
-
from socketd.transport.utils.
|
14
|
+
from socketd.transport.utils.AsyncUtils import AsyncUtils
|
15
15
|
from socketd.transport.utils.CompletableFuture import CompletableFuture
|
16
16
|
|
17
17
|
from socketd_aio_tcp.TCPStreamIO import TCPStreamIO
|
@@ -41,7 +41,7 @@ class TcpAioClientConnector(ClientConnectorBase):
|
|
41
41
|
_port = int(_port.split("/")[0])
|
42
42
|
if self.__top is None:
|
43
43
|
self._loop = asyncio.new_event_loop()
|
44
|
-
self.__top =
|
44
|
+
self.__top = AsyncUtils.run_forever(self._loop, daemon=True)
|
45
45
|
try:
|
46
46
|
|
47
47
|
reader = StreamReader(limit=self.get_config().get_read_buffer_size(), loop=loop)
|
@@ -10,7 +10,7 @@ from socketd.transport.core.Channel import Channel
|
|
10
10
|
from socketd.transport.core.Costants import Constants
|
11
11
|
from socketd.transport.core.impl.LogConfig import log, logger
|
12
12
|
from socketd.transport.client.ClientConnectorBase import ClientConnectorBase
|
13
|
-
from socketd.transport.utils.
|
13
|
+
from socketd.transport.utils.AsyncUtils import AsyncUtils
|
14
14
|
from socketd_websocket.impl.AIOConnect import AIOConnect
|
15
15
|
from socketd_websocket.impl.AIOWebSocketClientImpl import AIOWebSocketClientImpl
|
16
16
|
|
@@ -35,7 +35,7 @@ class WsAioClientConnector(ClientConnectorBase):
|
|
35
35
|
ws_url = ws_url.replace("ws", "wss")
|
36
36
|
|
37
37
|
self._loop = asyncio.new_event_loop()
|
38
|
-
self._top =
|
38
|
+
self._top = AsyncUtils.run_forever(self._loop, daemon=True)
|
39
39
|
|
40
40
|
try:
|
41
41
|
self.__con: AIOConnect = AIOConnect(uri=ws_url,
|
@@ -1,57 +0,0 @@
|
|
1
|
-
from typing import Callable, Union, Dict
|
2
|
-
|
3
|
-
from socketd.transport.core.Listener import Listener
|
4
|
-
from socketd.transport.core.Session import Session
|
5
|
-
from socketd.transport.core.Message import Message
|
6
|
-
|
7
|
-
|
8
|
-
class EventListener(Listener):
|
9
|
-
"""
|
10
|
-
@author bai
|
11
|
-
@since 2.0
|
12
|
-
"""
|
13
|
-
|
14
|
-
def __init__(self):
|
15
|
-
self._do_on_open_handler: Union[Callable[[Session], None], None] = None
|
16
|
-
self._do_on_message_handler: Union[Callable[[Session, Message], None], None] = None
|
17
|
-
self._do_on_close_handler: Union[Callable[[Session], None], None] = None
|
18
|
-
self._do_on_error_handler: Union[Callable[[Session, Exception], None], None] = None
|
19
|
-
self._do_on_message_routing: Union[Dict[str, Callable[[Session, Message], None]], None] = None
|
20
|
-
|
21
|
-
def do_on_open_handler(self, _on_open_handler: Callable[[Session, Message], None]) -> 'EventListener':
|
22
|
-
self._do_on_open_handler = _on_open_handler
|
23
|
-
return self
|
24
|
-
|
25
|
-
def do_on_message_handler(self, _on_message_handler: Callable[[Session], None]) -> 'EventListener':
|
26
|
-
self._do_on_message_handler = _on_message_handler
|
27
|
-
return self
|
28
|
-
|
29
|
-
def do_on_close_handler(self, _on_close_handler: Callable[[Session, Exception], None]) -> 'EventListener':
|
30
|
-
self._do_on_close_handler = _on_close_handler
|
31
|
-
return self
|
32
|
-
|
33
|
-
def do_on_error_handler(self, _on_error_handler: Callable[[Session, Exception], None]) -> 'EventListener':
|
34
|
-
self._do_on_error_handler = _on_error_handler
|
35
|
-
return self
|
36
|
-
|
37
|
-
def do_on(self, event: str, handler: Callable[[Session, Message], None]):
|
38
|
-
self._do_on_message_routing[event] = handler
|
39
|
-
|
40
|
-
async def on_open(self, session: Session):
|
41
|
-
if self._do_on_open_handler:
|
42
|
-
self._do_on_open_handler(session)
|
43
|
-
|
44
|
-
async def on_message(self, session: Session, message: Message):
|
45
|
-
if self._do_on_message_handler:
|
46
|
-
self._do_on_message_handler(session, message)
|
47
|
-
|
48
|
-
if message_handler := self._do_on_message_routing.get(message.event()):
|
49
|
-
message_handler(session, message)
|
50
|
-
|
51
|
-
def on_close(self, session: Session):
|
52
|
-
if self._do_on_close_handler:
|
53
|
-
self._do_on_close_handler(session)
|
54
|
-
|
55
|
-
def on_error(self, session: Session, error: Exception):
|
56
|
-
if self._do_on_error_handler:
|
57
|
-
self._do_on_error_handler(session, error)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/codec/ByteBufferCodecReader.py
RENAMED
File without changes
|
{socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/codec/ByteBufferCodecWriter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/fragment/FragmentHandlerBase.py
RENAMED
File without changes
|
{socket.d-2.4.10.5 → socket.d-2.4.10.7}/socketd/transport/core/fragment/FragmentHandlerDefault.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|