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

Unified Diff: chromeos/arc/bridge/common/arc_bridge.h

Issue 1424503002: arc-bridge: Add IPC message definitions (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@master
Patch Set: Renamed libarcbridge=>bridge/common and addressed feedback Created 5 years, 2 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
« no previous file with comments | « no previous file | chromeos/arc/bridge/common/arc_bridge.cc » ('j') | chromeos/arc/bridge/common/arc_bridge.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/arc/bridge/common/arc_bridge.h
diff --git a/chromeos/arc/bridge/common/arc_bridge.h b/chromeos/arc/bridge/common/arc_bridge.h
new file mode 100644
index 0000000000000000000000000000000000000000..5379d8a93c21ce2f6b648eefbfe03e671ee3589e
--- /dev/null
+++ b/chromeos/arc/bridge/common/arc_bridge.h
@@ -0,0 +1,84 @@
+// Copyright 2015 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.
+
+// A communication channel between Chrome and an ARC instance.
+// This component will send and receive messages across a socket that is
+// available to the ARC instance when it is started.
+
+#ifndef CHROMEOS_ARC_LIBARCBRIDGE_ARC_ARC_BRIDGE_H_
+#define CHROMEOS_ARC_LIBARCBRIDGE_ARC_ARC_BRIDGE_H_
+
+#include "base/macros.h"
+#include "ipc/ipc_channel_proxy.h"
+#include "ipc/ipc_listener.h"
+#include "ipc/ipc_message.h"
+
+namespace arc {
+
+// Abstract class that represents one of the ARC bridge endpoints.
+class BridgeEndpoint : public IPC::Listener {
hidehiko 2015/10/26 09:15:00 What's the usage of BridgeEndpoint? If this is ju
Shuhei Takahashi 2015/10/26 11:13:40 +1 If you still want to use a base class, please
Luis Héctor Chávez 2015/10/26 21:03:27 Having it as a base class avoids repeating the Con
+ public:
+ BridgeEndpoint();
+ virtual ~BridgeEndpoint();
+
+ // Connects the endpoint of the bridge through the specified channel handle.
+ // This function is mainly for testing, since callers can call the
Shuhei Takahashi 2015/10/26 11:13:40 Do you mean "This function is mainly *exposed* for
Luis Héctor Chávez 2015/10/26 21:03:27 Done
+ // subclasses' Socketconnect().
+ bool Connect(const IPC::ChannelHandle& handle, IPC::Channel::Mode mode);
+
+ protected:
+ scoped_ptr<IPC::ChannelProxy> channel_;
+
+ base::Thread ipc_thread_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(BridgeEndpoint);
+};
+
+// Instance side of the ARC bridge.
satorux1 2015/10/26 01:58:52 I felt that relationship with 'instance side' and
Luis Héctor Chávez 2015/10/26 21:03:27 Done.
+class BridgeInstanceEndpoint : public BridgeEndpoint {
+ public:
+ BridgeInstanceEndpoint();
+ virtual ~BridgeInstanceEndpoint();
+
+ bool SocketConnect(const std::string& socket_path);
+
+ // Messages from the instance to the host.
+ bool InstanceReady();
+
+ private:
+ bool OnMessageReceived(const IPC::Message& message) override;
satorux1 2015/10/26 01:58:52 please add function comments to these functions. i
Luis Héctor Chávez 2015/10/26 21:03:27 Done.
+ void OnPing();
satorux1 2015/10/26 01:58:52 What's ping? Is this a sample function or does it
Luis Héctor Chávez 2015/10/26 21:03:27 It was added at some point to avoid a compilation
+ virtual void OnRegisterInputDevice(const std::string& name,
satorux1 2015/10/26 01:58:52 In particular, please document how sub classes are
Luis Héctor Chávez 2015/10/26 21:03:27 Done.
+ const std::string& device_type,
+ base::FileDescriptor fd) = 0;
+
+ DISALLOW_COPY_AND_ASSIGN(BridgeInstanceEndpoint);
+};
+
+// Host side of the ARC bridge.
+class BridgeHostEndpoint : public BridgeEndpoint {
Shuhei Takahashi 2015/10/26 11:13:40 nit: To follow IPC naming convention, maybe want t
Luis Héctor Chávez 2015/10/26 21:03:27 Oh I was not aware of this convention. Renamed to
+ public:
+ BridgeHostEndpoint();
+ virtual ~BridgeHostEndpoint();
+
+ bool SocketConnect(const std::string& socket_path);
satorux1 2015/10/26 01:58:52 ditto. function comment is missing.
Luis Héctor Chávez 2015/10/26 21:03:27 Done.
+
+ // Messages from the host to the instance.
+ bool Ping();
+ bool RegisterInputDevice(const std::string& name,
+ const std::string& device_type,
+ base::ScopedFD fd);
+
+ private:
+ bool OnMessageReceived(const IPC::Message& message) override;
+ virtual void OnInstanceReady() = 0;
+ virtual void OnPong() = 0;
+
+ DISALLOW_COPY_AND_ASSIGN(BridgeHostEndpoint);
+};
+
+} // namespace arc
+
+#endif // CHROMEOS_ARC_LIBARCBRIDGE_ARC_ARC_BRIDGE_H_
« no previous file with comments | « no previous file | chromeos/arc/bridge/common/arc_bridge.cc » ('j') | chromeos/arc/bridge/common/arc_bridge.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698