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.
5 #include "ppapi/c/pp_completion_callback.h"
6 #include "ppapi/c/pp_errors.h"
7 #include "ppapi/shared_impl/tracked_callback.h"
8 #include "ppapi/thunk/enter.h"
9 #include "ppapi/thunk/thunk.h"
10 #include "ppapi/thunk/ppb_file_io_api.h"
11 #include "ppapi/thunk/resource_creation_api.h"
18 typedef EnterResource
<PPB_FileIO_API
> EnterFileIO
;
20 PP_Resource
Create(PP_Instance instance
) {
21 EnterResourceCreation
enter(instance
);
24 return enter
.functions()->CreateFileIO(instance
);
27 PP_Bool
IsFileIO(PP_Resource resource
) {
28 EnterFileIO
enter(resource
, false);
29 return PP_FromBool(enter
.succeeded());
32 int32_t Open(PP_Resource file_io
,
35 PP_CompletionCallback callback
) {
36 EnterFileIO
enter(file_io
, callback
, true);
38 return enter
.retval();
39 return enter
.SetResult(enter
.object()->Open(file_ref
, open_flags
,
43 int32_t Query(PP_Resource file_io
,
45 PP_CompletionCallback callback
) {
46 EnterFileIO
enter(file_io
, callback
, true);
48 return enter
.retval();
49 return enter
.SetResult(enter
.object()->Query(info
, enter
.callback()));
52 int32_t Touch(PP_Resource file_io
,
53 PP_Time last_access_time
,
54 PP_Time last_modified_time
,
55 PP_CompletionCallback callback
) {
56 EnterFileIO
enter(file_io
, callback
, true);
58 return enter
.retval();
59 return enter
.SetResult(enter
.object()->Touch(
60 last_access_time
, last_modified_time
, enter
.callback()));
63 int32_t Read(PP_Resource file_io
,
66 int32_t bytes_to_read
,
67 PP_CompletionCallback callback
) {
68 EnterFileIO
enter(file_io
, callback
, true);
70 return enter
.retval();
71 return enter
.SetResult(enter
.object()->Read(offset
, buffer
, bytes_to_read
,
75 int32_t ReadToArray(PP_Resource file_io
,
77 int32_t max_read_length
,
78 PP_ArrayOutput
* buffer
,
79 PP_CompletionCallback callback
) {
80 EnterFileIO
enter(file_io
, callback
, true);
82 return enter
.retval();
83 return enter
.SetResult(enter
.object()->ReadToArray(
84 offset
, max_read_length
, buffer
, enter
.callback()));
87 int32_t Write(PP_Resource file_io
,
90 int32_t bytes_to_write
,
91 PP_CompletionCallback callback
) {
92 EnterFileIO
enter(file_io
, callback
, true);
94 return enter
.retval();
95 return enter
.SetResult(enter
.object()->Write(offset
, buffer
, bytes_to_write
,
99 int32_t SetLength(PP_Resource file_io
,
101 PP_CompletionCallback callback
) {
102 EnterFileIO
enter(file_io
, callback
, true);
104 return enter
.retval();
105 return enter
.SetResult(enter
.object()->SetLength(length
, enter
.callback()));
108 int32_t Flush(PP_Resource file_io
,
109 PP_CompletionCallback callback
) {
110 EnterFileIO
enter(file_io
, callback
, true);
112 return enter
.retval();
113 return enter
.SetResult(enter
.object()->Flush(enter
.callback()));
116 void Close(PP_Resource file_io
) {
117 EnterFileIO
enter(file_io
, true);
118 if (enter
.succeeded())
119 enter
.object()->Close();
122 const PPB_FileIO_1_1 g_ppb_file_io_thunk
= {
136 const PPB_FileIO_1_0 g_ppb_file_io_thunk_1_0
= {
151 const PPB_FileIO_1_1
* GetPPB_FileIO_1_1_Thunk() {
152 return &g_ppb_file_io_thunk
;
155 const PPB_FileIO_1_0
* GetPPB_FileIO_1_0_Thunk() {
156 return &g_ppb_file_io_thunk_1_0
;