Bug 1166638: Add |StreamSocketConsumer|, r=kmachulis
authorThomas Zimmermann <tdz@users.sourceforge.net>
Tue, 26 May 2015 13:24:19 +0200
changeset 245587 516d575cfeea5104ef6a2bafa7d3f349ae92a5b9
parent 245586 946027c3c52780983d808fe975ec4f0bb76a39b0
child 245588 e216d743ec4bfe9d7ec5297ec713233135382a58
push id28812
push userkwierso@gmail.com
push dateTue, 26 May 2015 22:40:22 +0000
treeherdermozilla-central@620581c0d8d4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerskmachulis
bugs1166638
milestone41.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1166638: Add |StreamSocketConsumer|, r=kmachulis |StreamSocketConsumer| receives events and data from a stream socket. It unifies all existing consumer and listener classes of the socket I/O users.
ipc/unixsocket/StreamSocketConsumer.cpp
ipc/unixsocket/StreamSocketConsumer.h
ipc/unixsocket/moz.build
new file mode 100644
--- /dev/null
+++ b/ipc/unixsocket/StreamSocketConsumer.cpp
@@ -0,0 +1,20 @@
+/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "StreamSocketConsumer.h"
+
+namespace mozilla {
+namespace ipc {
+
+//
+// StreamSocketConsumer
+//
+
+StreamSocketConsumer::~StreamSocketConsumer()
+{ }
+
+}
+}
new file mode 100644
--- /dev/null
+++ b/ipc/unixsocket/StreamSocketConsumer.h
@@ -0,0 +1,60 @@
+/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef mozilla_ipc_streamsocketconsumer_h
+#define mozilla_ipc_streamsocketconsumer_h
+
+#include "nsAutoPtr.h"
+
+namespace mozilla {
+namespace ipc {
+
+class UnixSocketBuffer;
+
+/**
+ * |StreamSocketConsumer| handles socket events and received data.
+ */
+class StreamSocketConsumer
+{
+public:
+  /**
+   * Method to be called whenever data is received. Main-thread only.
+   *
+   * @param aIndex The index that has been given to the stream socket.
+   * @param aBuffer Data received from the socket.
+   */
+  virtual void ReceiveSocketData(int aIndex,
+                                 nsAutoPtr<UnixSocketBuffer>& aBuffer) = 0;
+
+  /**
+   * Callback for socket success. Main-thread only.
+   *
+   * @param aIndex The index that has been given to the stream socket.
+   */
+  virtual void OnConnectSuccess(int aIndex) = 0;
+
+  /**
+   * Callback for socket errors. Main-thread only.
+   *
+   * @param aIndex The index that has been given to the stream socket.
+   */
+  virtual void OnConnectError(int aIndex) = 0;
+
+  /**
+   * Callback for socket disconnect. Main-thread only.
+   *
+   * @param aIndex The index that has been given to the stream socket.
+   */
+  virtual void OnDisconnect(int aIndex) = 0;
+
+protected:
+  virtual ~StreamSocketConsumer();
+};
+
+}
+}
+
+#endif
--- a/ipc/unixsocket/moz.build
+++ b/ipc/unixsocket/moz.build
@@ -5,25 +5,27 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 EXPORTS.mozilla.ipc += [
     'ConnectionOrientedSocket.h',
     'DataSocket.h',
     'ListenSocket.h',
     'SocketBase.h',
     'StreamSocket.h',
+    'StreamSocketConsumer.h',
     'UnixSocketConnector.h'
 ]
 
 SOURCES += [
     'ConnectionOrientedSocket.cpp',
     'DataSocket.cpp',
     'ListenSocket.cpp',
     'SocketBase.cpp',
     'StreamSocket.cpp',
+    'StreamSocketConsumer.cpp',
     'UnixSocketConnector.cpp'
 ]
 
 FAIL_ON_WARNINGS = True
 
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'