Class UDPEndpoint

  • All Implemented Interfaces:
    SocketListener

    class UDPEndpoint
    extends Object
    implements SocketListener
    Coordinate the low-level datagram socket, creating and managing the UDPSender and UDPReceiver.
    • Constructor Detail

      • UDPEndpoint

        public UDPEndpoint​(RouterContext ctx,
                           UDPTransport transport,
                           int listenPort,
                           InetAddress bindAddress)
        Parameters:
        transport - may be null for unit testing ONLY
        listenPort - -1 or the requested port, may not be honored
        bindAddress - null ok
    • Method Detail

      • startup

        public void startup()
                     throws SocketException
        Caller should call getListenPort() after this to get the actual bound port and determine success . Can be restarted.
        Throws:
        SocketException
      • shutdown

        public void shutdown()
      • setListenPort

        public void setListenPort​(int newPort)
      • getListenPort

        public int getListenPort()
        call after startup() to get actual port or -1 on startup failure
      • send

        public void send​(UDPPacket packet)
        Add the packet to the outobund queue to be sent ASAP (as allowed by the bandwidth limiter) BLOCKING if queue is full.
      • receive

        public UDPPacket receive()
        Blocking call to receive the next inbound UDP packet from any peer. UNIT TESTING ONLY. Direct from the socket. In normal operation, UDPReceiver thread injects to PacketHandler queue.
        Returns:
        null if we have shut down, or on failure
      • clearOutbound

        public void clearOutbound()
        Clear outbound queue, probably in preparation for sending destroy() to everybody.
        Since:
        0.9.2
      • isIPv4

        public boolean isIPv4()
        Returns:
        true for wildcard too
        Since:
        IPv6
      • isIPv6

        public boolean isIPv6()
        Returns:
        true for wildcard too
        Since:
        IPv6
      • fail

        public void fail()
        Specified by:
        fail in interface SocketListener
        Since:
        0.9.16