00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_NET_DATAGRAMPACKET_H_
00019 #define _DECAF_NET_DATAGRAMPACKET_H_
00020
00021 #include <decaf/util/Config.h>
00022
00023 #include <decaf/net/Inet4Address.h>
00024 #include <decaf/net/SocketAddress.h>
00025
00026 #include <decaf/lang/exceptions/NullPointerException.h>
00027 #include <decaf/lang/exceptions/IndexOutOfBoundsException.h>
00028 #include <decaf/lang/exceptions/IllegalArgumentException.h>
00029
00030 #include <decaf/util/concurrent/Mutex.h>
00031
00032 namespace decaf {
00033 namespace net {
00034
00043 class DatagramPacket {
00044 private:
00045
00046 unsigned char* buffer;
00047 int size;
00048 int offset;
00049 int length;
00050
00051 InetAddress* address;
00052 int port;
00053
00054 mutable decaf::util::concurrent::Mutex mutex;
00055
00056 private:
00057
00058 DatagramPacket( const DatagramPacket& );
00059 DatagramPacket& operator= ( const DatagramPacket& );
00060
00061 public:
00062
00076 DatagramPacket( unsigned char* bytes, int size, int length );
00077
00094 DatagramPacket( unsigned char* bytes, int size, int offset, int length );
00095
00117 DatagramPacket( unsigned char* bytes, int size, int offset, int length, const InetAddress& address, int port );
00118
00137 DatagramPacket( unsigned char* bytes, int size, int length, const InetAddress& address, int port );
00138
00155 DatagramPacket( unsigned char* bytes, int size, int length, const SocketAddress& address );
00156
00175 DatagramPacket( unsigned char* bytes, int size, int offset, int length, const SocketAddress& address );
00176
00177 virtual ~DatagramPacket();
00178
00179 public:
00180
00184 InetAddress* getAddress() const;
00185
00192 void setAddress( const InetAddress& address );
00193
00200 SocketAddress* getSocketAddress() const;
00201
00211 void setSocketAddress( const SocketAddress& address );
00212
00216 int getPort() const;
00217
00226 void setPort( int port );
00227
00231 int getOffset() const;
00232
00242 void setOffset( int offset );
00243
00247 int getLength() const;
00248
00260 void setLength( int length );
00261
00266 unsigned char* getData() const;
00267
00271 int getSize() const;
00272
00284 void setData( unsigned char* buffer, int size );
00285
00301 void setData( unsigned char* buffer, int size, int offset, int length );
00302
00303 };
00304
00305 }}
00306
00307 #endif