diff --git a/router/java/src/net/i2p/router/transport/udp/PeerState.java b/router/java/src/net/i2p/router/transport/udp/PeerState.java index 86c7c1fd1..c8dfdcc43 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerState.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerState.java @@ -1410,8 +1410,11 @@ public class PeerState { - 16); // padding safety } - /** @return non-null */ - RemoteHostId getRemoteHostId() { return _remoteHostId; } + /** + * @return non-null + * @since public since 0.9.57 for SSU2Sender interface only + */ + public RemoteHostId getRemoteHostId() { return _remoteHostId; } /** * TODO should this use a queue, separate from the list of msgs pending an ack? diff --git a/router/java/src/net/i2p/router/transport/udp/PeerState2.java b/router/java/src/net/i2p/router/transport/udp/PeerState2.java index 0f62c34be..1d192e5e4 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerState2.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerState2.java @@ -28,7 +28,6 @@ import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; import net.i2p.router.transport.TransportUtil; import net.i2p.router.transport.udp.InboundMessageFragments.ModifiableLong; import net.i2p.router.transport.udp.PacketBuilder.Fragment; - import static net.i2p.router.transport.udp.SSU2Util.*; import net.i2p.util.HexDump; import net.i2p.util.Log; @@ -44,7 +43,7 @@ import net.i2p.util.SimpleTimer2; * * @since 0.9.54 */ -public class PeerState2 extends PeerState implements SSU2Payload.PayloadCallback, SSU2Bitfield.Callback { +public class PeerState2 extends PeerState implements SSU2Payload.PayloadCallback, SSU2Bitfield.Callback, SSU2Sender { private final long _sendConnID; private final long _rcvConnID; private final AtomicInteger _packetNumber = new AtomicInteger(); @@ -301,18 +300,40 @@ public class PeerState2 extends PeerState implements SSU2Payload.PayloadCallback // SSU 2 things + /// begin SSU2Sender interface /// + /** * Next outbound packet number, * starts at 1 for Alice (0 is Session Confirmed) and 0 for Bob + * @since public since 0.9.57 for SSU2Sender interface only */ - long getNextPacketNumber() { return _packetNumber.getAndIncrement(); } - long getSendConnID() { return _sendConnID; } + public long getNextPacketNumber() { return _packetNumber.getAndIncrement(); } + /** + * @since public since 0.9.57 for SSU2Sender interface only + */ + public long getSendConnID() { return _sendConnID; } + /** + * Caller must sync on returned object when encrypting + * @since public since 0.9.57 for SSU2Sender interface only + */ + public CipherState getSendCipher() { return _sendCha; } + /** + * @since public since 0.9.57 for SSU2Sender interface only + */ + public byte[] getSendHeaderEncryptKey1() { return _sendHeaderEncryptKey1; } + /** + * @since public since 0.9.57 for SSU2Sender interface only + */ + public byte[] getSendHeaderEncryptKey2() { return _sendHeaderEncryptKey2; } + /** + * @since 0.9.57 + */ + public void setDestroyReason(int reason) { /* todo */ } + + /// end SSU2Sender interface /// + long getRcvConnID() { return _rcvConnID; } - /** caller must sync on returned object when encrypting */ - CipherState getSendCipher() { return _sendCha; } - byte[] getSendHeaderEncryptKey1() { return _sendHeaderEncryptKey1; } byte[] getRcvHeaderEncryptKey1() { return _rcvHeaderEncryptKey1; } - byte[] getSendHeaderEncryptKey2() { return _sendHeaderEncryptKey2; } byte[] getRcvHeaderEncryptKey2() { return _rcvHeaderEncryptKey2; } void setOurAddress(byte[] ip, int port) { @@ -321,7 +342,10 @@ public class PeerState2 extends PeerState implements SSU2Payload.PayloadCallback byte[] getOurIP() { return _ourIP; } int getOurPort() { return _ourPort; } - SSU2Bitfield getReceivedMessages() { + /** + * @since public since 0.9.57 for SSU2Sender interface only + */ + public SSU2Bitfield getReceivedMessages() { // logged in PacketBuilder2 //if (_log.shouldDebug()) // _log.debug("Sending acks " + _receivedMessages + " on " + this); @@ -333,7 +357,10 @@ public class PeerState2 extends PeerState implements SSU2Payload.PayloadCallback return _receivedMessages; } - SSU2Bitfield getAckedMessages() { return _ackedMessages; } + /** + * @since public since 0.9.57 for SSU2Sender interface only + */ + public SSU2Bitfield getAckedMessages() { return _ackedMessages; } /** * @param packet fully encrypted, header and body decryption will be done here @@ -877,9 +904,10 @@ public class PeerState2 extends PeerState implements SSU2Payload.PayloadCallback * so we can process acks. * * @param length including ip/udp header, for logging only + * @since public since 0.9.57 for SSU2Sender interface only * */ - void fragmentsSent(long pktNum, int length, List fragments) { + public void fragmentsSent(long pktNum, int length, List fragments) { List old = _sentMessages.putIfAbsent(Long.valueOf(pktNum), fragments); if (old != null) { // shouldn't happen @@ -973,9 +1001,9 @@ public class PeerState2 extends PeerState implements SSU2Payload.PayloadCallback /** * Flag byte to be sent in header * - * @since 0.9.56 + * @since 0.9.56, public since 0.9.57 for SSU2Sender interface */ - byte getFlags() { + public byte getFlags() { return shouldRequestImmediateAck() ? (byte) 0x01 : 0; }