1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // Copyright (c) 2011 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_SOCKET_UDP_CLIENT_SOCKET_H_
- #define NET_SOCKET_UDP_CLIENT_SOCKET_H_
- #include <stdint.h>
- #include "net/base/net_export.h"
- #include "net/socket/datagram_client_socket.h"
- #include "net/socket/udp_socket.h"
- #include "net/traffic_annotation/network_traffic_annotation.h"
- namespace net {
- class NetLog;
- struct NetLogSource;
- // A client socket that uses UDP as the transport layer.
- class NET_EXPORT_PRIVATE UDPClientSocket : public DatagramClientSocket {
- public:
- // If `network` is specified, the socket will be bound to it. All data traffic
- // on the socket will be sent and received via `network`. Communication using
- // this socket will fail if `network` disconnects.
- UDPClientSocket(
- DatagramSocket::BindType bind_type,
- net::NetLog* net_log,
- const net::NetLogSource& source,
- handles::NetworkHandle network = handles::kInvalidNetworkHandle);
- UDPClientSocket(const UDPClientSocket&) = delete;
- UDPClientSocket& operator=(const UDPClientSocket&) = delete;
- ~UDPClientSocket() override;
- // DatagramClientSocket implementation.
- int Connect(const IPEndPoint& address) override;
- int ConnectUsingNetwork(handles::NetworkHandle network,
- const IPEndPoint& address) override;
- int ConnectUsingDefaultNetwork(const IPEndPoint& address) override;
- handles::NetworkHandle GetBoundNetwork() const override;
- void ApplySocketTag(const SocketTag& tag) override;
- int Read(IOBuffer* buf,
- int buf_len,
- CompletionOnceCallback callback) override;
- int Write(IOBuffer* buf,
- int buf_len,
- CompletionOnceCallback callback,
- const NetworkTrafficAnnotationTag& traffic_annotation) override;
- void Close() override;
- int GetPeerAddress(IPEndPoint* address) const override;
- int GetLocalAddress(IPEndPoint* address) const override;
- // Switch to use non-blocking IO. Must be called right after construction and
- // before other calls.
- void UseNonBlockingIO() override;
- int SetReceiveBufferSize(int32_t size) override;
- int SetSendBufferSize(int32_t size) override;
- int SetDoNotFragment() override;
- void SetMsgConfirm(bool confirm) override;
- const NetLogWithSource& NetLog() const override;
- void EnableRecvOptimization() override;
- int SetMulticastInterface(uint32_t interface_index) override;
- void SetIOSNetworkServiceType(int ios_network_service_type) override;
- private:
- UDPSocket socket_;
- // The network the socket is currently bound to.
- handles::NetworkHandle network_;
- handles::NetworkHandle connect_using_network_;
- };
- } // namespace net
- #endif // NET_SOCKET_UDP_CLIENT_SOCKET_H_
|