Skip to content

Commit

Permalink
Fix bug, remove entity types from entity events to support subscripti…
Browse files Browse the repository at this point in the history
…on from unconnected contexts
  • Loading branch information
olijeffers0n committed Jul 12, 2024
1 parent 4aa1ed9 commit b199d36
Show file tree
Hide file tree
Showing 8 changed files with 19 additions and 48 deletions.
3 changes: 2 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
recursive-include rustplus *.png
recursive-include rustplus *.ttf
recursive-include rustplus *.ttf
include requirements.txt
6 changes: 2 additions & 4 deletions rustplus/annotations/entity_event.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Callable

from .. import ServerDetails
from ..identification import RegisteredEntityListener, RegisteredListener
from ..identification import RegisteredListener
from ..events import EntityEventPayload as EntityEventManager


Expand All @@ -10,9 +10,7 @@ def wrapper(func) -> RegisteredListener:
if isinstance(func, RegisteredListener):
func = func.get_coro()

listener = RegisteredEntityListener(
str(eid), func, 1
) # TODO, how are we going to handle the entity type?
listener = RegisteredListener(str(eid), func)

EntityEventManager.HANDLER_LIST.register(listener, server_details)

Expand Down
7 changes: 1 addition & 6 deletions rustplus/events/entity_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ def item_is_blueprint(self) -> bool:
class EntityEventPayload:
HANDLER_LIST = EntityHandlerList()

def __init__(self, entity_changed: AppEntityChanged, entity_type) -> None:
self._type = int(entity_type) # TODO CHECK HOW I HANDLE THIS
def __init__(self, entity_changed: AppEntityChanged) -> None:
self._entity_id: int = entity_changed.entity_id
self._value: bool = entity_changed.payload.value
self._capacity: int = entity_changed.payload.capacity
Expand All @@ -36,10 +35,6 @@ def __init__(self, entity_changed: AppEntityChanged, entity_type) -> None:

self._items: List[Item] = [Item(item) for item in entity_changed.payload.items]

@property
def type(self) -> int:
return self._type

@property
def entity_id(self) -> int:
return self._entity_id
Expand Down
2 changes: 1 addition & 1 deletion rustplus/identification/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
from .registered_listener import RegisteredListener, RegisteredEntityListener
from .registered_listener import RegisteredListener
from .server_details import ServerDetails
17 changes: 7 additions & 10 deletions rustplus/identification/handler_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from typing import Set, Dict
from rustplus.identification import (
RegisteredListener,
RegisteredEntityListener,
ServerDetails,
)

Expand Down Expand Up @@ -34,20 +33,20 @@ def get_handlers(self, server_details: ServerDetails) -> Set[RegisteredListener]
class EntityHandlerList(HandlerList):
def __init__(self) -> None:
super().__init__()
self._handlers: Dict[
ServerDetails, Dict[str, Set[RegisteredEntityListener]]
] = defaultdict(dict)
self._handlers: Dict[ServerDetails, Dict[str, Set[RegisteredListener]]] = (
defaultdict(dict)
)

def unregister(
self, listener: RegisteredEntityListener, server_details: ServerDetails
self, listener: RegisteredListener, server_details: ServerDetails
) -> None:
if listener.listener_id in self._handlers.get(server_details):
self._handlers.get(server_details).get(listener.listener_id).remove(
listener
)

def register(
self, listener: RegisteredEntityListener, server_details: ServerDetails
self, listener: RegisteredListener, server_details: ServerDetails
) -> None:
if server_details not in self._handlers:
self._handlers[server_details] = defaultdict(set)
Expand All @@ -57,9 +56,7 @@ def register(

self._handlers.get(server_details).get(listener.listener_id).add(listener)

def has(
self, listener: RegisteredEntityListener, server_details: ServerDetails
) -> bool:
def has(self, listener: RegisteredListener, server_details: ServerDetails) -> bool:
if (
server_details in self._handlers
and listener.listener_id in self._handlers.get(server_details)
Expand All @@ -75,5 +72,5 @@ def unregister_all(self) -> None:

def get_handlers(
self, server_details: ServerDetails
) -> Dict[str, Set[RegisteredEntityListener]]:
) -> Dict[str, Set[RegisteredListener]]:
return self._handlers.get(server_details, dict())
23 changes: 0 additions & 23 deletions rustplus/identification/registered_listener.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,3 @@ def __eq__(self, other) -> bool:

def __hash__(self):
return hash((self.listener_id, self._coroutine))


class RegisteredEntityListener(RegisteredListener):
def __init__(
self,
listener_id: str,
coroutine: Coroutine,
entity_type: int,
) -> None:
super().__init__(listener_id, coroutine)
self.entity_type = entity_type

def get_entity_type(self):
return self.entity_type

def __eq__(self, other) -> bool:
if not isinstance(other, RegisteredEntityListener):
return False

return super().__eq__(other) and self.listener_id == other.listener_id

def __hash__(self):
return hash((self.listener_id, self._coroutine, self.entity_type))
2 changes: 1 addition & 1 deletion rustplus/remote/fcm/fcm_listener.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ def __fcm_listen(self) -> None:
if self.data is None:
raise ValueError("Data is None")

self._push_listener.listen(callback=self.on_notification)
self._push_listener.listen(callback=self.on_notification)
7 changes: 5 additions & 2 deletions rustplus/remote/websocket/ws.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,11 @@ async def connect(self) -> bool:
async def disconnect(self) -> None:
if self.task and self.connection:
self.task.cancel()
await self.task
try:
await self.task
except asyncio.CancelledError:
pass # Ignore the cancellation error

self.task = None

self.open = False
Expand Down Expand Up @@ -207,7 +211,6 @@ async def handle_message(self, app_message: AppMessage) -> None:
handler.get_coro()(
EntityEventPayload(
entity_changed=app_message.broadcast.entity_changed,
entity_type=handler.entity_type,
)
)

Expand Down

0 comments on commit b199d36

Please sign in to comment.