Methods Summary |
---|
public com.aelitis.azureus.core.peermanager.messaging.Message | deserialize(org.gudy.azureus2.core3.util.DirectByteBuffer data, byte version)
if (data == null) {
throw new MessageException( "[" +getID() + "] decode error: data == null");
}
if (data.remaining(DirectByteBuffer.SS_MSG ) < 1) {
throw new MessageException( "[" +getID() + "] decode error: less than 1 byte in payload");
}
byte message_type = data.get(DirectByteBuffer.SS_MSG);
if (message_type != 0) {
throw new MessageException( "[" +getID() + "] decode error: no support for extension message ID " + message_type);
}
// Try decoding the data now.
Map res_data_dict = MessagingUtil.convertBencodedByteStreamToPayload(data, 1, getID());
BTLTExtensionHandshake result = new BTLTExtensionHandshake(res_data_dict, this.version);
return result;
|
public void | destroy()
this.data_dict = null;
this.bencoded_data = null;
this.description = null;
if (buffer_array != null) {
buffer_array[0].returnToPool();
}
this.buffer_array = null;
|
public byte[] | getBencodedData()
if (this.bencoded_data == null) {
try {this.bencoded_data = BEncoder.encode(this.data_dict);}
catch (java.io.IOException ioe) {
this.bencoded_data = new byte[0];
Debug.printStackTrace(ioe);
}
}
return this.bencoded_data;
|
public java.lang.String | getBencodedString()
if (this.bencoded_string == null) {
try {
this.bencoded_string = new String(this.getBencodedData(), Constants.BYTE_ENCODING);
}
catch (java.io.UnsupportedEncodingException uee) {
this.bencoded_string = "";
Debug.printStackTrace(uee);
}
}
return this.bencoded_string;
|
public java.lang.String | getClientName()
byte[] client_name = (byte[])data_dict.get("v");
if (client_name == null) {return null;}
try {return new String(client_name, Constants.DEFAULT_ENCODING);}
catch (java.io.IOException ioe) {return null;}
|
public org.gudy.azureus2.core3.util.DirectByteBuffer[] | getData()
if (buffer_array == null) {
buffer_array = new DirectByteBuffer[1];
DirectByteBuffer buffer = DirectByteBufferPool.getBuffer(DirectByteBuffer.AL_MSG_LT_EXT_HANDSHAKE, getBencodedData().length + 1);
buffer_array[0] = buffer;
buffer.put(DirectByteBuffer.SS_MSG, (byte)0); // Indicate it is a handshake, not any extension protocol.
buffer.put(DirectByteBuffer.SS_MSG, getBencodedData());
buffer.flip(DirectByteBuffer.SS_MSG);
}
return buffer_array;
|
public java.util.Map | getDataMap()
return this.data_dict;
|
public java.lang.String | getDescription()
if (description == null) {
description = BTMessage.ID_BT_LT_EXTENSION_HANDSHAKE + ": " + this.getBencodedString();
}
return description;
|
public java.lang.String | getFeatureID()return BTMessage.BT_FEATURE_ID;
|
public int | getFeatureSubID()return BTMessage.SUBID_BT_LT_EXTENSION_HANDSHAKE;
|
public java.lang.String | getID()return BTMessage.ID_BT_LT_EXTENSION_HANDSHAKE;
|
public byte[] | getIDBytes()return BTMessage.ID_BT_LT_EXTENSION_HANDSHAKE_BYTES;
|
public int | getTCPListeningPort()
Long port = (Long)data_dict.get("p");
if(port == null)
return 0;
int val = port.intValue();
if(val <= 65535 && val > 0)
return val;
return 0;
|
public int | getType()return Message.TYPE_PROTOCOL_PAYLOAD;
|
public byte | getVersion()return this.version;
|
public java.lang.Boolean | isCryptoRequested()
Long crypto = (Long)data_dict.get("e");
if(crypto == null)
return null;
return Boolean.valueOf(crypto.longValue() == 1);
|