Index: webrtc/libjingle/xmpp/xmppsocket.h |
diff --git a/webrtc/libjingle/xmpp/xmppsocket.h b/webrtc/libjingle/xmpp/xmppsocket.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..02d645383c3b9774a291d0b43f0bdb70d485ac71 |
--- /dev/null |
+++ b/webrtc/libjingle/xmpp/xmppsocket.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_XMPPSOCKET_H_ |
+#define WEBRTC_LIBJINGLE_XMPP_XMPPSOCKET_H_ |
+ |
+#include "webrtc/libjingle/xmpp/asyncsocket.h" |
+#include "webrtc/libjingle/xmpp/xmppengine.h" |
+#include "webrtc/base/asyncsocket.h" |
+#include "webrtc/base/buffer.h" |
+#include "webrtc/base/sigslot.h" |
+ |
+// The below define selects the SSLStreamAdapter implementation for |
+// SSL, as opposed to the SSLAdapter socket adapter. |
+// #define USE_SSLSTREAM |
+ |
+namespace rtc { |
+ class StreamInterface; |
+ class SocketAddress; |
+}; |
+extern rtc::AsyncSocket* cricket_socket_; |
+ |
+namespace buzz { |
+ |
+class XmppSocket : public buzz::AsyncSocket, public sigslot::has_slots<> { |
+public: |
+ XmppSocket(buzz::TlsOptions tls); |
+ ~XmppSocket(); |
+ |
+ virtual buzz::AsyncSocket::State state(); |
+ virtual buzz::AsyncSocket::Error error(); |
+ virtual int GetError(); |
+ |
+ virtual bool Connect(const rtc::SocketAddress& addr); |
+ virtual bool Read(char * data, size_t len, size_t* len_read); |
+ virtual bool Write(const char * data, size_t len); |
+ virtual bool Close(); |
+ virtual bool StartTls(const std::string & domainname); |
+ |
+ sigslot::signal1<int> SignalCloseEvent; |
+ |
+private: |
+ void CreateCricketSocket(int family); |
+#ifndef USE_SSLSTREAM |
+ void OnReadEvent(rtc::AsyncSocket * socket); |
+ void OnWriteEvent(rtc::AsyncSocket * socket); |
+ void OnConnectEvent(rtc::AsyncSocket * socket); |
+ void OnCloseEvent(rtc::AsyncSocket * socket, int error); |
+#else // USE_SSLSTREAM |
+ void OnEvent(rtc::StreamInterface* stream, int events, int err); |
+#endif // USE_SSLSTREAM |
+ |
+ rtc::AsyncSocket * cricket_socket_; |
+#ifdef USE_SSLSTREAM |
+ rtc::StreamInterface *stream_; |
+#endif // USE_SSLSTREAM |
+ buzz::AsyncSocket::State state_; |
+ rtc::Buffer buffer_; |
+ buzz::TlsOptions tls_; |
+}; |
+ |
+} // namespace buzz |
+ |
+#endif // WEBRTC_LIBJINGLE_XMPP_XMPPSOCKET_H_ |
+ |