00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUSNSPRUDP_H
00020 #define CONEXUSNSPRUDP_H
00021
00022 #include <conexus/nspr_socket.h>
00023
00024 namespace Conexus {
00025
00026 namespace NSPR {
00027
00034 class UDP : public Socket {
00035 public:
00036 typedef ConexusPointer<UDP> pointer;
00037
00038 UDP( uint16_t localport = 0, uint16_t remoteport = 0 );
00039
00040 static UDP::pointer create( uint16_t localport = 0, uint16_t remoteport = 0 );
00041
00042 virtual ~UDP() throw();
00043
00044 virtual void open() throw (open_exception);
00045
00046 virtual void bind() throw ( bind_exception );
00047
00048 virtual void bind( Conexus::Address& a ) throw ( bind_exception );
00049
00050 virtual void close() throw ( close_exception );
00051
00056
00057
00064
00065
00066 virtual void connect() throw ( connect_exception );
00067
00068 virtual void connect( Address& a ) throw ( connect_exception ) {
00069 Socket::connect( a );
00070 }
00071
00089 virtual void set_write_without_connect( bool value = true );
00090
00091
00092 virtual bool write_without_connect() const;
00093
00094 virtual bool multicast_auto_join() const;
00095
00096 virtual void set_multicast_auto_join( bool value = true );
00097
00101 virtual int multicast_hops();
00102
00106 virtual void set_multicast_hops( int hops );
00107
00111 virtual bool multicast_loop();
00112
00116 virtual void set_multicast_loop( bool loop );
00117
00118 virtual const std::string& object_type() {
00119 static std::string s( "Conexus::NSPR::UDP" );
00120 return s;
00121 }
00122
00123 protected:
00124 bool m_write_without_connect;
00125 bool m_multicast_auto_join;
00126 bool m_multicast_joined;
00127
00128
00130 virtual void join();
00131
00133 virtual void leave();
00134
00135 virtual ssize_t write_data(long int timeout, Data::const_pointer data) throw (write_exception);
00136
00137 virtual Data::pointer read_data(long int timeout, size_t s = 0) throw (read_exception);
00138 };
00139
00140 }
00141
00142 }
00143
00144 #endif