Class UDPTrackerClient

  • All Implemented Interfaces:
    I2PSessionListener, I2PSessionMuxedListener

    class UDPTrackerClient
    extends Object
    implements I2PSessionMuxedListener
    One of these for all trackers and info hashes. Ref: BEP 15, proposal 160 The main difference from BEP 15 is that the announce response contains a 32-byte hash instead of a 4-byte IP and a 2-byte port. This implements only "fast mode". We send only repliable datagrams, and receive only raw datagrams, as follows:
      client                tracker         type
      ------                -------         ----
       announce  -->                        repliable
                    <--      ann resp        raw
    
    Since:
    0.9.53, enabled in 0.9.54
    • Method Detail

      • start

        public void start()
        Can't be restarted after stopping?
      • stop

        public void stop()
        Stop everything.
      • announce

        public UDPTrackerClient.TrackerResponse announce​(byte[] ih,
                                                         byte[] peerID,
                                                         int max,
                                                         long maxWait,
                                                         String toHost,
                                                         int toPort,
                                                         long downloaded,
                                                         long left,
                                                         long uploaded,
                                                         int event,
                                                         boolean fast)
        Announce and get peers for a torrent. Blocking! Caller should run in a thread.
        Parameters:
        ih - the Info Hash (torrent)
        max - maximum number of peers to return
        maxWait - the maximum time to wait (ms) must be > 0
        fast - if true, don't wait for dest, no retx, ...
        Returns:
        null on fail or if fast is true
      • messageAvailable

        public void messageAvailable​(I2PSession session,
                                     int msgId,
                                     long size,
                                     int proto,
                                     int fromPort,
                                     int toPort)
        Instruct the client that the given session has received a message Will be called only if you register via addMuxedSessionListener(). Will be called only for the proto(s) and toPort(s) you register for.
        Specified by:
        messageAvailable in interface I2PSessionMuxedListener
        Parameters:
        session - session to notify
        msgId - message number available
        size - size of the message - why it's a long and not an int is a mystery
        proto - 1-254 or 0 for unspecified
        fromPort - 1-65535 or 0 for unspecified
        toPort - 1-65535 or 0 for unspecified
      • reportAbuse

        public void reportAbuse​(I2PSession session,
                                int severity)
        Description copied from interface: I2PSessionMuxedListener
        Instruct the client that the session specified seems to be under attack and that the client may wish to move its destination to another router. All registered listeners will be called. Unused. Not fully implemented.
        Specified by:
        reportAbuse in interface I2PSessionListener
        Specified by:
        reportAbuse in interface I2PSessionMuxedListener
        Parameters:
        session - session to report abuse to
        severity - how bad the abuse is