globus_gass_transfer  8.13
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
globus_i_gass_transfer.h
1 
2 #ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
3 
11 #ifndef GLOBUS_I_GASS_TRANSFER_H
12 #define GLOBUS_I_GASS_TRANSFER_H
13 
14 #include "globus_gass_transfer.h"
16 #include "globus_i_gass_transfer_keyvalue.h"
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
22 extern globus_hashtable_t globus_i_gass_transfer_protocols;
23 extern globus_handle_table_t globus_i_gass_transfer_request_handles;
24 extern globus_handle_table_t globus_i_gass_transfer_listener_handles;
25 extern globus_list_t * globus_i_gass_transfer_requests;
26 extern globus_list_t * globus_i_gass_transfer_listeners;
27 extern globus_bool_t globus_i_gass_transfer_deactivating;
28 
29 /* Default implemented protocols */
30 extern globus_module_descriptor_t globus_i_gass_transfer_http_module;
31 #define GLOBUS_I_GASS_TRANSFER_HTTP_MODULE (&globus_i_gass_transfer_http_module)
32 extern globus_module_descriptor_t globus_i_gass_transfer_ftp_module;
33 #define GLOBUS_I_GASS_TRANSFER_FTP_MODULE (&globus_i_gass_transfer_ftp_module)
34 
36  globus_i_gass_transfer_http_descriptor;
38  globus_i_gass_transfer_https_descriptor;
40  globus_i_gass_transfer_ftp_descriptor;
42  globus_i_gass_transfer_gsiftp_descriptor;
43 /*
44  * The request status structure. This should only be accessed
45  * through the functions globus_gass_transfer_request_get_*()
46  */
47 typedef struct
48 {
49  char * url;
52 
53  globus_bool_t client_side;
54 
55  globus_size_t length;
56  globus_size_t handled_length;
57  globus_size_t posted_length;
58 
59  char ** referral_url;
60  globus_size_t referral_count;
61 
62  globus_gass_transfer_callback_t callback;
63  void * callback_arg;
64 
65  globus_gass_transfer_callback_t fail_callback;
66  void * fail_callback_arg;
67 
68  /* subject of peer */
69  char * subject;
70 
71  /* queue of byte arrays to be sent or received */
72  globus_fifo_t pending_data;
73 
74  /* Denial reasons */
75  int denial_reason;
76  char * denial_message;
77 
78  globus_object_t * attr;
79 
81  proto;
82  void * user_pointer;
83 } globus_gass_transfer_request_struct_t;
84 
85 /*
86  * The listener status structure. This should only be accessed
87  * through the functions globus_gass_transfer_listener_get_*()
88  */
89 typedef struct
90 {
91  char * base_url;
92  globus_gass_transfer_listener_status_t status;
94  proto;
95 
97  void * listen_callback_arg;
98 
100  void * close_callback_arg;
101  void * user_pointer;
102 } globus_gass_transfer_listener_struct_t;
103 
104 /* the pending_data fifo in the request structure is one of these */
105 typedef struct
106 {
107  globus_bool_t last_data;
108  globus_size_t length;
109  globus_size_t wait_for_length;
111 
112  /*
113  * True when this pending block has been passed to the protocol
114  * module
115  */
116  globus_bool_t pending;
117 
118  globus_byte_t * bytes;
120  void * callback_arg;
121 } globus_gass_transfer_pending_t;
122 
123 /* implemented in globus_gass_transfer_request.c */
124 void
125 globus_i_gass_transfer_request_init(
127  globus_gass_transfer_requestattr_t * attr,
128  char * url,
130  globus_gass_transfer_callback_t callback,
131  void * user_arg);
132 
133 int
134 globus_i_gass_transfer_request_destroy(
136 
137 void
140  globus_size_t length);
141 
142 /* implemented in globus_gass_transfer_server.c */
143 int
144 globus_i_gass_transfer_listener_destroy(
145  globus_gass_transfer_listener_t listener);
146 
147 /* implemented in globus_gass_transfer_client.c */
148 int
149 globus_i_gass_transfer_client_request(
151 
152 /* implemented in globus_gass_transfer_send_recv.c */
153 typedef void
154 (* globus_gass_transfer_dispatch_func_t) (
156 
157 void
158 globus_i_gass_transfer_send_dispatcher(
160 
161 void
162 globus_i_gass_transfer_recv_dispatcher(
164 
165 int
166 globus_i_gass_transfer_fail(
168  globus_gass_transfer_request_struct_t * req,
169  globus_gass_transfer_callback_t callback,
170  void * callback_arg);
171 
172 extern globus_cond_t globus_i_gass_transfer_shutdown_cond;
173 extern globus_mutex_t globus_i_gass_transfer_mutex;
174 
175 #if defined(GLOBUS_DEBUG_GASS_TRANSFER)
176 #define globus_i_gass_transfer_lock() \
177  thread_print(_GTSL("locking mutex at %s:%d\n"), __FILE__, __LINE__), \
178  globus_mutex_lock(&globus_i_gass_transfer_mutex)
179 #define globus_i_gass_transfer_unlock() \
180  thread_print(_GTSL("unlocking mutex at %s:%d\n"), __FILE__, __LINE__), \
181  globus_mutex_unlock(&globus_i_gass_transfer_mutex)
182 #else
183 #define globus_i_gass_transfer_lock() \
184  globus_mutex_lock(&globus_i_gass_transfer_mutex)
185 #define globus_i_gass_transfer_unlock() \
186  globus_mutex_unlock(&globus_i_gass_transfer_mutex)
187 #endif
188 
189 int
190 globus_i_gass_transfer_close_listener(
191  globus_gass_transfer_listener_t listener,
192  globus_gass_transfer_listener_struct_t * l,
194  void * user_arg);
195 
196 void
197 globus_i_gass_transfer_deactivate_callback(
198  void * user_arg,
200 
201 #ifdef __cplusplus
202 }
203 #endif
204 
205 #endif /* GLOBUS_I_GASS_TRANSFER_H */
206 
207 #endif /* GLOBUS_DONT_DOCUMENT_INTERNAL */
void globus_gass_transfer_request_set_length(globus_gass_transfer_request_t request, globus_size_t length)
Definition: globus_gass_transfer_request.c:440
GASS transfer.
void(* globus_gass_transfer_listen_callback_t)(void *callback_arg, globus_gass_transfer_listener_t listener)
Definition: globus_gass_transfer.h:427
Protocol module descriptor structure.
Definition: globus_gass_transfer_proto.h:436
globus_gass_transfer_request_type_t
Definition: globus_gass_transfer.h:129
void(* globus_gass_transfer_bytes_callback_t)(void *arg, globus_gass_transfer_request_t request, globus_byte_t *bytes, globus_size_t length, globus_bool_t last_data)
Definition: globus_gass_transfer.h:512
Protocol module listener handling structure.
Definition: globus_gass_transfer_proto.h:416
GASS Transfer Protocol Interface.
globus_gass_transfer_request_status_t
Definition: globus_gass_transfer.h:173
void(* globus_gass_transfer_close_callback_t)(void *callback_arg, globus_gass_transfer_listener_t listener)
Definition: globus_gass_transfer.h:416
Protocol module request handling structure.
Definition: globus_gass_transfer_proto.h:370