From 8b93c5eefa05d08a0002ee43320fc0d74bdc6f5d Mon Sep 17 00:00:00 2001 From: Salad Dais Date: Thu, 9 Dec 2021 05:30:12 +0000 Subject: [PATCH] Rename send_message() to send() --- addon_examples/blueish_object_list.py | 4 ++-- addon_examples/local_anim.py | 2 +- addon_examples/message_mirror.py | 4 ++-- addon_examples/payday.py | 2 +- addon_examples/pixel_artist.py | 6 +++--- addon_examples/recapitator.py | 2 +- addon_examples/transfer_example.py | 2 +- addon_examples/turbo_object_inventory.py | 6 +++--- addon_examples/uploader.py | 2 +- addon_examples/xfer_example.py | 6 +++--- hippolyzer/apps/proxy_gui.py | 2 +- hippolyzer/lib/base/message/circuit.py | 7 +++++-- hippolyzer/lib/base/transfer_manager.py | 2 +- hippolyzer/lib/base/xfer_manager.py | 8 ++++---- hippolyzer/lib/client/object_manager.py | 6 +++--- hippolyzer/lib/proxy/addon_utils.py | 6 +++--- hippolyzer/lib/proxy/lludp_proxy.py | 2 +- tests/base/test_xfer_transfer.py | 6 +++--- tests/proxy/test_messages.py | 10 +++++----- 19 files changed, 44 insertions(+), 41 deletions(-) diff --git a/addon_examples/blueish_object_list.py b/addon_examples/blueish_object_list.py index 7e63ca2..dacd454 100644 --- a/addon_examples/blueish_object_list.py +++ b/addon_examples/blueish_object_list.py @@ -80,7 +80,7 @@ class BlueishObjectListGUIAddon(BaseAddon): raise def _highlight_object(self, session: Session, obj: Object): - session.main_region.circuit.send_message(Message( + session.main_region.circuit.send(Message( "ForceObjectSelect", Block("Header", ResetList=False), Block("Data", LocalID=obj.LocalID), @@ -88,7 +88,7 @@ class BlueishObjectListGUIAddon(BaseAddon): )) def _teleport_to_object(self, session: Session, obj: Object): - session.main_region.circuit.send_message(Message( + session.main_region.circuit.send(Message( "TeleportLocationRequest", Block("AgentData", AgentID=session.agent_id, SessionID=session.id), Block( diff --git a/addon_examples/local_anim.py b/addon_examples/local_anim.py index c7247b1..b669426 100644 --- a/addon_examples/local_anim.py +++ b/addon_examples/local_anim.py @@ -159,7 +159,7 @@ class LocalAnimAddon(BaseAddon): cls.local_anim_playing_ids.pop(anim_name, None) cls.local_anim_bytes.pop(anim_name, None) - region.circuit.send_message(new_msg) + region.circuit.send(new_msg) print(f"Changing {anim_name} to {next_id}") @classmethod diff --git a/addon_examples/message_mirror.py b/addon_examples/message_mirror.py index 2e04638..f97eeb4 100644 --- a/addon_examples/message_mirror.py +++ b/addon_examples/message_mirror.py @@ -126,14 +126,14 @@ class MessageMirrorAddon(BaseAddon): # Send the message normally first if we're mirroring if message.name in MIRROR: - region.circuit.send_message(message) + region.circuit.send(message) # We're going to send the message on a new circuit, we need to take # it so we get a new packet ID and clean ACKs message = message.take() self._lludp_fixups(target_session, message) - target_region.circuit.send_message(message) + target_region.circuit.send(message) return True def _lludp_fixups(self, target_session: Session, message: Message): diff --git a/addon_examples/payday.py b/addon_examples/payday.py index b00e91b..8218e3d 100644 --- a/addon_examples/payday.py +++ b/addon_examples/payday.py @@ -37,7 +37,7 @@ class PaydayAddon(BaseAddon): chat_type=ChatType.SHOUT, ) # Do the traditional money dance. - session.main_region.circuit.send_message(Message( + session.main_region.circuit.send(Message( "AgentAnimation", Block("AgentData", AgentID=session.agent_id, SessionID=session.id), Block("AnimationList", AnimID=UUID("928cae18-e31d-76fd-9cc9-2f55160ff818"), StartAnim=True), diff --git a/addon_examples/pixel_artist.py b/addon_examples/pixel_artist.py index d8885fb..d5963f4 100644 --- a/addon_examples/pixel_artist.py +++ b/addon_examples/pixel_artist.py @@ -80,7 +80,7 @@ class PixelArtistAddon(BaseAddon): # TODO: We don't track the land group or user's active group, so # "anyone can build" must be on for rezzing to work. group_id = UUID() - region.circuit.send_message(Message( + region.circuit.send(Message( 'ObjectAdd', Block('AgentData', AgentID=session.agent_id, SessionID=session.id, GroupID=group_id), Block( @@ -129,7 +129,7 @@ class PixelArtistAddon(BaseAddon): # Set the prim color to the color from the pixel te.Color[None] = pixel_color # Set the prim texture and color - region.circuit.send_message(Message( + region.circuit.send(Message( 'ObjectImage', Block('AgentData', AgentID=session.agent_id, SessionID=session.id), Block('ObjectData', ObjectLocalID=obj.LocalID, MediaURL=b'', TextureEntry_=te), @@ -149,7 +149,7 @@ class PixelArtistAddon(BaseAddon): # Move the "pixels" to their correct position in chunks for chunk in to_chunks(positioning_blocks, 25): - region.circuit.send_message(Message( + region.circuit.send(Message( 'MultipleObjectUpdate', Block('AgentData', AgentID=session.agent_id, SessionID=session.id), *chunk, diff --git a/addon_examples/recapitator.py b/addon_examples/recapitator.py index 6206618..0c342d6 100644 --- a/addon_examples/recapitator.py +++ b/addon_examples/recapitator.py @@ -116,7 +116,7 @@ class RecapitatorAddon(BaseAddon): except: logging.exception("Exception while recapitating") # Tell the viewer about the status of its original upload - region.circuit.send_message(Message( + region.circuit.send(Message( "AssetUploadComplete", Block("AssetBlock", UUID=asset_id, Type=asset_block["Type"], Success=success), direction=Direction.IN, diff --git a/addon_examples/transfer_example.py b/addon_examples/transfer_example.py index d61ceec..f99b2ce 100644 --- a/addon_examples/transfer_example.py +++ b/addon_examples/transfer_example.py @@ -35,7 +35,7 @@ class TransferExampleAddon(BaseAddon): async def get_first_script(self, session: Session, region: ProxiedRegion): """Get the contents of the first script in the selected object""" # Ask for the object inventory so we can find a script - region.circuit.send_message(Message( + region.circuit.send(Message( 'RequestTaskInventory', Block('AgentData', AgentID=session.agent_id, SessionID=session.id), Block('InventoryData', LocalID=session.selected.object_local), diff --git a/addon_examples/turbo_object_inventory.py b/addon_examples/turbo_object_inventory.py index 90e6824..93a714c 100644 --- a/addon_examples/turbo_object_inventory.py +++ b/addon_examples/turbo_object_inventory.py @@ -64,12 +64,12 @@ class TurboObjectInventoryAddon(BaseAddon): # Any previous requests will have triggered a delete of the inventory file # by marking it complete on the server-side. Re-send our RequestTaskInventory # To make sure there's a fresh copy. - region.circuit.send_message(request_msg.take()) + region.circuit.send(request_msg.take()) inv_message = await region.message_handler.wait_for(('ReplyTaskInventory',), timeout=5.0) # No task inventory, send the reply as-is file_name = inv_message["InventoryData"]["Filename"] if not file_name: - region.circuit.send_message(inv_message) + region.circuit.send(inv_message) return xfer = region.xfer_manager.request( @@ -87,7 +87,7 @@ class TurboObjectInventoryAddon(BaseAddon): continue # Send the original ReplyTaskInventory to the viewer so it knows the file is ready - region.circuit.send_message(inv_message) + region.circuit.send(inv_message) proxied_xfer = Xfer(data=xfer.reassemble_chunks()) # Wait for the viewer to request the inventory file diff --git a/addon_examples/uploader.py b/addon_examples/uploader.py index cca180b..b5e9d6c 100644 --- a/addon_examples/uploader.py +++ b/addon_examples/uploader.py @@ -102,7 +102,7 @@ class UploaderAddon(BaseAddon): ais_item_to_inventory_data(ais_item), direction=Direction.IN ) - region.circuit.send_message(message) + region.circuit.send(message) addons = [UploaderAddon()] diff --git a/addon_examples/xfer_example.py b/addon_examples/xfer_example.py index 689e84f..592a4a5 100644 --- a/addon_examples/xfer_example.py +++ b/addon_examples/xfer_example.py @@ -15,7 +15,7 @@ class XferExampleAddon(BaseAddon): @handle_command() async def get_mute_list(self, session: Session, region: ProxiedRegion): """Fetch the current user's mute list""" - region.circuit.send_message(Message( + region.circuit.send(Message( 'MuteListRequest', Block('AgentData', AgentID=session.agent_id, SessionID=session.id), Block("MuteData", MuteCRC=0), @@ -35,7 +35,7 @@ class XferExampleAddon(BaseAddon): @handle_command() async def get_task_inventory(self, session: Session, region: ProxiedRegion): """Get the inventory of the currently selected object""" - region.circuit.send_message(Message( + region.circuit.send(Message( 'RequestTaskInventory', # If no session is passed in we'll use the active session when the coro was created Block('AgentData', AgentID=session.agent_id, SessionID=session.id), @@ -98,7 +98,7 @@ textures 1 data=asset_data, transaction_id=transaction_id ) - region.circuit.send_message(Message( + region.circuit.send(Message( 'CreateInventoryItem', Block('AgentData', AgentID=session.agent_id, SessionID=session.id), Block( diff --git a/hippolyzer/apps/proxy_gui.py b/hippolyzer/apps/proxy_gui.py index 819ba3d..ab8c5b7 100644 --- a/hippolyzer/apps/proxy_gui.py +++ b/hippolyzer/apps/proxy_gui.py @@ -711,7 +711,7 @@ class MessageBuilderWindow(QtWidgets.QMainWindow): off_circuit = self.checkOffCircuit.isChecked() if off_circuit: transport = SocketUDPTransport(socket.socket(socket.AF_INET, socket.SOCK_DGRAM)) - region.circuit.send_message(msg, transport=transport) + region.circuit.send(msg, transport=transport) if off_circuit: transport.close() diff --git a/hippolyzer/lib/base/message/circuit.py b/hippolyzer/lib/base/message/circuit.py index 616562c..3ac9bca 100644 --- a/hippolyzer/lib/base/message/circuit.py +++ b/hippolyzer/lib/base/message/circuit.py @@ -68,7 +68,7 @@ class Circuit: # themselves created them. message.injected = True - def send_message(self, message: Message, transport=None): + def send(self, message: Message, transport=None) -> UDPPacket: if self.prepare_message(message): # If we injected the message then we're responsible for resends. if message.reliable and message.injected: @@ -78,6 +78,9 @@ class Circuit: ) return self._send_prepared_message(message, transport) + # Temporary alias + send_message = send + def collect_acks(self, message: Message): effective_acks = list(message.acks) if message.name == "PacketAck": @@ -109,7 +112,7 @@ class Circuit: message.packet_id = packet_id message.direction = direction message.injected = True - self.send_message(message) + self.send(message) def __repr__(self): return "<%s %r : %r>" % (self.__class__.__name__, self.near_host, self.host) diff --git a/hippolyzer/lib/base/transfer_manager.py b/hippolyzer/lib/base/transfer_manager.py index d5755ed..3d301b3 100644 --- a/hippolyzer/lib/base/transfer_manager.py +++ b/hippolyzer/lib/base/transfer_manager.py @@ -94,7 +94,7 @@ class TransferManager: if params_dict.get("SessionID", dataclasses.MISSING) is None: params.SessionID = self._session_id - self._connection_holder.circuit.send_message(Message( + self._connection_holder.circuit.send(Message( 'TransferRequest', Block( 'TransferInfo', diff --git a/hippolyzer/lib/base/xfer_manager.py b/hippolyzer/lib/base/xfer_manager.py index c9a88ab..c53b66b 100644 --- a/hippolyzer/lib/base/xfer_manager.py +++ b/hippolyzer/lib/base/xfer_manager.py @@ -110,7 +110,7 @@ class XferManager: direction: Direction = Direction.OUT, ) -> Xfer: xfer_id = xfer_id if xfer_id is not None else random.getrandbits(64) - self._connection_holder.circuit.send_message(Message( + self._connection_holder.circuit.send(Message( 'RequestXfer', Block( 'XferID', @@ -174,7 +174,7 @@ class XferManager: to_ack = range(xfer.next_ackable, ack_max) xfer.next_ackable = ack_max for ack_id in to_ack: - self._connection_holder.circuit.send_message(Message( + self._connection_holder.circuit.send(Message( "ConfirmXferPacket", Block("XferID", ID=xfer.xfer_id, Packet=ack_id), direction=xfer.direction, @@ -216,7 +216,7 @@ class XferManager: else: inline_data = data - self._connection_holder.circuit.send_message(Message( + self._connection_holder.circuit.send(Message( "AssetUploadRequest", Block( "AssetBlock", @@ -272,7 +272,7 @@ class XferManager: chunk = xfer.chunks.pop(packet_id) # EOF if there are no chunks left packet_val = XferPacket(PacketID=packet_id, IsEOF=not bool(xfer.chunks)) - self._connection_holder.circuit.send_message(Message( + self._connection_holder.circuit.send(Message( "SendXferPacket", Block("XferID", ID=xfer.xfer_id, Packet_=packet_val), Block("DataPacket", Data=chunk), diff --git a/hippolyzer/lib/client/object_manager.py b/hippolyzer/lib/client/object_manager.py index f611a44..880bf8a 100644 --- a/hippolyzer/lib/client/object_manager.py +++ b/hippolyzer/lib/client/object_manager.py @@ -116,8 +116,8 @@ class ClientObjectManager: *[Block("ObjectData", ObjectLocalID=x) for x in ids_to_req[:255]], ] # Selecting causes ObjectProperties to be sent - self._region.circuit.send_message(Message("ObjectSelect", blocks)) - self._region.circuit.send_message(Message("ObjectDeselect", blocks)) + self._region.circuit.send(Message("ObjectSelect", blocks)) + self._region.circuit.send(Message("ObjectDeselect", blocks)) ids_to_req = ids_to_req[255:] futures = [] @@ -150,7 +150,7 @@ class ClientObjectManager: ids_to_req = local_ids while ids_to_req: - self._region.circuit.send_message(Message( + self._region.circuit.send(Message( "RequestMultipleObjects", Block("AgentData", AgentID=session.agent_id, SessionID=session.id), *[Block("ObjectData", CacheMissType=0, ID=x) for x in ids_to_req[:255]], diff --git a/hippolyzer/lib/proxy/addon_utils.py b/hippolyzer/lib/proxy/addon_utils.py index 40d763a..823fc8c 100644 --- a/hippolyzer/lib/proxy/addon_utils.py +++ b/hippolyzer/lib/proxy/addon_utils.py @@ -73,17 +73,17 @@ def show_message(text, session=None) -> None: direction=Direction.IN, ) if session: - session.main_region.circuit.send_message(message) + session.main_region.circuit.send(message) else: for session in AddonManager.SESSION_MANAGER.sessions: - session.main_region.circuit.send_message(copy.copy(message)) + session.main_region.circuit.send(copy.copy(message)) def send_chat(message: Union[bytes, str], channel=0, chat_type=ChatType.NORMAL, session=None): session = session or addon_ctx.session.get(None) or None if not session: raise RuntimeError("Tried to send chat without session") - session.main_region.circuit.send_message(Message( + session.main_region.circuit.send(Message( "ChatFromViewer", Block( "AgentData", diff --git a/hippolyzer/lib/proxy/lludp_proxy.py b/hippolyzer/lib/proxy/lludp_proxy.py index 44a76a9..b74b6f1 100644 --- a/hippolyzer/lib/proxy/lludp_proxy.py +++ b/hippolyzer/lib/proxy/lludp_proxy.py @@ -163,7 +163,7 @@ class InterceptingLLUDPProxyProtocol(UDPProxyProtocol): # Send the message if it wasn't explicitly dropped or sent before if not message.finalized: - region.circuit.send_message(message) + region.circuit.send(message) def close(self): super().close() diff --git a/tests/base/test_xfer_transfer.py b/tests/base/test_xfer_transfer.py index 73804b1..8da27c2 100644 --- a/tests/base/test_xfer_transfer.py +++ b/tests/base/test_xfer_transfer.py @@ -70,7 +70,7 @@ class XferManagerTests(BaseTransferTests): manager = XferManager(self.server_connection) xfer = await manager.request(vfile_id=asset_id, vfile_type=AssetType.BODYPART) self.received_bytes = xfer.reassemble_chunks() - self.server_circuit.send_message(Message( + self.server_circuit.send(Message( "AssetUploadComplete", Block("AssetBlock", UUID=asset_id, Type=asset_block["Type"], Success=True), direction=Direction.IN, @@ -109,7 +109,7 @@ class TestTransferManager(BaseTransferTests): self.assertEqual(EstateAssetType.COVENANT, params.EstateAssetType) data = self.LARGE_PAYLOAD - self.server_circuit.send_message(Message( + self.server_circuit.send(Message( 'TransferInfo', Block( 'TransferInfo', @@ -125,7 +125,7 @@ class TestTransferManager(BaseTransferTests): while True: chunk = data[:1000] data = data[1000:] - self.server_circuit.send_message(Message( + self.server_circuit.send(Message( 'TransferPacket', Block( 'TransferData', diff --git a/tests/proxy/test_messages.py b/tests/proxy/test_messages.py index bbbf835..4b3f533 100644 --- a/tests/proxy/test_messages.py +++ b/tests/proxy/test_messages.py @@ -21,13 +21,13 @@ class MockedProxyCircuit(ProxiedCircuit): self.sent_msgs.append(msg) -class PacketIDTests(unittest.TestCase): +class PacketIDTests(unittest.IsolatedAsyncioTestCase): def setUp(self) -> None: self.circuit = MockedProxyCircuit() def _send_message(self, msg, outgoing=True): msg.direction = Direction.OUT if outgoing else Direction.IN - return self.circuit.send_message(msg) + return self.circuit.send(msg) def test_basic(self): self._send_message(Message('ChatFromViewer', packet_id=1)) @@ -230,7 +230,7 @@ class PacketIDTests(unittest.TestCase): self.assertEqual(self.circuit.sent_msgs[4]["Packets"][0]["ID"], 3) def test_resending_or_dropping(self): - self.circuit.send_message(Message('ChatFromViewer', packet_id=1)) + self.circuit.send(Message('ChatFromViewer', packet_id=1)) to_drop = Message('ChatFromViewer', packet_id=2, flags=PacketFlags.RELIABLE) self.circuit.drop_message(to_drop) with self.assertRaises(RuntimeError): @@ -238,9 +238,9 @@ class PacketIDTests(unittest.TestCase): self.circuit.drop_message(to_drop) # Returns a new message without finalized flag new_msg = to_drop.take() - self.circuit.send_message(new_msg) + self.circuit.send(new_msg) with self.assertRaises(RuntimeError): - self.circuit.send_message(new_msg) + self.circuit.send(new_msg) self.assertSequenceEqual(self.circuit.sent_simple, [ (1, "ChatFromViewer", Direction.OUT, False, ()), (1, "PacketAck", Direction.IN, True, ()),