Example #1
0
 def open(self, protocol_factory: Callable[[], Protocol],
          local_call: AX25Call, remote_call: AX25Call,
          origin_node: AX25Call, origin_user: AX25Call):
     # This a new connection, create the transport and protocol
     nl_connect = NetRomStateEvent.nl_connect(-1, remote_call, local_call,
                                              origin_node, origin_user)
     self.sm.handle_internal_event(nl_connect)
     self.l3_half_open[nl_connect.circuit_id] = protocol_factory
Example #2
0
 def open(self, protocol_factory: Callable[[], Protocol],
          local_call: AX25Call, remote_call: AX25Call,
          origin_node: AX25Call, origin_user: AX25Call) -> Protocol:
     # This a new connection, create the transport and protocol
     nl_connect = NetRomStateEvent.nl_connect(-1, remote_call, local_call,
                                              origin_node, origin_user)
     self.sm.handle_internal_event_sync(nl_connect)
     protocol = protocol_factory()
     self.l3_half_open[nl_connect.circuit_id] = protocol
     self.l3_protocol.listen(
         NetRomAddress(local_call.callsign, local_call.ssid, ""))
     self.l3_destinations.add(local_call)
     return protocol
Example #3
0
    def nl_connect_request(self, remote_call: AX25Call, local_call: AX25Call,
                           origin_node: AX25Call, origin_user: AX25Call):
        if remote_call == local_call:
            raise RuntimeError(
                f"Cannot connect to node's own callsign {local_call}")

        # circuit_id of -1 means pick an unused circuit to use
        nl_connect = NetRomStateEvent.nl_connect(-1, remote_call, local_call,
                                                 origin_node, origin_user)
        self.sm.handle_internal_event(nl_connect)

        async def poll():
            while True:
                if self.sm.get_state(
                        nl_connect.circuit_id) == NetRomStateType.Connected:
                    return nl_connect.circuit_id
                else:
                    await asyncio.sleep(0.001)

        return asyncio.create_task(poll())
Example #4
0
 def nl_connect_request(self, remote_call: AX25Call, local_call: AX25Call,
                        origin_node: AX25Call,
                        origin_user: AX25Call) -> None:
     nl_connect = NetRomStateEvent.nl_connect(-1, remote_call, local_call,
                                              origin_node, origin_user)
     self.sm.handle_internal_event_sync(nl_connect)