summaryrefslogtreecommitdiff
path: root/chromium/net/socket/socket_descriptor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/socket/socket_descriptor.cc')
-rw-r--r--chromium/net/socket/socket_descriptor.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/chromium/net/socket/socket_descriptor.cc b/chromium/net/socket/socket_descriptor.cc
new file mode 100644
index 00000000000..5a2e53cab4d
--- /dev/null
+++ b/chromium/net/socket/socket_descriptor.cc
@@ -0,0 +1,48 @@
+// Copyright 2013 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.
+
+#include "net/socket/socket_descriptor.h"
+
+#if defined(OS_POSIX)
+#include <sys/types.h>
+#include <sys/socket.h>
+#endif
+
+#include "base/basictypes.h"
+
+#if defined(OS_WIN)
+#include "net/base/winsock_init.h"
+#endif
+
+namespace net {
+
+PlatformSocketFactory* g_socket_factory = NULL;
+
+PlatformSocketFactory::PlatformSocketFactory() {
+}
+
+PlatformSocketFactory::~PlatformSocketFactory() {
+}
+
+void PlatformSocketFactory::SetInstance(PlatformSocketFactory* factory) {
+ g_socket_factory = factory;
+}
+
+SocketDescriptor CreateSocketDefault(int family, int type, int protocol) {
+#if defined(OS_WIN)
+ EnsureWinsockInit();
+ return ::WSASocket(family, type, protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
+#else // OS_WIN
+ return ::socket(family, type, protocol);
+#endif // OS_WIN
+}
+
+SocketDescriptor CreatePlatformSocket(int family, int type, int protocol) {
+ if (g_socket_factory)
+ return g_socket_factory->CreateSocket(family, type, protocol);
+ else
+ return CreateSocketDefault(family, type, protocol);
+}
+
+} // namespace net