X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsocket.h;h=a2cbae1a285ded03a645b377b3e2a85188213664;hb=f9cc7ff2e1e5af865220e9fbe16673619ecb78bd;hp=d807b7deda03faadfc0db80f7870cdc06a639579;hpb=3103b110c863c19a56cc176a173cc30ddf13afec;p=libs%2Fnet.git diff --git a/source/socket.h b/source/socket.h index d807b7d..a2cbae1 100644 --- a/source/socket.h +++ b/source/socket.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of libmspnet -Copyright © 2008 Mikkosoft Productions, Mikko Rasa -Distributed under the LGPL -*/ - #ifndef MSP_NET_SOCKET_H_ #define MSP_NET_SOCKET_H_ @@ -23,9 +16,9 @@ protected: #ifdef WIN32 IO::Handle event; #endif - bool connected; - SockAddr *local_addr; - SockAddr *peer_addr; + bool connected; + SockAddr *local_addr; + SockAddr *peer_addr; Socket(SocketHandle, const SockAddr &); Socket(Family, int, int); @@ -36,14 +29,25 @@ public: IO::Handle get_event_handle(); bool is_connected() const { return connected; } + + /** Associates the socket with a local address. There must be no existing + users of the address. */ void bind(const SockAddr &); - virtual int connect(const SockAddr &) =0; + + /** Connects to a remote address. Exact semantics depend on the socket + type. */ + virtual int connect(const SockAddr &) = 0; + + /// Closes the socket. Most operations will throw an exception after this. void close(); + + void set_timeout(const Time::TimeDelta &); const SockAddr &get_local_address() const; const SockAddr &get_peer_address() const; protected: void check_state(bool) const; - int get_option(int, int, void *, socklen_t *); + int set_option(int, int, const void *, socklen_t); + int get_option(int, int, void *, socklen_t *) const; unsigned do_write(const char *, unsigned); unsigned do_read(char *, unsigned); };