| Index: src/trusted/reverse_service/reverse_service.cc
|
| ===================================================================
|
| --- src/trusted/reverse_service/reverse_service.cc (revision 7373)
|
| +++ src/trusted/reverse_service/reverse_service.cc (working copy)
|
| @@ -124,6 +124,28 @@
|
| rpc->result = NACL_SRPC_RESULT_OK;
|
| }
|
|
|
| +void PostMessageRpc(NaClSrpcRpc* rpc,
|
| + NaClSrpcArg** in_args,
|
| + NaClSrpcArg** out_args,
|
| + NaClSrpcClosure* done) {
|
| + nacl::ReverseService* service = reinterpret_cast<nacl::ReverseService*>(
|
| + rpc->channel->server_instance_data);
|
| + char* message = in_args[0]->arrays.carr;
|
| + nacl_abi_size_t nbytes = in_args[0]->u.count;
|
| + NaClSrpcClosureRunner on_return(done);
|
| +
|
| + NaClLog(4, "Entered PostMessageRpc\n");
|
| + if (NULL == service->reverse_interface()) {
|
| + NaClLog(1, "PostMessage RPC, no reverse_interface. Message: %s\n",
|
| + message);
|
| + } else {
|
| + service->reverse_interface()->PostMessage(std::string(message, nbytes));
|
| + }
|
| + out_args[0]->u.ival = (int32_t) nbytes;
|
| + NaClLog(4, "Leaving PostMessageRpc\n");
|
| + rpc->result = NACL_SRPC_RESULT_OK;
|
| +}
|
| +
|
| // Manifest name service, internal APIs.
|
| //
|
| // Manifest file lookups result in read-only file descriptors with a
|
| @@ -272,6 +294,13 @@
|
|
|
| namespace nacl {
|
|
|
| +// TODO(bsy): this is a temporary cross-repo hack; should be removed
|
| +// when the interface is made pure virtual again
|
| +void ReverseInterface::PostMessage(nacl::string message) {
|
| + NaClLog(0, "ReverseInterface::PostMessage(NACL_OUTPUT_TAG:%s)\n",
|
| + message.c_str());
|
| +}
|
| +
|
| // need NaClThreadIfFactoryFunction that keeps "this" to do counting
|
|
|
| struct ReverseCountingThreadInterface {
|
| @@ -394,6 +423,7 @@
|
| { NACL_REVERSE_CONTROL_ADD_CHANNEL, AddChannel, },
|
| { NACL_REVERSE_CONTROL_INIT_DONE, ModuleInitDoneRpc, },
|
| { NACL_REVERSE_CONTROL_REPORT_STATUS, ModuleExitRpc, },
|
| + { NACL_REVERSE_CONTROL_POST_MESSAGE, PostMessageRpc, },
|
| { NACL_MANIFEST_LIST, ManifestListRpc, },
|
| { NACL_MANIFEST_LOOKUP, ManifestLookupRpc, },
|
| { NACL_MANIFEST_UNREF, ManifestUnrefRpc, },
|
|
|