Save I2CP client version for future reference

This commit is contained in:
zzz
2013-06-05 16:33:38 +00:00
parent f0886c5f6e
commit 9386270b57
3 changed files with 39 additions and 2 deletions

View File

@@ -67,6 +67,7 @@ class ClientConnectionRunner {
private SessionId _sessionId;
/** user's config */
private SessionConfig _config;
private String _clientVersion;
/** static mapping of MessageId to Payload, storing messages for retrieval */
private final Map<MessageId, Payload> _messages;
/** lease set request state, or null if there is no request pending on at the moment */
@@ -177,6 +178,24 @@ class ClientConnectionRunner {
/** current client's config */
public SessionConfig getConfig() { return _config; }
/**
* The client version.
* @since 0.9.7
*/
public void setClientVersion(String version) {
_clientVersion = version;
}
/**
* The client version.
* @return null if unknown or less than 0.8.7
* @since 0.9.7
*/
public String getClientVersion() {
return _clientVersion;
}
/** current client's sessionkeymanager */
public SessionKeyManager getSessionKeyManager() { return _sessionKeyManager; }

View File

@@ -134,7 +134,8 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
private void handleGetDate(I2CPMessageReader reader, GetDateMessage message) {
// sent by clients >= 0.8.7
String clientVersion = message.getVersion();
// TODO - save client's version string for future reference
if (clientVersion != null)
_runner.setClientVersion(clientVersion);
try {
// only send version if the client can handle it (0.8.7 or greater)
_runner.doSend(new SetDateMessage(clientVersion != null ? CoreVersion.VERSION : null));

View File

@@ -1,5 +1,6 @@
package net.i2p.router.client;
import net.i2p.CoreVersion;
import net.i2p.data.i2cp.I2CPMessage;
import net.i2p.data.i2cp.I2CPMessageException;
import net.i2p.internal.I2CPMessageQueue;
@@ -68,5 +69,21 @@ class QueuedClientConnectionRunner extends ClientConnectionRunner {
if (!success)
throw new I2CPMessageException("I2CP write to queue failed");
}
/**
* Does nothing. Client version is the core version.
* @since 0.9.7
*/
@Override
public void setClientVersion(String version) {}
/**
* The client version.
* @return CoreVersion.VERSION
* @since 0.9.7
*/
@Override
public String getClientVersion() {
return CoreVersion.VERSION;
}
}