| Index: net/udp/udp_socket_nacl.h
|
| diff --git a/net/udp/udp_socket_win.h b/net/udp/udp_socket_nacl.h
|
| similarity index 62%
|
| copy from net/udp/udp_socket_win.h
|
| copy to net/udp/udp_socket_nacl.h
|
| index 28b7d4ae6699e172df6adc0a486cc98f4ba8d230..80158dc9cb110e57443ffda3eb21ba55c2bd57de 100644
|
| --- a/net/udp/udp_socket_win.h
|
| +++ b/net/udp/udp_socket_nacl.h
|
| @@ -1,33 +1,32 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef NET_UDP_UDP_SOCKET_WIN_H_
|
| -#define NET_UDP_UDP_SOCKET_WIN_H_
|
| -
|
| -#include <winsock2.h>
|
| +#ifndef NET_UDP_UDP_SOCKET_NACL_H_
|
| +#define NET_UDP_UDP_SOCKET_NACL_H_
|
|
|
| #include "base/memory/ref_counted.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/message_loop/message_loop.h"
|
| #include "base/threading/non_thread_safe.h"
|
| -#include "base/win/object_watcher.h"
|
| #include "net/base/completion_callback.h"
|
| -#include "net/base/net_export.h"
|
| -#include "net/base/rand_callback.h"
|
| -#include "net/base/ip_endpoint.h"
|
| #include "net/base/io_buffer.h"
|
| +#include "net/base/ip_endpoint.h"
|
| +#include "net/base/net_export.h"
|
| #include "net/base/net_log.h"
|
| +#include "net/base/rand_callback.h"
|
| +#include "net/socket/socket_descriptor.h"
|
| #include "net/udp/datagram_socket.h"
|
|
|
| namespace net {
|
|
|
| -class NET_EXPORT UDPSocketWin : NON_EXPORTED_BASE(public base::NonThreadSafe) {
|
| +class NET_EXPORT UDPSocketNacl : public base::NonThreadSafe {
|
| public:
|
| - UDPSocketWin(DatagramSocket::BindType bind_type,
|
| - const RandIntCallback& rand_int_cb,
|
| - net::NetLog* net_log,
|
| - const net::NetLog::Source& source);
|
| - virtual ~UDPSocketWin();
|
| + UDPSocketNacl(DatagramSocket::BindType bind_type,
|
| + const RandIntCallback& rand_int_cb,
|
| + net::NetLog* net_log,
|
| + const net::NetLog::Source& source);
|
| + virtual ~UDPSocketNacl();
|
|
|
| // Connect the socket to connect with a certain |address|.
|
| // Returns a net error code.
|
| @@ -101,7 +100,7 @@ class NET_EXPORT UDPSocketWin : NON_EXPORTED_BASE(public base::NonThreadSafe) {
|
| bool SetSendBufferSize(int32 size);
|
|
|
| // Returns true if the socket is already connected or bound.
|
| - bool is_connected() const { return socket_ != INVALID_SOCKET; }
|
| + bool is_connected() const { return false; }
|
|
|
| const BoundNetLog& NetLog() const { return net_log_; }
|
|
|
| @@ -140,12 +139,14 @@ class NET_EXPORT UDPSocketWin : NON_EXPORTED_BASE(public base::NonThreadSafe) {
|
| // 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.
|
| int SetMulticastTimeToLive(int time_to_live);
|
|
|
| // Set 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.
|
| //
|
| // Note: the behavior of |SetMulticastLoopbackMode| is slightly
|
| // different between Windows and Unix-like systems. The inconsistency only
|
| @@ -159,105 +160,18 @@ class NET_EXPORT UDPSocketWin : NON_EXPORTED_BASE(public base::NonThreadSafe) {
|
|
|
| // Set the differentiated services flags on outgoing packets. May not
|
| // do anything on some platforms.
|
| + // Return a network error code.
|
| int SetDiffServCodePoint(DiffServCodePoint dscp);
|
|
|
| // Resets the thread to be used for thread-safety checks.
|
| void DetachFromThread();
|
|
|
| private:
|
| - enum SocketOptions {
|
| - SOCKET_OPTION_REUSE_ADDRESS = 1 << 0,
|
| - SOCKET_OPTION_BROADCAST = 1 << 1,
|
| - SOCKET_OPTION_MULTICAST_LOOP = 1 << 2
|
| - };
|
| -
|
| - class Core;
|
| -
|
| - void DoReadCallback(int rv);
|
| - void DoWriteCallback(int rv);
|
| - void DidCompleteRead();
|
| - void DidCompleteWrite();
|
| -
|
| - // Handles stats and logging. |result| is the number of bytes transferred, on
|
| - // success, or the net error code on failure. LogRead retrieves the address
|
| - // from |recv_addr_storage_|, while LogWrite takes it as an optional argument.
|
| - void LogRead(int result, const char* bytes) 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.
|
| - int SendToOrWrite(IOBuffer* buf,
|
| - int buf_len,
|
| - const IPEndPoint* address,
|
| - const CompletionCallback& callback);
|
| -
|
| - int InternalConnect(const IPEndPoint& address);
|
| - int InternalRecvFrom(IOBuffer* buf, int buf_len, IPEndPoint* address);
|
| - int InternalSendTo(IOBuffer* buf, int buf_len, const IPEndPoint* address);
|
| -
|
| - // Applies |socket_options_| to |socket_|. Should be called before
|
| - // Bind().
|
| - int SetSocketOptions();
|
| - int DoBind(const IPEndPoint& address);
|
| - // Binds to a random port on |address|.
|
| - int RandomBind(const IPAddressNumber& address);
|
| -
|
| - // Attempts to convert the data in |recv_addr_storage_| and |recv_addr_len_|
|
| - // to an IPEndPoint and writes it to |address|. Returns true on success.
|
| - bool ReceiveAddressToIPEndpoint(IPEndPoint* address) const;
|
| -
|
| - SOCKET socket_;
|
| - int addr_family_;
|
| -
|
| - // Bitwise-or'd combination of SocketOptions. Specifies the set of
|
| - // options that should be applied to |socket_| before Bind().
|
| - int socket_options_;
|
| -
|
| - // Multicast interface.
|
| - uint32 multicast_interface_;
|
| -
|
| - // Multicast socket options cached for SetSocketOption.
|
| - // Cannot be used after Bind().
|
| - int multicast_time_to_live_;
|
| -
|
| - // How to do source port binding, used only when UDPSocket is part of
|
| - // UDPClientSocket, since UDPServerSocket provides Bind.
|
| - DatagramSocket::BindType bind_type_;
|
| -
|
| - // PRNG function for generating port numbers.
|
| - RandIntCallback rand_int_cb_;
|
| -
|
| - // These are mutable since they're just cached copies to make
|
| - // GetPeerAddress/GetLocalAddress smarter.
|
| - mutable scoped_ptr<IPEndPoint> local_address_;
|
| - mutable scoped_ptr<IPEndPoint> remote_address_;
|
| -
|
| - // The core of the socket that can live longer than the socket itself. We pass
|
| - // resources to the Windows async IO functions and we have to make sure that
|
| - // they are not destroyed while the OS still references them.
|
| - scoped_refptr<Core> core_;
|
| -
|
| - IPEndPoint* recv_from_address_;
|
| -
|
| - // Cached copy of the current address we're sending to, if any. Used for
|
| - // logging.
|
| - scoped_ptr<IPEndPoint> send_to_address_;
|
| -
|
| - // External callback; called when read is complete.
|
| - CompletionCallback read_callback_;
|
| -
|
| - // External callback; called when write is complete.
|
| - CompletionCallback write_callback_;
|
| -
|
| BoundNetLog net_log_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(UDPSocketWin);
|
| + DISALLOW_COPY_AND_ASSIGN(UDPSocketNacl);
|
| };
|
|
|
| } // namespace net
|
|
|
| -#endif // NET_UDP_UDP_SOCKET_WIN_H_
|
| +#endif // NET_UDP_UDP_SOCKET_NACL_H_
|
|
|