OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2011 The Native Client 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 #include "native_client/src/shared/ppapi_proxy/plugin_ppb_file_system.h" |
| 6 |
| 7 #include "native_client/src/include/portability.h" |
| 8 #include "native_client/src/shared/ppapi_proxy/plugin_callback.h" |
| 9 #include "native_client/src/shared/ppapi_proxy/plugin_globals.h" |
| 10 #include "native_client/src/shared/ppapi_proxy/utility.h" |
| 11 #include "ppapi/c/pp_completion_callback.h" |
| 12 #include "ppapi/c/pp_errors.h" |
| 13 #include "srpcgen/ppb_rpc.h" |
| 14 |
| 15 namespace ppapi_proxy { |
| 16 |
| 17 namespace { |
| 18 |
| 19 PP_Resource Create(PP_Instance instance, PP_FileSystemType type) { |
| 20 DebugPrintf("PPB_FileSystem::Create: instance=%"NACL_PRIu32" " |
| 21 "type=%"NACL_PRIu32"\n", |
| 22 instance, type); |
| 23 PP_Resource pp_resource = kInvalidResourceId; |
| 24 NaClSrpcError srpc_result = |
| 25 PpbFileSystemRpcClient::PPB_FileSystem_Create( |
| 26 GetMainSrpcChannel(), |
| 27 instance, |
| 28 type, |
| 29 &pp_resource); |
| 30 DebugPrintf("PPB_FileSystem::Create: %s\n", |
| 31 NaClSrpcErrorString(srpc_result)); |
| 32 if (srpc_result == NACL_SRPC_RESULT_OK) |
| 33 return pp_resource; |
| 34 return kInvalidResourceId; |
| 35 } |
| 36 |
| 37 PP_Bool IsFileSystem(PP_Resource resource) { |
| 38 DebugPrintf("PPB_FileSystem::IsFileSystem: resource=%"NACL_PRIu32"\n", |
| 39 resource); |
| 40 int32_t is_file_system = 0; |
| 41 NaClSrpcError srpc_result = |
| 42 PpbFileSystemRpcClient::PPB_FileSystem_IsFileSystem( |
| 43 GetMainSrpcChannel(), |
| 44 resource, |
| 45 &is_file_system); |
| 46 DebugPrintf("PPB_FileSystem::IsFileSystem: %s\n", |
| 47 NaClSrpcErrorString(srpc_result)); |
| 48 if (NACL_SRPC_RESULT_OK != srpc_result) { |
| 49 return PP_FALSE; |
| 50 } |
| 51 return PP_FromBool(is_file_system); |
| 52 } |
| 53 |
| 54 int32_t Open(PP_Resource file_system, |
| 55 int64_t expected_size, |
| 56 struct PP_CompletionCallback callback) { |
| 57 DebugPrintf("PPB_FileSystem::Open: file_system=%"NACL_PRIu32"\n", |
| 58 file_system); |
| 59 int32_t callback_id = CompletionCallbackTable::Get()->AddCallback(callback); |
| 60 if (callback_id == 0) |
| 61 return PP_ERROR_BADARGUMENT; |
| 62 |
| 63 int32_t pp_error; |
| 64 NaClSrpcError srpc_result = |
| 65 PpbFileSystemRpcClient::PPB_FileSystem_Open( |
| 66 GetMainSrpcChannel(), |
| 67 file_system, |
| 68 expected_size, |
| 69 callback_id, |
| 70 &pp_error); |
| 71 DebugPrintf("PPB_FileSystem::Open: %s\n", |
| 72 NaClSrpcErrorString(srpc_result)); |
| 73 if (srpc_result != NACL_SRPC_RESULT_OK) |
| 74 pp_error = PP_ERROR_FAILED; |
| 75 return MayForceCallback(callback, pp_error); |
| 76 } |
| 77 |
| 78 PP_FileSystemType GetType(PP_Resource file_system) { |
| 79 DebugPrintf("PPB_FileSystem::GetType: file_system=%"NACL_PRIu32"\n", |
| 80 file_system); |
| 81 int32_t type = PP_FILESYSTEMTYPE_INVALID; |
| 82 NaClSrpcError srpc_result = |
| 83 PpbFileSystemRpcClient::PPB_FileSystem_GetType( |
| 84 GetMainSrpcChannel(), |
| 85 file_system, |
| 86 &type); |
| 87 DebugPrintf("PPB_FileSystem::GetType: %s\n", |
| 88 NaClSrpcErrorString(srpc_result)); |
| 89 if (srpc_result == NACL_SRPC_RESULT_OK) |
| 90 return static_cast<PP_FileSystemType>(type); |
| 91 return PP_FILESYSTEMTYPE_INVALID; |
| 92 } |
| 93 |
| 94 } // namespace |
| 95 |
| 96 const PPB_FileSystem* PluginFileSystem::GetInterface() { |
| 97 static const PPB_FileSystem file_system_interface = { |
| 98 Create, |
| 99 IsFileSystem, |
| 100 Open, |
| 101 GetType |
| 102 }; |
| 103 return &file_system_interface; |
| 104 } |
| 105 } // namespace ppapi_proxy |
OLD | NEW |