| Index: src/trusted/manifest_name_service_proxy/manifest_proxy.h
|
| ===================================================================
|
| --- src/trusted/manifest_name_service_proxy/manifest_proxy.h (revision 0)
|
| +++ src/trusted/manifest_name_service_proxy/manifest_proxy.h (revision 0)
|
| @@ -0,0 +1,78 @@
|
| +/*
|
| + * Copyright (c) 2011 The Native Client Authors. All rights reserved.
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#ifndef NATIVE_CLIENT_SRC_TRUSTED_MANIFEST_NAME_SERVICE_PROXY_MANIFEST_PROXY_H_
|
| +#define NATIVE_CLIENT_SRC_TRUSTED_MANIFEST_NAME_SERVICE_PROXY_MANIFEST_PROXY_H_
|
| +
|
| +#include "native_client/src/include/nacl_base.h"
|
| +
|
| +#include "native_client/src/shared/srpc/nacl_srpc.h"
|
| +#include "native_client/src/trusted/service_runtime/sel_ldr_thread_interface.h"
|
| +#include "native_client/src/trusted/simple_service/nacl_simple_service.h"
|
| +
|
| +EXTERN_C_BEGIN
|
| +
|
| +/*
|
| + * Trusted SRPC server that proxies name service lookups to the
|
| + * browser plugin. This is Pepper2-specific code that could, in
|
| + * principle, be generalized.
|
| + *
|
| + * Manifest names are "short names". These are often sonames for
|
| + * dynamic libraries, but may be any read-only resource that the NaCl
|
| + * application needs, e.g., level data files, audio samples, etc.
|
| + */
|
| +
|
| +struct NaClManifestProxy {
|
| + struct NaClSimpleService base NACL_IS_REFCOUNT_SUBCLASS;
|
| +
|
| + struct NaClApp *nap;
|
| +};
|
| +
|
| +struct NaClManifestProxyConnection {
|
| + struct NaClSimpleServiceConnection base NACL_IS_REFCOUNT_SUBCLASS;
|
| +
|
| + struct NaClMutex mu;
|
| + struct NaClCondVar cv;
|
| + int channel_initialized;
|
| + struct NaClSrpcChannel client_channel;
|
| +};
|
| +
|
| +extern struct NaClSimpleServiceVtbl const kNaClManifestProxyVtbl;
|
| +
|
| +/*
|
| + * The nap reference is used by the connection factory to initiate a
|
| + * reverse connection: the connection factory enqueue a callback via
|
| + * the NaClSecureReverseClientCtor that wakes up the connection
|
| + * factory which issues an upcall on the existing reverse connection
|
| + * to ask for a new one. When the new connection arrives, the
|
| + * NaClManifestProxyConnectionFactory can wrap the reverse channel in
|
| + * the NaClManifestConnection object, and subsequent RPC handlers use
|
| + * the connection object's reverse channel to forward RPC requests.
|
| + */
|
| +int NaClManifestProxyCtor(struct NaClManifestProxy *self,
|
| + NaClThreadIfFactoryFunction thread_factory_fn,
|
| + void *thread_factory_data,
|
| + struct NaClApp *nap);
|
| +
|
| +void NaClManifestProxyDtor(struct NaClRefCount *vself);
|
| +
|
| +int NaClManifestProxyConnectionCtor(struct NaClManifestProxyConnection *self,
|
| + struct NaClManifestProxy *server,
|
| + struct NaClDesc *conn);
|
| +
|
| +void NaClMaifestProxyConnectionDtor(struct NaClRefCount *vself);
|
| +
|
| +int NaClManifestProxyConnectionFactory(
|
| + struct NaClSimpleService *vself,
|
| + struct NaClDesc *conn,
|
| + struct NaClSimpleServiceConnection **out);
|
| +
|
| +extern struct NaClSimpleServiceConnectionVtbl
|
| + const kNaClManifestProxyConnectionVtbl;
|
| +
|
| +EXTERN_C_END
|
| +
|
| +#endif
|
|
|
| Property changes on: src/trusted/manifest_name_service_proxy/manifest_proxy.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|