Skip to content

Commit

Permalink
Changes following internal refactorings
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelgrinberg committed Oct 6, 2023
1 parent 0fe5735 commit f9ea051
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 33 deletions.
25 changes: 15 additions & 10 deletions src/socketio/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,14 @@ def instrument(self):
self.sio.manager.disconnect = self._disconnect

# report join rooms
self.sio.manager.__enter_room = self.sio.manager.enter_room
self.sio.manager.enter_room = self._enter_room
self.sio.manager.__basic_enter_room = \
self.sio.manager.basic_enter_room
self.sio.manager.basic_enter_room = self._basic_enter_room

# report leave rooms
self.sio.manager.__leave_room = self.sio.manager.leave_room
self.sio.manager.leave_room = self._leave_room
self.sio.manager.__basic_leave_room = \
self.sio.manager.basic_leave_room
self.sio.manager.basic_leave_room = self._basic_leave_room

# report emit events
self.sio.manager.__emit = self.sio.manager.emit
Expand Down Expand Up @@ -121,8 +123,10 @@ def uninstrument(self): # pragma: no cover
if self.mode == 'development':
self.sio.manager.connect = self.sio.manager.__connect
self.sio.manager.disconnect = self.sio.manager.__disconnect
self.sio.manager.enter_room = self.sio.manager.__enter_room
self.sio.manager.leave_room = self.sio.manager.__leave_room
self.sio.manager.basic_enter_room = \
self.sio.manager.__basic_enter_room
self.sio.manager.basic_leave_room = \
self.sio.manager.__basic_leave_room
self.sio.manager.emit = self.sio.manager.__emit
self.sio._handle_event_internal = self.sio.__handle_event_internal
self.sio.eio._ok = self.sio.eio.__ok
Expand Down Expand Up @@ -234,8 +238,9 @@ def _check_for_upgrade(self, eio_sid, sid, namespace): # pragma: no cover
except KeyError:
pass

def _enter_room(self, sid, namespace, room, eio_sid=None):
ret = self.sio.manager.__enter_room(sid, namespace, room, eio_sid)
def _basic_enter_room(self, sid, namespace, room, eio_sid=None):
ret = self.sio.manager.__basic_enter_room(sid, namespace, room,
eio_sid)
if room:
self.sio.emit('room_joined', (
namespace,
Expand All @@ -245,15 +250,15 @@ def _enter_room(self, sid, namespace, room, eio_sid=None):
), namespace=self.admin_namespace)
return ret

def _leave_room(self, sid, namespace, room):
def _basic_leave_room(self, sid, namespace, room):
if room:
self.sio.emit('room_left', (
namespace,
room,
sid,
datetime.utcnow().isoformat() + 'Z',
), namespace=self.admin_namespace)
return self.sio.manager.__leave_room(sid, namespace, room)
return self.sio.manager.__basic_leave_room(sid, namespace, room)

def _emit(self, event, data, namespace, room=None, skip_sid=None,
callback=None, **kwargs):
Expand Down
33 changes: 19 additions & 14 deletions src/socketio/asyncio_admin.py → src/socketio/async_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,14 @@ def instrument(self):
self.sio.manager.disconnect = self._disconnect

# report join rooms
self.sio.manager.__enter_room = self.sio.manager.enter_room
self.sio.manager.enter_room = self._enter_room
self.sio.manager.__basic_enter_room = \
self.sio.manager.basic_enter_room
self.sio.manager.basic_enter_room = self._basic_enter_room

# report leave rooms
self.sio.manager.__leave_room = self.sio.manager.leave_room
self.sio.manager.leave_room = self._leave_room
self.sio.manager.__basic_leave_room = \
self.sio.manager.basic_leave_room
self.sio.manager.basic_leave_room = self._basic_leave_room

# report emit events
self.sio.manager.__emit = self.sio.manager.emit
Expand Down Expand Up @@ -102,8 +104,10 @@ def uninstrument(self): # pragma: no cover
if self.mode == 'development':
self.sio.manager.connect = self.sio.manager.__connect
self.sio.manager.disconnect = self.sio.manager.__disconnect
self.sio.manager.enter_room = self.sio.manager.__enter_room
self.sio.manager.leave_room = self.sio.manager.__leave_room
self.sio.manager.basic_enter_room = \
self.sio.manager.__basic_enter_room
self.sio.manager.basic_leave_room = \
self.sio.manager.__basic_leave_room
self.sio.manager.emit = self.sio.manager.__emit
self.sio._handle_event_internal = self.sio.__handle_event_internal
self.sio.eio._ok = self.sio.eio.__ok
Expand Down Expand Up @@ -160,15 +164,15 @@ async def config(sid):
async def admin_emit(self, _, namespace, room_filter, event, *data):
await self.sio.emit(event, data, to=room_filter, namespace=namespace)

def admin_enter_room(self, _, namespace, room, room_filter=None):
async def admin_enter_room(self, _, namespace, room, room_filter=None):
for sid, _ in self.sio.manager.get_participants(
namespace, room_filter):
self.sio.enter_room(sid, room, namespace=namespace)
await self.sio.enter_room(sid, room, namespace=namespace)

