globus_gass_transfer_proto.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 1999-2006 University of Chicago
00003  * 
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  * 
00008  * http://www.apache.org/licenses/LICENSE-2.0
00009  * 
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00065 #ifndef GLOBUS_GASS_PROTO_H
00066 #define GLOBUS_GASS_PROTO_H
00067 
00068 #include "globus_common.h"
00069 #include "globus_gass_transfer.h"
00070 
00071 #ifdef __cplusplus
00072 "C" {
00073 #endif
00074 
00075 /* Module-specific types */
00080 typedef struct globus_gass_transfer_request_proto_s
00081 globus_gass_transfer_request_proto_t;
00082 
00087 typedef struct globus_gass_transfer_listener_proto_s
00088 globus_gass_transfer_listener_proto_t;
00089 
00121 typedef void
00122 (* globus_gass_transfer_proto_send_t)(
00123     globus_gass_transfer_request_proto_t *      proto,
00124     globus_gass_transfer_request_t              request,
00125     globus_byte_t *                             bytes,
00126     globus_size_t                               send_length,
00127     globus_bool_t                               last_data);
00128 
00161 typedef void
00162 (* globus_gass_transfer_proto_receive_t)(
00163     globus_gass_transfer_request_proto_t *      proto,
00164     globus_gass_transfer_request_t              request,
00165     globus_byte_t *                             bytes,
00166     globus_size_t                               bytes_length,
00167     globus_size_t                               wait_for_length);
00168 
00188 typedef void
00189 (* globus_gass_transfer_proto_func_t)(
00190     globus_gass_transfer_request_proto_t *      proto,
00191     globus_gass_transfer_request_t              request);
00192 
00221 typedef void
00222 (* globus_gass_transfer_proto_new_request_t)(
00223     globus_gass_transfer_request_t              request,
00224     globus_gass_transfer_requestattr_t *        attr);
00225 
00263 typedef int
00264 (* globus_gass_transfer_proto_create_listener_t)(
00265     globus_gass_transfer_listener_t             listener,
00266     globus_gass_transfer_listenerattr_t *       attr,
00267     char *                                      scheme,
00268     char **                                     base_url,
00269     globus_gass_transfer_listener_proto_t **    proto);
00270 
00288 typedef void
00289 (* globus_gass_transfer_proto_listener_t)(
00290     globus_gass_transfer_listener_proto_t *     proto,
00291     globus_gass_transfer_listener_t             listener);
00292 
00319 typedef globus_object_t *
00320 (* globus_gass_transfer_proto_new_attr_t)(
00321     char *                                      url_scheme);
00322 
00356 typedef void
00357 (* globus_gass_transfer_proto_accept_t)(
00358     globus_gass_transfer_listener_proto_t *     proto,
00359     globus_gass_transfer_listener_t             listener,
00360     globus_gass_transfer_request_t              request,
00361     globus_gass_transfer_requestattr_t *        attr);
00362 
00385 struct globus_gass_transfer_request_proto_s
00386 {
00391     globus_gass_transfer_proto_send_t           send_buffer;
00396     globus_gass_transfer_proto_receive_t        recv_buffer;
00397 
00398 
00405     globus_gass_transfer_proto_func_t           fail;
00406 
00410     globus_gass_transfer_proto_func_t           deny;
00414     globus_gass_transfer_proto_func_t           refer;
00418     globus_gass_transfer_proto_func_t           authorize;
00419 
00423     globus_gass_transfer_proto_func_t           destroy;
00424 };
00425 
00431 struct globus_gass_transfer_listener_proto_s
00432 {
00434     globus_gass_transfer_proto_listener_t       close_listener;
00436     globus_gass_transfer_proto_listener_t       listen;
00438     globus_gass_transfer_proto_accept_t         accept;
00440     globus_gass_transfer_proto_listener_t       destroy;
00441 };
00442 
00451 typedef struct
00452 {
00468     char *                                       url_scheme;
00469 
00481     globus_gass_transfer_proto_new_attr_t        new_requestattr;
00482 
00501     globus_gass_transfer_proto_new_request_t     new_request;
00502 
00514     globus_gass_transfer_proto_new_attr_t        new_listenerattr;
00515 
00534      globus_gass_transfer_proto_create_listener_t new_listener;
00535 } globus_gass_transfer_proto_descriptor_t;
00536 
00537 #ifndef DOXYGEN
00538 int
00539 globus_gass_transfer_proto_register_protocol(
00540     globus_gass_transfer_proto_descriptor_t *   proto_desc);
00541 
00542 int
00543 globus_gass_transfer_proto_unregister_protocol(
00544     globus_gass_transfer_proto_descriptor_t *   proto_desc);
00545 
00546 void
00547 globus_gass_transfer_proto_request_ready(
00548     globus_gass_transfer_request_t              request,
00549     globus_gass_transfer_request_proto_t *      proto);
00550 
00551 void
00552 globus_gass_transfer_proto_request_denied(
00553     globus_gass_transfer_request_t              request,
00554     int                                         reason,
00555     char *                                      message);
00556 
00557 void
00558 globus_gass_transfer_proto_request_referred(
00559     globus_gass_transfer_request_t              request,
00560     char **                                     url,
00561     globus_size_t                               num_urls);
00562 
00563 void
00564 globus_gass_transfer_proto_new_listener_request(
00565     globus_gass_transfer_listener_t             listener,
00566     globus_gass_transfer_request_t              request,
00567     globus_gass_transfer_request_proto_t *      proto);
00568 
00569 void
00570 globus_gass_transfer_proto_send_complete(
00571     globus_gass_transfer_request_t              request,
00572     globus_byte_t *                             bytes,
00573     globus_size_t                               nbytes,
00574     globus_bool_t                               failed,
00575     globus_bool_t                               last_data);
00576 
00577 void
00578 globus_gass_transfer_proto_receive_complete(
00579     globus_gass_transfer_request_t              request,
00580     globus_byte_t *                             bytes,
00581     globus_size_t                               nbytes,
00582     globus_bool_t                               failed,
00583     globus_bool_t                               last_data);
00584 
00585 void
00586 globus_gass_transfer_proto_listener_ready(
00587     globus_gass_transfer_listener_t             listener);
00588 
00589 
00590 /* Protocol Implementation Helper Functions */
00591 /* implemented in globus_gass_transfer_text.c */
00592 void
00593 globus_gass_transfer_crlf_to_lf(
00594     globus_byte_t *                             src,
00595     globus_size_t                               src_len,
00596     globus_byte_t **                            dst,
00597     globus_size_t *                             dst_len);
00598 
00599 void
00600 globus_gass_transfer_lf_to_crlf(
00601     globus_byte_t *                             src,
00602     globus_size_t                               src_len,
00603     globus_byte_t **                            dst,
00604     globus_size_t *                             dst_len);
00605 
00606 #endif
00607 
00608 #ifdef __cplusplus
00609 }
00610 #endif
00611 
00612 #endif /* GLOBUS_GASS_PROTO_H */

Generated on 27 Oct 2014 for globus_gass_transfer by  doxygen 1.4.7