| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // DevTools RPC subsystem is a simple string serialization-based rpc | 5 // DevTools RPC subsystem is a simple string serialization-based rpc |
| 6 // implementation. The client is responsible for defining the Rpc-enabled | 6 // implementation. The client is responsible for defining the Rpc-enabled |
| 7 // interface in terms of its macros: | 7 // interface in terms of its macros: |
| 8 // | 8 // |
| 9 // #define MYAPI_STRUCT(METHOD0, METHOD1, METHOD2, METHOD3) | 9 // #define MYAPI_STRUCT(METHOD0, METHOD1, METHOD2, METHOD3) |
| 10 // METHOD0(Method1) | 10 // METHOD0(Method1) |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 // MyApi* real_object; | 45 // MyApi* real_object; |
| 46 // MyApiDispatch::Dispatch(real_object, raw_string_call_generated_by_stub); | 46 // MyApiDispatch::Dispatch(real_object, raw_string_call_generated_by_stub); |
| 47 // | 47 // |
| 48 // will make corresponding calls to the real object. | 48 // will make corresponding calls to the real object. |
| 49 | 49 |
| 50 #ifndef WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_H_ | 50 #ifndef WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_H_ |
| 51 #define WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_H_ | 51 #define WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_H_ |
| 52 | 52 |
| 53 #include "PlatformString.h" | 53 #include "PlatformString.h" |
| 54 | 54 |
| 55 // TODO(darin): Remove these dependencies on Chromium base/. | 55 #include <wtf/Noncopyable.h> |
| 56 #include "base/basictypes.h" | |
| 57 #include "base/compiler_specific.h" | |
| 58 | 56 |
| 59 namespace WebCore { | 57 namespace WebCore { |
| 60 class String; | 58 class String; |
| 61 } | 59 } |
| 62 | 60 |
| 63 using WebCore::String; | 61 using WebCore::String; |
| 64 | 62 |
| 65 /////////////////////////////////////////////////////// | 63 /////////////////////////////////////////////////////// |
| 66 // RPC dispatch macro | 64 // RPC dispatch macro |
| 67 | 65 |
| 68 template<typename T> | 66 template<typename T> |
| 69 struct RpcTypeTrait { | 67 struct RpcTypeTrait { |
| 70 typedef T ApiType; | 68 typedef T ApiType; |
| 71 }; | 69 }; |
| 72 | 70 |
| 73 template<> | 71 template<> |
| 74 struct RpcTypeTrait<bool> { | 72 struct RpcTypeTrait<bool> { |
| 75 typedef bool ApiType; | 73 typedef bool ApiType; |
| 76 static bool Parse(const WebCore::String& t) { | 74 static bool Parse(const WebCore::String& t) { |
| 77 ALLOW_UNUSED bool success; | 75 bool success; |
| 78 int i = t.toIntStrict(&success); | 76 int i = t.toIntStrict(&success); |
| 79 ASSERT(success); | 77 ASSERT(success); |
| 80 return i; | 78 return i; |
| 81 } | 79 } |
| 82 static WebCore::String ToString(bool b) { | 80 static WebCore::String ToString(bool b) { |
| 83 return WebCore::String::number(b ? 1 : 0); | 81 return WebCore::String::number(b ? 1 : 0); |
| 84 } | 82 } |
| 85 }; | 83 }; |
| 86 | 84 |
| 87 template<> | 85 template<> |
| 88 struct RpcTypeTrait<int> { | 86 struct RpcTypeTrait<int> { |
| 89 typedef int ApiType; | 87 typedef int ApiType; |
| 90 static int Parse(const WebCore::String& t) { | 88 static int Parse(const WebCore::String& t) { |
| 91 ALLOW_UNUSED bool success; | 89 bool success; |
| 92 int i = t.toIntStrict(&success); | 90 int i = t.toIntStrict(&success); |
| 93 ASSERT(success); | 91 ASSERT(success); |
| 94 return i; | 92 return i; |
| 95 } | 93 } |
| 96 static WebCore::String ToString(int i) { | 94 static WebCore::String ToString(int i) { |
| 97 return WebCore::String::number(i); | 95 return WebCore::String::number(i); |
| 98 } | 96 } |
| 99 }; | 97 }; |
| 100 | 98 |
| 101 template<> | 99 template<> |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 TOOLS_RPC_DISPATCH2, \ | 256 TOOLS_RPC_DISPATCH2, \ |
| 259 TOOLS_RPC_DISPATCH3) \ | 257 TOOLS_RPC_DISPATCH3) \ |
| 260 return false; \ | 258 return false; \ |
| 261 } \ | 259 } \ |
| 262 private: \ | 260 private: \ |
| 263 DISALLOW_COPY_AND_ASSIGN(Class##Dispatch); \ | 261 DISALLOW_COPY_AND_ASSIGN(Class##Dispatch); \ |
| 264 }; | 262 }; |
| 265 | 263 |
| 266 /////////////////////////////////////////////////////// | 264 /////////////////////////////////////////////////////// |
| 267 // RPC base class | 265 // RPC base class |
| 268 class DevToolsRpc { | 266 class DevToolsRpc : public Noncopyable { |
| 269 public: | 267 public: |
| 270 class Delegate { | 268 class Delegate : public Noncopyable { |
| 271 public: | 269 public: |
| 272 Delegate() {} | 270 Delegate() {} |
| 273 virtual ~Delegate() {} | 271 virtual ~Delegate() {} |
| 274 virtual void SendRpcMessage(const WebCore::String& class_name, | 272 virtual void SendRpcMessage(const WebCore::String& class_name, |
| 275 const WebCore::String& method_name, | 273 const WebCore::String& method_name, |
| 276 const WebCore::String& p1 = "", | 274 const WebCore::String& p1 = "", |
| 277 const WebCore::String& p2 = "", | 275 const WebCore::String& p2 = "", |
| 278 const WebCore::String& p3 = "") = 0; | 276 const WebCore::String& p3 = "") = 0; |
| 279 private: | |
| 280 DISALLOW_COPY_AND_ASSIGN(Delegate); | |
| 281 }; | 277 }; |
| 282 | 278 |
| 283 explicit DevToolsRpc(Delegate* delegate) | 279 explicit DevToolsRpc(Delegate* delegate) |
| 284 : delegate_(delegate) {} | 280 : delegate_(delegate) {} |
| 285 virtual ~DevToolsRpc() {}; | 281 virtual ~DevToolsRpc() {}; |
| 286 | 282 |
| 287 protected: | 283 protected: |
| 288 Delegate* delegate_; | 284 Delegate* delegate_; |
| 289 private: | |
| 290 DISALLOW_COPY_AND_ASSIGN(DevToolsRpc); | |
| 291 }; | 285 }; |
| 292 | 286 |
| 293 #endif // WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_H_ | 287 #endif // WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_H_ |
| OLD | NEW |