def _start_networking(self):
        #print self, "_start_networking" # DEBUG
        super(ReceiveImageRouterItem, self)._start_networking()

        self._transfer_service_transmitter = self._service_manager.register_service(
            DataSendService.protocol)

        self._transfer_service = DataReceiveService(self.name, self._link_manager,
            self._transfer_service_transmitter)
class ReceiveImageRouterItem(RouterItem):
    def __init__(self, name, parent=None, enabled=True):
        self._transfer_service = None
        self._transfer_service_transmitter = None
        self._session_key = None
        super(ReceiveImageRouterItem, self).__init__(name, parent, enabled)

    def _start_networking(self):
        #print self, "_start_networking" # DEBUG
        super(ReceiveImageRouterItem, self)._start_networking()

        self._transfer_service_transmitter = self._service_manager.register_service(
            DataSendService.protocol)

        self._transfer_service = DataReceiveService(self.name, self._link_manager,
            self._transfer_service_transmitter)

    def _stop_networking(self):
        #print self, "_stop_networking" # DEBUG
        super(ReceiveImageRouterItem, self)._stop_networking()

        assert self._transfer_service is not None
        self._transfer_service.terminate()

        self._transfer_service = None

    def set_active_session(self, session_key):
        self._session_key = session_key

    def receive(self):
        try:
            session_key, data = \
                self._transfer_service.receive_queue().get_nowait()
        except Queue.Empty:
            return None
        else:
            if self._session_key != session_key:
                return None
            else:
                return data