def admin_leave_room(self, _, namespace, room, room_filter=None):
async def admin_leave_room(self, _, namespace, room, room_filter=None):
for sid, _ in self.sio.manager.get_participants(
namespace, room_filter):
self.sio.leave_room(sid, room, namespace=namespace)
await self.sio.leave_room(sid, room, namespace=namespace)

async def admin_disconnect(self, _, namespace, close, room_filter=None):
for sid, _ in self.sio.manager.get_participants(
Expand Down Expand Up @@ -220,8 +224,9 @@ async def _check_for_upgrade(self, eio_sid, sid,
except KeyError:
pass

def _enter_room(self, sid, namespace, room, eio_sid=None):
ret = self.sio.manager.__enter_room(sid, namespace, room, eio_sid)
def _basic_enter_room(self, sid, namespace, room, eio_sid=None):
ret = self.sio.manager.__basic_enter_room(sid, namespace, room,
eio_sid)
if room:
self.admin_queue.append(('room_joined', (
namespace,
Expand All @@ -231,15 +236,15 @@ def _enter_room(self, sid, namespace, room, eio_sid=None):
)))
return ret

def _leave_room(self, sid, namespace, room):
def _basic_leave_room(self, sid, namespace, room):
if room:
self.admin_queue.append(('room_left', (
namespace,
room,
sid,
datetime.utcnow().isoformat() + 'Z',
)))
return self.sio.manager.__leave_room(sid, namespace, room)
return self.sio.manager.__basic_leave_room(sid, namespace, room)

async def _emit(self, event, data, namespace, room=None, skip_sid=None,
callback=None, **kwargs):
Expand Down
2 changes: 1 addition & 1 deletion src/socketio/async_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -496,7 +496,7 @@ def instrument(self, auth=None, mode='development', read_only=False,
:param namespace: The Socket.IO namespace to use for the admin
interface. The default is ``/admin``.
"""
from .asyncio_admin import InstrumentedAsyncServer
from .async_admin import InstrumentedAsyncServer
return InstrumentedAsyncServer(self, auth=auth, mode=mode,
read_only=read_only,
server_id=server_id,
Expand Down
2 changes: 1 addition & 1 deletion src/socketio/base_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ def basic_close_room(self, room, namespace):
try:
for sid, _ in self.get_participants(namespace, room):
self.basic_leave_room(sid, namespace, room)
except KeyError:
except KeyError: # pragma: no cover
pass

def get_rooms(self, sid, namespace):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
from unittest import mock
import unittest
import pytest
from engineio.asyncio_socket import AsyncSocket as EngineIOSocket
try:
from engineio.async_socket import AsyncSocket as EngineIOSocket
except ImportError:
from engineio.asyncio_socket import AsyncSocket as EngineIOSocket
import socketio
from socketio.exceptions import ConnectionError
from tests.asyncio_web_server import SocketIOWebServer
Expand All @@ -24,8 +27,8 @@ def wrapped(self, *args, **kwargs):
instrumented_server = sio.instrument(auth=auth, **ikwargs)

@sio.event
def enter_room(sid, data):
sio.enter_room(sid, data)
async def enter_room(sid, data):
await sio.enter_room(sid, data)

@sio.event
async def emit(sid, event):
Expand Down
8 changes: 4 additions & 4 deletions tests/async/test_pubsub_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ def test_disconnect_ignore_queue(self):
assert self.pm.is_connected(sid, '/') is False

def test_enter_room(self):
sid = self.pm.connect('123', '/')
sid = _run(self.pm.connect('123', '/'))
_run(self.pm.enter_room(sid, '/', 'foo'))
_run(self.pm.enter_room('456', '/', 'foo'))
assert sid in self.pm.rooms['/']['foo']
Expand All @@ -193,7 +193,7 @@ def test_enter_room(self):
)

def test_leave_room(self):
sid = self.pm.connect('123', '/')
sid = _run(self.pm.connect('123', '/'))
_run(self.pm.leave_room(sid, '/', 'foo'))
_run(self.pm.leave_room('456', '/', 'foo'))
assert 'foo' not in self.pm.rooms['/']
Expand Down Expand Up @@ -435,7 +435,7 @@ def test_handle_disconnect(self):
)

def test_handle_enter_room(self):
sid = self.pm.connect('123', '/')
sid = _run(self.pm.connect('123', '/'))
with mock.patch.object(
async_manager.AsyncManager, 'enter_room', new=AsyncMock()
) as super_enter_room:
Expand All @@ -456,7 +456,7 @@ def test_handle_enter_room(self):
)

def test_handle_leave_room(self):
sid = self.pm.connect('123', '/')
sid = _run(self.pm.connect('123', '/'))
with mock.patch.object(
async_manager.AsyncManager, 'leave_room', new=AsyncMock()
) as super_leave_room:
Expand Down

0 comments on commit f9ea051

Please sign in to comment.