Remove TransferManager dependency on ProxiedRegion

This commit is contained in:
Salad Dais
2021-06-02 20:01:47 +00:00
parent abf730cea5
commit 3d8da0af65
2 changed files with 26 additions and 10 deletions

View File

@@ -60,7 +60,6 @@ class ProxiedRegion:
self.message_handler: MessageHandler[ProxiedMessage] = MessageHandler()
self.http_message_handler: MessageHandler[HippoHTTPFlow] = MessageHandler()
self.eq_manager = EventQueueManager(self)
self.transfer_manager = TransferManager(self)
self.caps_client = CapsClient(self)
self.objects = ObjectManager(self, use_vo_cache=True)
self._recalc_caps()
@@ -69,6 +68,15 @@ class ProxiedRegion:
def xfer_manager(self) -> XferManager:
return XferManager(self.message_handler, self.circuit, self.session().secure_session_id)
@property
def transfer_manager(self) -> TransferManager:
return TransferManager(
self.message_handler,
self.circuit,
self.session().agent_id,
self.session().session_id,
)
@property
def name(self):
if self._name:

View File

@@ -8,8 +8,9 @@ import dataclasses
from typing import *
from hippolyzer.lib.base.datatypes import UUID
from hippolyzer.lib.base.helpers import proxify
from hippolyzer.lib.base.message.message import Block
from hippolyzer.lib.base.message.message_handler import MessageHandler
from hippolyzer.lib.proxy.circuit import ProxiedCircuit
from hippolyzer.lib.proxy.message import ProxiedMessage
from hippolyzer.lib.base.templates import (
TransferRequestParamsBase,
@@ -18,8 +19,6 @@ from hippolyzer.lib.base.templates import (
TransferStatus,
)
if TYPE_CHECKING:
from hippolyzer.lib.proxy.region import ProxiedRegion
_TRANSFER_MESSAGES = {"TransferInfo", "TransferPacket", "TransferAbort"}
@@ -71,8 +70,17 @@ class Transfer:
class TransferManager:
def __init__(self, region: ProxiedRegion):
self._region: ProxiedRegion = proxify(region)
def __init__(
self,
message_handler: MessageHandler[ProxiedMessage],
circuit: ProxiedCircuit,
agent_id: Optional[UUID] = None,
session_id: Optional[UUID] = None,
):
self._message_handler = message_handler
self._circuit = circuit
self._agent_id = agent_id
self._session_id = session_id
def request(
self, *,
@@ -86,11 +94,11 @@ class TransferManager:
params_dict = dataclasses.asdict(params)
# Fill in any missing AgentID or SessionID attrs if the params type has them
if params_dict.get("AgentID", dataclasses.MISSING) is None:
params.AgentID = self._region.session().agent_id
params.AgentID = self._agent_id
if params_dict.get("SessionID", dataclasses.MISSING) is None:
params.SessionID = self._region.session().id
params.SessionID = self._session_id
self._region.circuit.send_message(ProxiedMessage(
self._circuit.send_message(ProxiedMessage(
'TransferRequest',
Block(
'TransferInfo',
@@ -107,7 +115,7 @@ class TransferManager:
async def _pump_transfer_replies(self, transfer: Transfer):
# Subscribe to message related to our transfer while we're in this block
with self._region.message_handler.subscribe_async(
with self._message_handler.subscribe_async(
_TRANSFER_MESSAGES,
predicate=transfer.is_our_message,
) as get_msg: