FileDocCategorySizeDatePackage
AZSessionRequest.javaAPI DocAzureus 3.0.3.45507Sun Mar 04 21:08:16 GMT 2007com.aelitis.azureus.core.peermanager.messaging.azureus.session

AZSessionRequest

public class AZSessionRequest extends Object implements com.aelitis.azureus.core.peermanager.messaging.azureus.AZMessage
BitTorrent request message. NOTE: Overrides equals()

Fields Summary
private final byte
version
private DirectByteBuffer
buffer
private String
description
private final int
session_id
private final byte
unchoke_id
private final int
piece_number
private final int
piece_offset
private final int
length
private final int
hashcode
Constructors Summary
public AZSessionRequest(int session_id, byte unchoke_id, int piece_number, int piece_offset, int length, byte version)

  
  
                 
    this.session_id = session_id;
    this.unchoke_id = unchoke_id;
    this.piece_number = piece_number;
    this.piece_offset = piece_offset;
    this.length = length;
    this.hashcode = session_id + piece_number + piece_offset + length;
    this.version = version;
  
Methods Summary
public com.aelitis.azureus.core.peermanager.messaging.Messagedeserialize(DirectByteBuffer data, byte version)

   
    if( data == null ) {
      throw new MessageException( "[" +getID() + "] decode error: data == null" );
    }
    
    if( data.remaining( DirectByteBuffer.SS_MSG ) != 17 ) {
      throw new MessageException( "[" +getID() + "] decode error: payload.remaining[" +data.remaining( DirectByteBuffer.SS_MSG )+ "] != 17" );
    }
    
    
    int sess = data.getInt( DirectByteBuffer.SS_MSG );
    
    byte unch = data.get( DirectByteBuffer.SS_MSG );
    
    int num = data.getInt( DirectByteBuffer.SS_MSG );
    if( num < 0 ) {
      throw new MessageException( "[" +getID() + "] decode error: num < 0" );
    }
    
    int offset = data.getInt( DirectByteBuffer.SS_MSG );
    if( offset < 0 ) {
      throw new MessageException( "[" +getID() + "] decode error: offset < 0" );
    }
    
    int length = data.getInt( DirectByteBuffer.SS_MSG );
    if( length < 0 ) {
      throw new MessageException( "[" +getID() +"] decode error: length < 0" );
    }
    
    data.returnToPool();
    
    return new AZSessionRequest( sess, unch, num, offset, length, version );
  
public voiddestroy()

    if( buffer != null )  buffer.returnToPool();
  
public booleanequals(java.lang.Object obj)

    if( this == obj )  return true;
    if( obj != null && obj instanceof AZSessionRequest ) {
      AZSessionRequest other = (AZSessionRequest)obj;
      if( other.session_id == this.session_id &&
          other.piece_number == this.piece_number &&
          other.piece_offset == this.piece_offset &&
          other.length == this.length )  return true;
    }
    return false;
  
public DirectByteBuffer[]getData()

    if( buffer == null ) {
      buffer = DirectByteBufferPool.getBuffer( DirectByteBuffer.AL_MSG, 17 );
      buffer.putInt( DirectByteBuffer.SS_MSG, session_id );
      buffer.put( DirectByteBuffer.SS_MSG, unchoke_id );
      buffer.putInt( DirectByteBuffer.SS_MSG, piece_number );
      buffer.putInt( DirectByteBuffer.SS_MSG, piece_offset );
      buffer.putInt( DirectByteBuffer.SS_MSG, length );
      buffer.flip( DirectByteBuffer.SS_MSG );
    }
    
    return new DirectByteBuffer[]{ buffer };
  
public java.lang.StringgetDescription()

    if( description == null ) {
      description = getID()+ " session #" +session_id+ " unchoke #" +unchoke_id+ " piece #" + piece_number + ":" + piece_offset + "->" + (piece_offset + length -1);
    }
    
    return description;
  
public java.lang.StringgetFeatureID()

  throw new RuntimeException( "not implemented" );  
public intgetFeatureSubID()

  throw new RuntimeException( "not implemented" );  
public java.lang.StringgetID()

  return AZMessage.ID_AZ_SESSION_REQUEST;  
public byte[]getIDBytes()

  return AZMessage.ID_AZ_SESSION_REQUEST_BYTES;  
public intgetLength()

  return length;  
public intgetPieceNumber()

  return piece_number;  
public intgetPieceOffset()

  return piece_offset;  
public intgetSessionID()

  return session_id;  
public intgetType()

  return Message.TYPE_PROTOCOL_PAYLOAD;  
public bytegetUnchokeID()

  return unchoke_id;  
public bytegetVersion()

 return version; 
public inthashCode()

  return hashcode;