| Index: net/udp/udp_socket_libevent.h
|
| diff --git a/net/udp/udp_socket_libevent.h b/net/udp/udp_socket_libevent.h
|
| index 2ac564debc533752d038b81a9b76312ecf0cc920..a434bb96a06d47dd959d5fa43b6919fb030814bf 100644
|
| --- a/net/udp/udp_socket_libevent.h
|
| +++ b/net/udp/udp_socket_libevent.h
|
| @@ -9,6 +9,7 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/threading/non_thread_safe.h"
|
| +#include "net/base/address_family.h"
|
| #include "net/base/completion_callback.h"
|
| #include "net/base/io_buffer.h"
|
| #include "net/base/ip_endpoint.h"
|
| @@ -28,22 +29,28 @@ class NET_EXPORT UDPSocketLibevent : public base::NonThreadSafe {
|
| const net::NetLog::Source& source);
|
| virtual ~UDPSocketLibevent();
|
|
|
| - // Connect the socket to connect with a certain |address|.
|
| + // Opens the socket.
|
| + // Returns a net error code.
|
| + int Open(AddressFamily address_family);
|
| +
|
| + // Connects the socket to connect with a certain |address|.
|
| + // Should be called after Open().
|
| // Returns a net error code.
|
| int Connect(const IPEndPoint& address);
|
|
|
| - // Bind the address/port for this socket to |address|. This is generally
|
| - // only used on a server.
|
| + // Binds the address/port for this socket to |address|. This is generally
|
| + // only used on a server. Should be called after Open().
|
| // Returns a net error code.
|
| int Bind(const IPEndPoint& address);
|
|
|
| - // Close the socket.
|
| + // Closes the socket.
|
| + // TODO(rvargas, hidehiko): Disallow re-Open() after Close().
|
| void Close();
|
|
|
| - // Copy the remote udp address into |address| and return a network error code.
|
| + // Copies the remote udp address into |address| and returns a net error code.
|
| int GetPeerAddress(IPEndPoint* address) const;
|
|
|
| - // Copy the local udp address into |address| and return a network error code.
|
| + // Copies the local udp address into |address| and returns a net error code.
|
| // (similar to getsockname)
|
| int GetLocalAddress(IPEndPoint* address) const;
|
|
|
| @@ -51,17 +58,17 @@ class NET_EXPORT UDPSocketLibevent : public base::NonThreadSafe {
|
| // Multiple outstanding read requests are not supported.
|
| // Full duplex mode (reading and writing at the same time) is supported
|
|
|
| - // Read from the socket.
|
| + // Reads from the socket.
|
| // Only usable from the client-side of a UDP socket, after the socket
|
| // has been connected.
|
| int Read(IOBuffer* buf, int buf_len, const CompletionCallback& callback);
|
|
|
| - // Write to the socket.
|
| + // Writes to the socket.
|
| // Only usable from the client-side of a UDP socket, after the socket
|
| // has been connected.
|
| int Write(IOBuffer* buf, int buf_len, const CompletionCallback& callback);
|
|
|
| - // Read from a socket and receive sender address information.
|
| + // Reads from a socket and receive sender address information.
|
| // |buf| is the buffer to read data into.
|
| // |buf_len| is the maximum amount of data to read.
|
| // |address| is a buffer provided by the caller for receiving the sender
|
| @@ -79,7 +86,7 @@ class NET_EXPORT UDPSocketLibevent : public base::NonThreadSafe {
|
| IPEndPoint* address,
|
| const CompletionCallback& callback);
|
|
|
| - // Send to a socket with a particular destination.
|
| + // Sends to a socket with a particular destination.
|
| // |buf| is the buffer to send
|
| // |buf_len| is the number of bytes to send
|
| // |address| is the recipient address.
|
| @@ -93,60 +100,63 @@ class NET_EXPORT UDPSocketLibevent : public base::NonThreadSafe {
|
| const IPEndPoint& address,
|
| const CompletionCallback& callback);
|
|
|
| - // Set the receive buffer size (in bytes) for the socket.
|
| + // Sets the receive buffer size (in bytes) for the socket.
|
| + // Returns a net error code.
|
| int SetReceiveBufferSize(int32 size);
|
|
|
| - // Set the send buffer size (in bytes) for the socket.
|
| + // Sets the send buffer size (in bytes) for the socket.
|
| + // Returns a net error code.
|
| int SetSendBufferSize(int32 size);
|
|
|
| // Returns true if the socket is already connected or bound.
|
| - bool is_connected() const { return socket_ != kInvalidSocket; }
|
| + bool is_connected() const { return is_connected_; }
|
|
|
| const BoundNetLog& NetLog() const { return net_log_; }
|
|
|
| // Sets corresponding flags in |socket_options_| to allow the socket
|
| // to share the local address to which the socket will be bound with
|
| - // other processes. Should be called before Bind().
|
| - void AllowAddressReuse();
|
| + // other processes. Should be called between Open() and Bind().
|
| + // Returns a net error code.
|
| + int AllowAddressReuse();
|
|
|
| - // Sets corresponding flags in |socket_options_| to allow sending
|
| - // and receiving packets to and from broadcast addresses. Should be
|
| - // called before Bind().
|
| - void AllowBroadcast();
|
| + // Sets corresponding flags in |socket_options_| to allow or disallow sending
|
| + // and receiving packets to and from broadcast addresses.
|
| + // Returns a net error code.
|
| + int SetBroadcast(bool broadcast);
|
|
|
| - // Join the multicast group.
|
| + // Joins the multicast group.
|
| // |group_address| is the group address to join, could be either
|
| // an IPv4 or IPv6 address.
|
| - // Return a network error code.
|
| + // Returns a net error code.
|
| int JoinGroup(const IPAddressNumber& group_address) const;
|
|
|
| - // Leave the multicast group.
|
| + // Leaves the multicast group.
|
| // |group_address| is the group address to leave, could be either
|
| // an IPv4 or IPv6 address. If the socket hasn't joined the group,
|
| // it will be ignored.
|
| // It's optional to leave the multicast group before destroying
|
| // the socket. It will be done by the OS.
|
| - // Return a network error code.
|
| + // Returns a net error code.
|
| int LeaveGroup(const IPAddressNumber& group_address) const;
|
|
|
| - // Set interface to use for multicast. If |interface_index| set to 0, default
|
| - // interface is used.
|
| + // Sets interface to use for multicast. If |interface_index| set to 0,
|
| + // default interface is used.
|
| // Should be called before Bind().
|
| - // Returns a network error code.
|
| + // Returns a net error code.
|
| int SetMulticastInterface(uint32 interface_index);
|
|
|
| - // Set the time-to-live option for UDP packets sent to the multicast
|
| + // Sets the time-to-live option for UDP packets sent to the multicast
|
| // group address. The default value of this option is 1.
|
| // Cannot be negative or more than 255.
|
| // Should be called before Bind().
|
| - // Return a network error code.
|
| + // Returns a net error code.
|
| int SetMulticastTimeToLive(int time_to_live);
|
|
|
| - // Set the loopback flag for UDP socket. If this flag is true, the host
|
| + // Sets the loopback flag for UDP socket. If this flag is true, the host
|
| // will receive packets sent to the joined group from itself.
|
| // The default value of this option is true.
|
| // Should be called before Bind().
|
| - // Return a network error code.
|
| + // Returns a net error code.
|
| //
|
| // Note: the behavior of |SetMulticastLoopbackMode| is slightly
|
| // different between Windows and Unix-like systems. The inconsistency only
|
| @@ -158,9 +168,9 @@ class NET_EXPORT UDPSocketLibevent : public base::NonThreadSafe {
|
| // other applications on the same host. See MSDN: http://goo.gl/6vqbj
|
| int SetMulticastLoopbackMode(bool loopback);
|
|
|
| - // Set the differentiated services flags on outgoing packets. May not
|
| + // Sets the differentiated services flags on outgoing packets. May not
|
| // do anything on some platforms.
|
| - // Return a network error code.
|
| + // Returns a net error code.
|
| int SetDiffServCodePoint(DiffServCodePoint dscp);
|
|
|
| // Resets the thread to be used for thread-safety checks.
|
| @@ -168,9 +178,7 @@ class NET_EXPORT UDPSocketLibevent : public base::NonThreadSafe {
|
|
|
| private:
|
| enum SocketOptions {
|
| - SOCKET_OPTION_REUSE_ADDRESS = 1 << 0,
|
| - SOCKET_OPTION_BROADCAST = 1 << 1,
|
| - SOCKET_OPTION_MULTICAST_LOOP = 1 << 2
|
| + SOCKET_OPTION_MULTICAST_LOOP = 1 << 0
|
| };
|
|
|
| class ReadWatcher : public base::MessageLoopForIO::Watcher {
|
| @@ -218,9 +226,6 @@ class NET_EXPORT UDPSocketLibevent : public base::NonThreadSafe {
|
| const sockaddr* addr) const;
|
| void LogWrite(int result, const char* bytes, const IPEndPoint* address) const;
|
|
|
| - // Returns the OS error code (or 0 on success).
|
| - int CreateSocket(int addr_family);
|
| -
|
| // Same as SendTo(), except that address is passed by pointer
|
| // instead of by reference. It is called from Write() with |address|
|
| // set to NULL.
|
| @@ -235,13 +240,14 @@ class NET_EXPORT UDPSocketLibevent : public base::NonThreadSafe {
|
|
|
| // Applies |socket_options_| to |socket_|. Should be called before
|
| // Bind().
|
| - int SetSocketOptions();
|
| + int SetMulticastOptions();
|
| int DoBind(const IPEndPoint& address);
|
| // Binds to a random port on |address|.
|
| int RandomBind(const IPAddressNumber& address);
|
|
|
| int socket_;
|
| int addr_family_;
|
| + bool is_connected_;
|
|
|
| // Bitwise-or'd combination of SocketOptions. Specifies the set of
|
| // options that should be applied to |socket_| before Bind().
|
| @@ -250,7 +256,7 @@ class NET_EXPORT UDPSocketLibevent : public base::NonThreadSafe {
|
| // Multicast interface.
|
| uint32 multicast_interface_;
|
|
|
| - // Multicast socket options cached for SetSocketOption.
|
| + // Multicast socket options cached for SetMulticastOption.
|
| // Cannot be used after Bind().
|
| int multicast_time_to_live_;
|
|
|
|
|