1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Parameter types for SRPC Invocation. 6 7 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SRPC_PARAMS_H 8 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SRPC_PARAMS_H 9 10 #include "native_client/src/include/nacl_macros.h" 11 #include "native_client/src/include/portability_string.h" 12 #include "native_client/src/shared/srpc/nacl_srpc.h" 13 14 namespace plugin { 15 16 // A utility class that builds and deletes parameter vectors used in rpcs. 17 class SrpcParams { 18 public: 19 SrpcParams() { 20 memset(ins_, 0, sizeof(ins_)); 21 memset(outs_, 0, sizeof(outs_)); 22 } 23 24 SrpcParams(const char* in_types, const char* out_types) { 25 if (!Init(in_types, out_types)) { 26 FreeAll(); 27 } 28 } 29 30 ~SrpcParams() { 31 FreeAll(); 32 } 33 34 bool Init(const char* in_types, const char* out_types); 35 36 NaClSrpcArg** ins() const { return const_cast<NaClSrpcArg**>(ins_); } 37 NaClSrpcArg** outs() const { return const_cast<NaClSrpcArg**>(outs_); } 38 39 private: 40 NACL_DISALLOW_COPY_AND_ASSIGN(SrpcParams); 41 void FreeAll(); 42 // The ins_ and outs_ arrays contain one more element, to hold a NULL pointer 43 // to indicate the end of the list. 44 NaClSrpcArg* ins_[NACL_SRPC_MAX_ARGS + 1]; 45 NaClSrpcArg* outs_[NACL_SRPC_MAX_ARGS + 1]; 46 }; 47 48 } // namespace plugin 49 50 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SRPC_PARAMS_H 51