@Override protected String getName() { return( "Write: " + pieceNumber + ",off=" + offset +",len=" + buffer.remaining( DirectByteBuffer.SS_DW )); }
public BTPiece( int piece_number, int piece_offset, DirectByteBuffer data, byte version ) { this.piece_number = piece_number; this.piece_offset = piece_offset; this.piece_length = data == null ? 0 : data.remaining( DirectByteBuffer.SS_MSG ); buffer[1] = data; this.version = version; }
protected DiskAccessRequestImpl( CacheFile _file, long _offset, DirectByteBuffer _buffer, DiskAccessRequestListener _listener, short _op, short _cache_policy ) { file = _file; offset = _offset; buffer = _buffer; listener = _listener; op = _op; cache_policy = _cache_policy; size = buffer.remaining( DirectByteBuffer.SS_FILE ); }
@Override public DirectByteBuffer[] getData() { if( buffer == null ) { Map payload_map = new HashMap(); payload_map.put( "infohash", infohash ); insertPeers( "added", payload_map, peers_added ); insertPeers( "dropped", payload_map, peers_dropped ); buffer = MessagingUtil.convertPayloadToBencodedByteStream( payload_map, DirectByteBuffer.AL_MSG_AZ_PEX ); if( buffer.remaining( bss ) > 2000 ) System.out.println( "Generated AZPeerExchange size = " +buffer.remaining( bss )+ " bytes" ); } return new DirectByteBuffer[]{ buffer }; }
@Override public boolean checkBlockConsistencyForWrite( String originator, int pieceNumber, int offset, DirectByteBuffer data ) { long pos = pieceNumber * (long)piece_mapper.getPieceLength() + offset + data.remaining( DirectByteBuffer.AL_EXTERNAL ); return( pos <= piece_mapper.getTotalLength()); }
@Override public Message deserialize( DirectByteBuffer data, byte version ) throws MessageException { byte[] dict_bytes = new byte[ Math.min( 128, data.remaining( DirectByteBuffer.SS_MSG )) ]; data.get( DirectByteBuffer.SS_MSG, dict_bytes ); if ( dict_bytes.length != 1 ){ throw( new MessageException( "decode failed: incorrect length" )); } boolean ulo = dict_bytes[0] != 0; return( new UTUploadOnly( ulo, version )); }
@Override public Message deserialize(DirectByteBuffer data, byte version ) throws MessageException { if( data.remaining( bss ) > 2000 ) System.out.println( "Received PEX msg byte size = " +data.remaining( bss ) ); Map root = MessagingUtil.convertBencodedByteStreamToPayload( data, 10, getID() ); byte[] hash = (byte[])root.get( "infohash" ); if( hash == null ) throw new MessageException( "hash == null" ); if( hash.length != 20 ) throw new MessageException( "hash.length != 20: " +hash.length ); PeerItem[] added = extractPeers( "added", root ); PeerItem[] dropped = extractPeers( "dropped", root ); if( added == null && dropped == null ) throw new MessageException( "[" +getID()+ "] received exchange message without any adds or drops" ); return new AZPeerExchange( hash, added, dropped, version ); }
@Override public void write( DirectByteBuffer buffer, long position ) throws CacheFileManagerException { int write_length = buffer.remaining(DirectByteBuffer.SS_CACHE); try{ base_file.write( buffer, position ); manager.fileBytesWritten( write_length ); bytes_written += write_length; }catch( FMFileManagerException e ){ manager.rethrow(this,e); } }
@Override public Message deserialize(DirectByteBuffer data, byte version) throws MessageException { if (data == null) throw new MessageException("[" +getID() + "] decode error: data == null"); if (data.remaining(DirectByteBuffer.SS_MSG) != 2) throw new MessageException("[" +getID() + "] decode error: payload.remaining[" +data.remaining( DirectByteBuffer.SS_MSG )+ "] != 2"); short s_port = data.getShort(DirectByteBuffer.SS_MSG); data.returnToPool(); return new BTDHTPort(0xFFFF & s_port); }
@Override public void write( DirectByteBuffer buffer, long position ) throws CacheFileManagerException { int write_length = buffer.remaining(DirectByteBuffer.SS_CACHE); try{ file.write( buffer, position ); manager.fileBytesWritten( write_length ); bytes_written += write_length; }catch( FMFileManagerException e ){ manager.rethrow(this,e); } }
@Override public void read( DirectByteBuffer buffer, long position, short policy ) throws CacheFileManagerException { int read_length = buffer.remaining(DirectByteBuffer.SS_CACHE); try{ file.read( buffer, position ); manager.fileBytesRead( read_length ); bytes_read += read_length; }catch( FMFileManagerException e ){ manager.rethrow(this,e); } }
@Override public Message deserialize(DirectByteBuffer data, byte version ) throws MessageException { if( data != null && data.hasRemaining( DirectByteBuffer.SS_MSG ) ) { throw new MessageException( "[" +getID() + "] decode error: payload not empty [" +data.remaining(DirectByteBuffer.SS_MSG)+ "]" ); } if( data != null ) data.returnToPool(); return new BTHaveNone(version); }
@Override public Message deserialize(DirectByteBuffer data, byte version ) throws MessageException { if( data != null && data.hasRemaining( DirectByteBuffer.SS_MSG ) ) { throw new MessageException( "[" +getID() + "] decode error: payload not empty [" +data.remaining(DirectByteBuffer.SS_MSG)+ "]" ); } if( data != null ) data.returnToPool(); return new BTChoke(version); }
@Override public Message deserialize(DirectByteBuffer data, byte version ) throws MessageException { if( data != null && data.hasRemaining( DirectByteBuffer.SS_MSG ) ) { throw new MessageException( "[" +getID() + "] decode error: payload not empty [" +data.remaining(DirectByteBuffer.SS_MSG)+ "]" ); } if( data != null ) data.returnToPool(); return new BTHaveAll(version); }
@Override public Message deserialize(DirectByteBuffer data, byte version ) throws MessageException { if( data == null ) { throw new MessageException( "[" +getID() +"] decode error: data == null" ); } if( data.remaining( DirectByteBuffer.SS_MSG ) != 4 ) { throw new MessageException( "[" +getID() + "] decode error: payload.remaining[" +data.remaining( DirectByteBuffer.SS_MSG )+ "] != 12" ); } int num = data.getInt( DirectByteBuffer.SS_MSG ); if( num < 0 ) { throw new MessageException( "[" +getID() + "] decode error: num < 0" ); } data.returnToPool(); return new BTAllowedFast( num, version ); }
@Override public void send( PooledByteBuffer message ) throws MessageException { int size = ((PooledByteBufferImpl)message).getBuffer().remaining( DirectByteBuffer.SS_EXTERNAL ); if ( size > getMaximumMessageSize()){ throw( new MessageException( "Message is too large: supplied is " + size + ", maximum is " + getMaximumMessageSize())); } delegate.send( message ); }
@Override public Message deserialize(DirectByteBuffer data, byte version ) throws MessageException { if( data == null ) { throw new MessageException( "[" +getID() + "] decode error: data == null" ); } if( data.remaining( DirectByteBuffer.SS_MSG ) != 4 ) { throw new MessageException( "[" +getID() + "] decode error: payload.remaining[" +data.remaining( DirectByteBuffer.SS_MSG )+ "] != 4" ); } int number = data.getInt( DirectByteBuffer.SS_MSG ); if( number < 0 ) { throw new MessageException( "[" +getID() + "] decode error: number < 0" ); } data.returnToPool(); return new BTHave( number, version ); }
@Override public Message deserialize(DirectByteBuffer data, byte version ) throws MessageException { if( data == null ) { throw new MessageException( "[" +getID() +"] decode error: data == null" ); } if( data.remaining( DirectByteBuffer.SS_MSG ) != 4 ) { throw new MessageException( "[" +getID() + "] decode error: payload.remaining[" +data.remaining( DirectByteBuffer.SS_MSG )+ "] != 12" ); } int num = data.getInt( DirectByteBuffer.SS_MSG ); if( num < 0 ) { throw new MessageException( "[" +getID() + "] decode error: num < 0" ); } data.returnToPool(); return new BTSuggestPiece( num, version ); }
@Override public Message deserialize(DirectByteBuffer data, byte version) throws MessageException { 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"); } // Try decoding the data now. Map res_data_dict = MessagingUtil.convertBencodedByteStreamToPayload(data, 1, getID()); LTHandshake result = new LTHandshake(res_data_dict, this.version); return result; }
private static final class QueueEntry { public QueueEntry(PEPeerTransportProtocol trans) { transport = trans; } final PEPeerTransportProtocol transport; final long addTime = SystemTime.getMonotonousTime(); }