/* * Created on 21-Jan-2005 * Created by Paul Gardner * Copyright (C) 2004, 2005, 2006 Aelitis, All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * AELITIS, SAS au capital de 46,603.30 euros * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France. * */ package com.aelitis.azureus.core.dht.transport.udp.impl; import java.util.List; import java.util.Map; import com.aelitis.azureus.core.dht.DHT; import com.aelitis.azureus.core.dht.transport.*; import com.aelitis.azureus.core.dht.transport.udp.*; /** * @author parg * */ public class Test implements DHTTransportRequestHandler { public static void main( String[] args ) { new Test(); } protected Test() { try{ DHTTransport udp1 = DHTTransportFactory.createUDP( DHTTransportUDP.PROTOCOL_VERSION_MAIN, DHT.NW_MAIN, false, null, null, 6881, 5, 3, 5000, 50, 25, false, false, com.aelitis.azureus.core.dht.impl.Test.getLogger()); udp1.setRequestHandler( this ); DHTTransport udp2 = DHTTransportFactory.createUDP( DHTTransportUDP.PROTOCOL_VERSION_MAIN, DHT.NW_MAIN, false, null, null, 6882, 5, 3, 5000, 50, 25, false, false, com.aelitis.azureus.core.dht.impl.Test.getLogger()); udp2.setRequestHandler( this ); final DHTTransportUDPContact c1 = (DHTTransportUDPContact)udp1.getLocalContact(); for (int i=0;i<10;i++){ final int f_i = i; c1.sendPing( new DHTTransportReplyHandlerAdapter() { public void pingReply( DHTTransportContact contact ) { System.out.println( "ping reply: " + f_i ); } public void failed( DHTTransportContact contact, Throwable error ) { System.out.println( "ping failed" ); } }); } c1.sendStore( new DHTTransportReplyHandlerAdapter() { public void storeReply( DHTTransportContact contact, byte[] types ) { System.out.println( "store reply" ); } public void failed( DHTTransportContact contact, Throwable error ) { System.out.println( "store failed" ); } }, new byte[][]{ new byte[23] }, new DHTTransportValue[][]{{ new DHTTransportValue() { public boolean isLocal() { return( false ); } public long getCreationTime() { return( 2 ); } public byte[] getValue() { return( "sdsd".getBytes()); } public int getVersion() { return( 0 ); } public DHTTransportContact getOriginator() { return( c1 ); } public int getFlags() { return(0); } public int getLifeTimeHours() { return 0; } public byte getReplicationControl() { return 0; } public byte getReplicationFactor() { return 0; } public byte getReplicationFrequencyHours() { return 0; } public String getString() { return( new String(getValue())); } } }}, false ); c1.sendFindNode( new DHTTransportReplyHandlerAdapter() { public void findNodeReply( DHTTransportContact contact, DHTTransportContact[] contacts ) { System.out.println( "findNode reply" ); } public void failed( DHTTransportContact contact, Throwable e ) { System.out.println( "findNode failed" ); } }, new byte[12]); System.out.println( "sending find value" ); c1.sendFindValue( new DHTTransportReplyHandlerAdapter() { public void findValueReply( DHTTransportContact contact, DHTTransportContact[] contacts ) { System.out.println( "findValue contacts reply" ); } public void findValueReply( DHTTransportContact contact, DHTTransportValue[] values, byte diversification_type, boolean more_to_come ) { System.out.println( "findValue value reply" ); } public void failed( DHTTransportContact contact, Throwable error ) { System.out.println( "findValue failed" ); } }, new byte[3], 1, (byte)0 ); System.out.println( "sending complete" ); Thread.sleep(1000000); }catch( Throwable e ){ e.printStackTrace(); } } public void pingRequest( DHTTransportContact contact ) { System.out.println( "TransportHandler: ping" ); } public void keyBlockRequest( DHTTransportContact contact, byte[] key_block_request, byte[] key_block_signature ) { System.out.println( "TransportHandler: keyBlockRequest" ); } public DHTTransportStoreReply storeRequest( DHTTransportContact contact, final byte[][] keys, DHTTransportValue[][] value_sets ) { System.out.println( "TransportHandler: store" ); return( new DHTTransportStoreReply() { public byte[] getDiversificationTypes() { return( new byte[keys.length] ); } public boolean blocked() { return( false ); } public byte[] getBlockRequest() { return( null ); } public byte[] getBlockSignature() { return( null ); } }); } public DHTTransportQueryStoreReply queryStoreRequest( DHTTransportContact contact, int headerLen, List<Object[]> keys) { System.out.println( "TransportHandler: queryStore" ); return null; } public DHTTransportContact[] findNodeRequest( DHTTransportContact contact, byte[] id ) { System.out.println( "TransportHandler: findNode" ); return(new DHTTransportContact[]{ contact }); } public DHTTransportFindValueReply findValueRequest( final DHTTransportContact contact, byte[] key, int max_values, byte flags ) { System.out.println( "TransportHandler: findValue" ); return( new DHTTransportFindValueReply() { public boolean hit() { return( false ); } public byte getDiversificationType() { return( DHT.DT_NONE ); } public DHTTransportValue[] getValues() { return( null ); } public DHTTransportContact[] getContacts() { return( new DHTTransportContact[]{ contact } ); } public boolean blocked() { return( false ); } public byte[] getBlockedKey() { return( null ); } public byte[] getBlockedSignature() { return( null ); } }); } public void contactImported( DHTTransportContact contact ) { } public void contactRemoved( DHTTransportContact contact ) { } public int getTransportEstimatedDHTSize() { return(0); } public void setTransportEstimatedDHTSize( int size ) { } public DHTTransportFullStats statsRequest( DHTTransportContact contact ) { return( null ); } }