- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / native_client / src / trusted / plugin / srpc_client.h
1 /*
2  * Copyright (c) 2012 The Chromium Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  */
6
7 // A representation of an SRPC connection.  These can be either to the
8 // service runtime or to untrusted NaCl threads.
9
10 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SRPC_CLIENT_H_
11 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SRPC_CLIENT_H_
12
13 #include <map>
14 #include "native_client/src/include/nacl_macros.h"
15 #include "native_client/src/include/nacl_string.h"
16 #include "native_client/src/shared/srpc/nacl_srpc.h"
17 #include "ppapi/native_client/src/trusted/plugin/utility.h"
18
19 namespace nacl {
20 class DescWrapper;
21 }  // namespace nacl
22
23 namespace plugin {
24
25 class ErrorInfo;
26 class MethodInfo;
27 class Plugin;
28 class SrpcParams;
29
30 //  SrpcClient represents an SRPC connection to a client.
31 class SrpcClient {
32  public:
33   // Factory method for creating SrpcClients.
34   static SrpcClient* New(nacl::DescWrapper* wrapper);
35
36   //  Init is passed a DescWrapper.  The SrpcClient performs service
37   //  discovery and provides the interface for future rpcs.
38   bool Init(nacl::DescWrapper* socket);
39
40   //  The destructor closes the connection to sel_ldr.
41   ~SrpcClient();
42
43   //  Test whether the SRPC service has a given method.
44   bool HasMethod(const nacl::string& method_name);
45   //  Invoke an SRPC method.
46   bool Invoke(const nacl::string& method_name, SrpcParams* params);
47   // Get the error status from that last method invocation
48   NaClSrpcError GetLastError() { return last_error_; }
49   bool InitParams(const nacl::string& method_name, SrpcParams* params);
50
51   // Attach a service for reverse-direction (from .nexe) RPCs.
52   void AttachService(NaClSrpcService* service, void* instance_data);
53
54  private:
55   NACL_DISALLOW_COPY_AND_ASSIGN(SrpcClient);
56   SrpcClient();
57   void GetMethods();
58   typedef std::map<nacl::string, MethodInfo*> Methods;
59   Methods methods_;
60   NaClSrpcChannel srpc_channel_;
61   bool srpc_channel_initialised_;
62   NaClSrpcError last_error_;
63 };
64
65 }  // namespace plugin
66
67 #endif  // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SRPC_CLIENT_H_