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
00027 namespace NSPR
00028 {
00029
00036 class UDP : public Socket
00037 {
00038 protected:
00039
00040 UDP( uint32_t interface, uint16_t localport, uint16_t remoteport );
00041
00042 UDP( const std::string& interface, uint16_t localport, uint16_t remoteport );
00043
00044 public:
00045 IDIOSKOPOS_OBJECT( Conexus::NSPR::UDP );
00046
00047 typedef ConexusPointer<UDP> pointer;
00048
00049 static UDP::pointer create( uint16_t localport = 0, uint16_t remoteport = 0 );
00050
00051 static UDP::pointer create( uint32_t interface, uint16_t localport, uint16_t remoteport );
00052
00053 static UDP::pointer create( const std::string& interface, uint16_t localport=0, uint16_t remoteport=0 );
00054
00055 virtual ~UDP() throw();
00056
00057 virtual void open() throw ( open_exception );
00058
00059 virtual void bind() throw ( bind_exception );
00060
00061 virtual void bind( Conexus::Address& a ) throw ( bind_exception );
00062
00063 virtual void close() throw ( close_exception );
00064
00069
00070
00077
00078
00079 virtual void connect() throw ( connect_exception );
00080
00081 virtual void connect( Address& a ) throw ( connect_exception )
00082 {
00083 Socket::connect( a );
00084 }
00085
00103 virtual void set_write_without_connect( bool value = true );
00104
00105
00106 virtual bool write_without_connect() const;
00107
00108 virtual bool multicast_auto_join() const;
00109
00110 virtual void set_multicast_auto_join( bool value = true );
00111
00115 virtual int multicast_hops();
00116
00120 virtual void set_multicast_hops( int hops );
00121
00125 virtual bool multicast_loop();
00126
00130 virtual void set_multicast_loop( bool loop );
00131
00132 protected:
00133 bool m_write_without_connect;
00134 bool m_multicast_auto_join;
00135 bool m_multicast_joined;
00136
00137
00139 virtual void join();
00140
00142 virtual void leave();
00143
00144 virtual ssize_t write_data(long int timeout, Data::const_pointer data) throw (write_exception);
00145
00146 };
00147
00148 }
00149
00150 }
00151
00152 #endif