Index: webrtc/libjingle/xmpp/asyncsocket.h |
diff --git a/webrtc/libjingle/xmpp/asyncsocket.h b/webrtc/libjingle/xmpp/asyncsocket.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6d77ce0842ca0fe9313415557b74903d2152503b |
--- /dev/null |
+++ b/webrtc/libjingle/xmpp/asyncsocket.h |
@@ -0,0 +1,72 @@ |
+/* |
+ * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
+ * |
+ * Use of this source code is governed by a BSD-style license |
+ * that can be found in the LICENSE file in the root of the source |
+ * tree. An additional intellectual property rights grant can be found |
+ * in the file PATENTS. All contributing project authors may |
+ * be found in the AUTHORS file in the root of the source tree. |
+ */ |
+ |
+#ifndef WEBRTC_LIBJINGLE_XMPP_ASYNCSOCKET_H_ |
+#define WEBRTC_LIBJINGLE_XMPP_ASYNCSOCKET_H_ |
+ |
+#include <string> |
+ |
+#include "webrtc/base/sigslot.h" |
+ |
+namespace rtc { |
+ class SocketAddress; |
+} |
+ |
+namespace buzz { |
+ |
+class AsyncSocket { |
+public: |
+ enum State { |
+ STATE_CLOSED = 0, //!< Socket is not open. |
+ STATE_CLOSING, //!< Socket is closing but can have buffered data |
+ STATE_CONNECTING, //!< In the process of |
+ STATE_OPEN, //!< Socket is connected |
+#if defined(FEATURE_ENABLE_SSL) |
+ STATE_TLS_CONNECTING, //!< Establishing TLS connection |
+ STATE_TLS_OPEN, //!< TLS connected |
+#endif |
+ }; |
+ |
+ enum Error { |
+ ERROR_NONE = 0, //!< No error |
+ ERROR_WINSOCK, //!< Winsock error |
+ ERROR_DNS, //!< Couldn't resolve host name |
+ ERROR_WRONGSTATE, //!< Call made while socket is in the wrong state |
+#if defined(FEATURE_ENABLE_SSL) |
+ ERROR_SSL, //!< Something went wrong with OpenSSL |
+#endif |
+ }; |
+ |
+ virtual ~AsyncSocket() {} |
+ virtual State state() = 0; |
+ virtual Error error() = 0; |
+ virtual int GetError() = 0; // winsock error code |
+ |
+ virtual bool Connect(const rtc::SocketAddress& addr) = 0; |
+ virtual bool Read(char * data, size_t len, size_t* len_read) = 0; |
+ virtual bool Write(const char * data, size_t len) = 0; |
+ virtual bool Close() = 0; |
+#if defined(FEATURE_ENABLE_SSL) |
+ // We allow matching any passed domain. This allows us to avoid |
+ // handling the valuable certificates for logins into proxies. If |
+ // both names are passed as empty, we do not require a match. |
+ virtual bool StartTls(const std::string & domainname) = 0; |
+#endif |
+ |
+ sigslot::signal0<> SignalConnected; |
+ sigslot::signal0<> SignalSSLConnected; |
+ sigslot::signal0<> SignalClosed; |
+ sigslot::signal0<> SignalRead; |
+ sigslot::signal0<> SignalError; |
+}; |
+ |
+} |
+ |
+#endif // WEBRTC_LIBJINGLE_XMPP_ASYNCSOCKET_H_ |