/* * File : PRUDPPacketReplyConnect.java * Created : 20-Jan-2004 * By : parg * * Azureus - a Java Bittorrent client * * 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. * * 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 ( see the LICENSE file ). * * 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 */ package com.aelitis.azureus.core.dht.transport.udp.impl; /** * @author parg * */ import java.io.*; import java.net.InetSocketAddress; import com.aelitis.azureus.core.dht.transport.DHTTransportContact; import com.aelitis.azureus.core.dht.transport.DHTTransportFullStats; import com.aelitis.azureus.core.dht.transport.udp.DHTTransportUDP; import com.aelitis.azureus.core.dht.transport.udp.impl.packethandler.DHTUDPPacketNetworkHandler; public class DHTUDPPacketReplyStats extends DHTUDPPacketReply { private int stats_type = DHTUDPPacketRequestStats.STATS_TYPE_ORIGINAL; private DHTTransportFullStats original_stats; private byte[] new_stats; public DHTUDPPacketReplyStats( DHTTransportUDPImpl transport, int trans_id, long conn_id, DHTTransportContact local_contact, DHTTransportContact remote_contact ) { super( transport, DHTUDPPacketHelper.ACT_REPLY_STATS, trans_id, conn_id, local_contact, remote_contact ); } protected DHTUDPPacketReplyStats( DHTUDPPacketNetworkHandler network_handler, InetSocketAddress originator, DataInputStream is, int trans_id ) throws IOException { super( network_handler, originator, is, DHTUDPPacketHelper.ACT_REPLY_STATS, trans_id ); if ( getProtocolVersion() >= DHTTransportUDP.PROTOCOL_VERSION_GENERIC_NETPOS ){ stats_type = is.readInt(); if ( stats_type == DHTUDPPacketRequestStats.STATS_TYPE_ORIGINAL ){ original_stats = DHTUDPUtils.deserialiseStats( getProtocolVersion(), is ); }else{ new_stats = DHTUDPUtils.deserialiseByteArray( is, 65535 ); } }else{ original_stats = DHTUDPUtils.deserialiseStats( getProtocolVersion(), is ); } } public int getStatsType() { return( stats_type ); } public DHTTransportFullStats getOriginalStats() { return( original_stats ); } public void setOriginalStats( DHTTransportFullStats _stats ) { stats_type = DHTUDPPacketRequestStats.STATS_TYPE_ORIGINAL; original_stats = _stats; } public byte[] getNewStats() { return( new_stats ); } public void setNewStats( byte[] _stats, int _stats_type ) { stats_type = _stats_type; new_stats = _stats; } public void serialise( DataOutputStream os ) throws IOException { super.serialise(os); if ( getProtocolVersion() >= DHTTransportUDP.PROTOCOL_VERSION_GENERIC_NETPOS ){ os.writeInt( stats_type ); if ( stats_type == DHTUDPPacketRequestStats.STATS_TYPE_ORIGINAL ){ DHTUDPUtils.serialiseStats( getProtocolVersion(), os, original_stats ); }else{ DHTUDPUtils.serialiseByteArray( os, new_stats, 65535 ); } }else{ DHTUDPUtils.serialiseStats( getProtocolVersion(), os, original_stats ); } } }