Class WebPeer

    • Field Detail

      • IDBytes

        public static final byte[] IDBytes
    • Constructor Detail

      • WebPeer

        public WebPeer​(PeerCoordinator coord,
                       URI uri,
                       PeerID peerID,
                       MetaInfo metainfo)
        Outgoing connection. Creates a disconnected peer given a PeerID, your own id and the relevant MetaInfo.
        uri - must be http with .i2p host
        metainfo - non-null
    • Method Detail

      • toString

        public String toString()
        Description copied from class: Peer
        Returns the String representation of the peerID.
        toString in class Peer
      • getSocket

        public String getSocket()
        getSocket in class Peer
        socket debug string (for debug printing)
      • hashCode

        public int hashCode()
        The hash code of a Peer is the hash code of the peerID.
        hashCode in class Peer
      • equals

        public boolean equals​(Object o)
        Two Peers are equal when they have the same PeerID. All other properties are ignored.
        equals in class Peer
      • runConnection

        public void runConnection​(I2PSnarkUtil util,
                                  PeerListener listener,
                                  BitField ignore,
                                  MagnetState mState,
                                  boolean uploadOnly)
        Runs the connection to the other peer. This method does not return until the connection is terminated.
        runConnection in class Peer
        ignore - our bitfield, ignore
        uploadOnly - if we are complete with skipped files, i.e. a partial seed
      • getMaxPipeline

        public int getMaxPipeline()
        getMaxPipeline in class Peer
        min of PeerState.MIN_PIPELINE, max of PeerState.MAX_PIPELINE
      • isConnected

        public boolean isConnected()
        isConnected in class Peer
      • have

        public void have​(int piece)
        Description copied from class: Peer
        Tell the peer we have another piece.
        have in class Peer
      • cancel

        void cancel​(int piece)
        Description copied from class: Peer
        Tell the other side that we are no longer interested in any of the outstanding requests (if any) for this piece.
        cancel in class Peer
      • request

        void request()
        Description copied from class: Peer
        Update the request queue. Call after adding wanted pieces.
        request in class Peer
      • isInterested

        public boolean isInterested()
        Description copied from class: Peer
        Whether or not the peer is interested in pieces we have. Returns false if not connected.
        isInterested in class Peer
      • setInteresting

        public void setInteresting​(boolean interest)
        Description copied from class: Peer
        Sets whether or not we are interested in pieces from this peer. Defaults to false. When interest is true and this peer unchokes us then we start downloading from it. Has no effect when not connected.
        setInteresting in class Peer
      • isInteresting

        public boolean isInteresting()
        Description copied from class: Peer
        Whether or not the peer has pieces we want from it. Returns false if not connected.
        isInteresting in class Peer
      • setChoking

        public void setChoking​(boolean choke)
        Description copied from class: Peer
        Sets whether or not we are choking the peer. Defaults to true. When choke is false and the peer requests some pieces we upload them, otherwise requests of this peer are ignored.
        setChoking in class Peer
      • isChoking

        public boolean isChoking()
        Description copied from class: Peer
        Whether or not we are choking the peer. Returns true when not connected.
        isChoking in class Peer
      • isChoked

        public boolean isChoked()
        Description copied from class: Peer
        Whether or not the peer choked us. Returns true when not connected.
        isChoked in class Peer
      • keepAlive

        public void keepAlive()
        Description copied from class: Peer
        Send keepalive
        keepAlive in class Peer
      • retransmitRequests

        public void retransmitRequests()
        Description copied from class: Peer
        Retransmit outstanding requests if necessary
        retransmitRequests in class Peer
      • completed

        public int completed()
        Description copied from class: Peer
        Return how much the peer has
        completed in class Peer
        number of completed pieces (not bytes)
      • isCompleted

        public boolean isCompleted()
        Description copied from class: Peer
        Return if a peer is a seeder
        isCompleted in class Peer
      • isWebPeer

        public boolean isWebPeer()
        isWebPeer in class Peer
      • bytesTransferred

        public void bytesTransferred​(long alreadyTransferred,
                                     int currentWrite,
                                     long bytesTransferred,
                                     long bytesRemaining,
                                     String url)
        Description copied from interface: EepGet.StatusListener
        Total length should be == alreadyTransferred + currentWrite + bytesRemaining for all calls
        Specified by:
        bytesTransferred in interface EepGet.StatusListener
        alreadyTransferred - total of all attempts, not including currentWrite If nonzero on the first call, a partial file of that length was found, _and_ the server supports resume. If zero on a subsequent call after some bytes are transferred (and presumably after an attemptFailed), the server does _not_ support resume and we had to start over. To track _actual_ transfer if the output file could already exist, the listener should keep its own counter, or subtract the initial alreadyTransferred value. And watch out for alreadyTransferred resetting if a resume failed...
        currentWrite - since last call to the listener
        bytesTransferred - includes headers, retries, redirects, discarded partial downloads, ...
        bytesRemaining - on this attempt only, currentWrite already subtracted - or -1 if chunked encoding or server does not return a length
      • headerReceived

        public void headerReceived​(String url,
                                   int attemptNum,
                                   String key,
                                   String val)
        Description copied from interface: EepGet.StatusListener
        Note: Headers are not processed, and this is not called, for most error response codes, unless setWriteErrorToOutput() is called before fetch(). To be changed?
        Specified by:
        headerReceived in interface EepGet.StatusListener