Class InboundEstablishState

  • Direct Known Subclasses:
    InboundEstablishState2

    class InboundEstablishState
    extends Object
    Data for a new connection being established, where the remote peer has initiated the connection with us. In other words, they are Alice and we are Bob. TODO do all these methods need to be synchronized?
    • Field Detail

      • _log

        protected final Log _log
      • _bobIP

        protected byte[] _bobIP
      • _bobPort

        protected final int _bobPort
      • _aliceIP

        protected final byte[] _aliceIP
      • _alicePort

        protected final int _alicePort
      • _sentRelayTag

        protected long _sentRelayTag
      • _receivedUnconfirmedIdentity

        protected RouterIdentity _receivedUnconfirmedIdentity
      • _receivedConfirmedIdentity

        protected RouterIdentity _receivedConfirmedIdentity
      • _establishBegin

        protected final long _establishBegin
      • _lastSend

        protected long _lastSend
      • _nextSend

        protected long _nextSend
      • _createdSentCount

        protected int _createdSentCount
      • _introductionRequested

        protected boolean _introductionRequested
      • _rtt

        protected int _rtt
      • RETRANSMIT_DELAY

        protected static final long RETRANSMIT_DELAY
        basic delay before backoff Transmissions at 0, 1, 3, 7 sec This should be a little shorter than for outbound.
        See Also:
        Constant Field Values
      • MAX_DELAY

        protected static final long MAX_DELAY
        max delay including backoff This should be a little shorter than for outbound.
        See Also:
        Constant Field Values
    • Method Detail

      • getVersion

        public int getVersion()
        Since:
        0.9.54
      • isComplete

        public boolean isComplete()
        Returns:
        if previously complete
      • complete

        public void complete()
        Notify successful completion
      • addMessage

        public void addMessage​(OutNetMessage msg)
        Queue a message to be sent after the session is established. This will only happen if we decide to send something during establishment
        Since:
        0.9.2
      • getNextQueuedMessage

        public OutNetMessage getNextQueuedMessage()
        Pull from the message queue
        Returns:
        null if none
        Since:
        0.9.2
      • sessionRequestReceived

        public boolean sessionRequestReceived()
      • getReceivedX

        public byte[] getReceivedX()
      • getReceivedOurIP

        public byte[] getReceivedOurIP()
      • isIntroductionRequested

        public boolean isIntroductionRequested()
        True (default) if no extended options in session request, or value of flag bit in the extended options.
        Since:
        0.9.24
      • getSentIP

        public byte[] getSentIP()
        what IP do they appear to be on?
      • getSentPort

        public int getSentPort()
        what port number do they appear to be coming from?
      • getSentY

        public byte[] getSentY()
      • fail

        public void fail()
      • getSentRelayTag

        public long getSentRelayTag()
      • setSentRelayTag

        public void setSentRelayTag​(long tag)
      • getSentSignedOnTime

        public long getSentSignedOnTime()
      • prepareSessionCreated

        public void prepareSessionCreated()
      • getSentSignature

        public Signature getSentSignature()
      • createdPacketSent

        public void createdPacketSent()
        note that we just sent a SessionCreated packet
      • getLifetime

        public long getLifetime()
        how long have we been trying to establish this session?
      • getLifetime

        public long getLifetime​(long now)
        how long have we been trying to establish this session?
        Since:
        0.9.57
      • getEstablishBeginTime

        public long getEstablishBeginTime()
      • getNextSendTime

        public long getNextSendTime()
        Returns:
        rcv time after receiving a packet (including after constructor), send time + delay after sending a packet
      • getRTT

        int getRTT()
      • getRemoteHostId

        RemoteHostId getRemoteHostId()
        RemoteHostId, uniquely identifies an attempt
      • receiveSessionConfirmed

        public void receiveSessionConfirmed​(UDPPacketReader.SessionConfirmedReader conf)
        Note that while a SessionConfirmed could in theory be fragmented, in practice a RouterIdentity is 387 bytes and a single fragment is 512 bytes max, so it will never be fragmented.
      • confirmedFullyReceived

        protected boolean confirmedFullyReceived()
        Have we fully received the SessionConfirmed messages from Alice? Caller must synch on this.
      • getConfirmedIdentity

        public RouterIdentity getConfirmedIdentity()
        Who is Alice (null if forged/unknown) Note that this isn't really confirmed - see below.
      • packetReceived

        protected void packetReceived()
        Call from synchronized method only