globus_connect_gridftp_server  16.9
/build/globus-connect-gridftp-server-16.9/gfs_i_recv_cache.h
1 /*
2  ** Copyright The University of Chicago
3  **
4  ** All Rights Reserved.
5  **/
6 
7 #if !defined(GFS_RECV_CACHE_H)
8 #define GFS_RECV_CACHE_H 1
9 
10 #include "globus_gridftp_server.h"
11 
12 // cache functions
13 
14 typedef struct gfs_dyncache_handle_s
15 {
16  FILE * tmp_file;
17  globus_mutex_t lock;
18  globus_cond_t cond;
19  globus_size_t buffer_length;
20  globus_size_t max_size;
21  globus_bool_t done_reading;
22  globus_result_t result;
23  globus_off_t read_offset;
24 
25  globus_off_t file_size;
26 } gfs_dyncache_handle_t;
27 
28 
29 globus_result_t
30 gfs_dyncache_register_read(
31  gfs_dyncache_handle_t * handle,
32  globus_gfs_operation_t op,
33  globus_byte_t * buffer,
34  globus_size_t length,
35  globus_gridftp_server_read_cb_t callback,
36  void * user_arg);
37 
38 globus_result_t
39 gfs_i_dynhandle_read_blocking(
40  gfs_dyncache_handle_t * dyncache_handle,
41  globus_gfs_operation_t op);
42 
43 globus_result_t
44 gfs_i_dynhandle_init(
45  gfs_dyncache_handle_t * dyncache_handle,
46  globus_off_t max_size);
47 
48 globus_result_t
49 gfs_i_dynhandle_destroy(
50  gfs_dyncache_handle_t * dyncache_handle);
51 
52 globus_result_t
53 globus_i_gridftp_server_real_register_read(
54  globus_gfs_operation_t op,
55  globus_byte_t * buffer,
56  globus_size_t length,
57  globus_gridftp_server_read_cb_t callback,
58  void * user_arg);
59 
60 #endif