Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(312)

Unified Diff: net/socket/tcp_socket_libevent.h

Issue 348803003: Refactor tcp socket and unix domain socket. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert the behavior change of calling RecordFastOpenStatus() Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/socket/tcp_socket_libevent.h
diff --git a/net/socket/tcp_socket_libevent.h b/net/socket/tcp_socket_libevent.h
index 9ef235be85d408a07b91b9d430b948f4436cfb40..59978aa3bb3969b256bc73cd41166566121e3da9 100644
--- a/net/socket/tcp_socket_libevent.h
+++ b/net/socket/tcp_socket_libevent.h
@@ -8,30 +8,27 @@
#include "base/basictypes.h"
#include "base/callback.h"
#include "base/compiler_specific.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 "net/base/address_family.h"
#include "net/base/completion_callback.h"
#include "net/base/net_export.h"
#include "net/base/net_log.h"
-#include "net/socket/socket_descriptor.h"
namespace net {
class AddressList;
class IOBuffer;
class IPEndPoint;
+class SocketLibevent;
-class NET_EXPORT TCPSocketLibevent : public base::NonThreadSafe {
+class NET_EXPORT TCPSocketLibevent {
public:
TCPSocketLibevent(NetLog* net_log, const NetLog::Source& source);
virtual ~TCPSocketLibevent();
int Open(AddressFamily family);
- // Takes ownership of |socket|.
- int AdoptConnectedSocket(int socket, const IPEndPoint& peer_address);
+ // Takes ownership of |socket_fd|.
+ int AdoptConnectedSocket(int socket_fd, const IPEndPoint& peer_address);
int Bind(const IPEndPoint& address);
@@ -69,7 +66,7 @@ class NET_EXPORT TCPSocketLibevent : public base::NonThreadSafe {
void Close();
bool UsingTCPFastOpen() const;
- bool IsValid() const { return socket_ != kInvalidSocket; }
+ bool IsValid() const;
// Marks the start/end of a series of connect attempts for logging purpose.
//
@@ -136,76 +133,39 @@ class NET_EXPORT TCPSocketLibevent : public base::NonThreadSafe {
FAST_OPEN_MAX_VALUE
};
- // Watcher simply forwards notifications to Closure objects set via the
- // constructor.
- class Watcher: public base::MessageLoopForIO::Watcher {
- public:
- Watcher(const base::Closure& read_ready_callback,
- const base::Closure& write_ready_callback);
- virtual ~Watcher();
-
- // base::MessageLoopForIO::Watcher methods.
- virtual void OnFileCanReadWithoutBlocking(int fd) OVERRIDE;
- virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE;
-
- private:
- base::Closure read_ready_callback_;
- base::Closure write_ready_callback_;
-
- DISALLOW_COPY_AND_ASSIGN(Watcher);
- };
-
- int AcceptInternal(scoped_ptr<TCPSocketLibevent>* socket,
- IPEndPoint* address);
-
- int DoConnect();
- void DoConnectComplete(int result);
-
- void LogConnectBegin(const AddressList& addresses);
- void LogConnectEnd(int net_error);
-
- void DidCompleteRead();
- void DidCompleteWrite();
- void DidCompleteConnect();
- void DidCompleteConnectOrWrite();
- void DidCompleteAccept();
-
- // Internal function to write to a socket. Returns an OS error.
- int InternalWrite(IOBuffer* buf, int buf_len);
+ void AcceptCompleted(scoped_ptr<TCPSocketLibevent>* tcp_socket,
+ IPEndPoint* address,
+ const CompletionCallback& callback,
+ int rv);
+ int HandleAcceptCompleted(scoped_ptr<TCPSocketLibevent>* tcp_socket,
+ IPEndPoint* address,
+ int rv);
+ int BuildTcpSocketLibevent(scoped_ptr<TCPSocketLibevent>* tcp_socket,
+ IPEndPoint* address);
+
+ void ConnectCompleted(const CompletionCallback& callback, int rv) const;
+ int HandleConnectCompleted(int rv) const;
+ void LogConnectBegin(const AddressList& addresses) const;
+ void LogConnectEnd(int net_error) const;
+
+ void ReadCompleted(IOBuffer* buf,
+ const CompletionCallback& callback,
+ int rv);
+ int HandleReadCompleted(IOBuffer* buf, int rv);
+
+ void WriteCompleted(IOBuffer* buf,
+ const CompletionCallback& callback,
+ int rv) const;
+ int HandleWriteCompleted(IOBuffer* buf, int rv) const;
+ int TcpFastOpenWrite(IOBuffer* buf,
+ int buf_len,
+ const CompletionCallback& callback);
// Called when the socket is known to be in a connected state.
void RecordFastOpenStatus();
- int socket_;
-
- base::MessageLoopForIO::FileDescriptorWatcher accept_socket_watcher_;
- Watcher accept_watcher_;
-
- scoped_ptr<TCPSocketLibevent>* accept_socket_;
- IPEndPoint* accept_address_;
- CompletionCallback accept_callback_;
-
- // The socket's libevent wrappers for reads and writes.
- base::MessageLoopForIO::FileDescriptorWatcher read_socket_watcher_;
- base::MessageLoopForIO::FileDescriptorWatcher write_socket_watcher_;
-
- // The corresponding watchers for reads and writes.
- Watcher read_watcher_;
- Watcher write_watcher_;
-
- // The buffer used for reads.
- scoped_refptr<IOBuffer> read_buf_;
- int read_buf_len_;
-
- // The buffer used for writes.
- scoped_refptr<IOBuffer> write_buf_;
- int write_buf_len_;
-
- // External callback; called when read is complete.
- CompletionCallback read_callback_;
-
- // External callback; called when write or connect is complete.
- CompletionCallback write_callback_;
+ scoped_ptr<SocketLibevent> socket_;
+ scoped_ptr<SocketLibevent> accept_socket_;
// Enables experimental TCP FastOpen option.
const bool use_tcp_fastopen_;
@@ -215,14 +175,6 @@ class NET_EXPORT TCPSocketLibevent : public base::NonThreadSafe {
FastOpenStatus fast_open_status_;
- // A connect operation is pending. In this case, |write_callback_| needs to be
- // called when connect is complete.
- bool waiting_connect_;
-
- scoped_ptr<IPEndPoint> peer_address_;
- // The OS error that a connect attempt last completed with.
- int connect_os_error_;
-
bool logging_multiple_connect_attempts_;
BoundNetLog net_log_;

Powered by Google App Engine
This is Rietveld 408576698