globus_connect_gridftp_server  15.94
/build/globus-connect-gridftp-server-15.94/globus_gridftp_server_embed.h
1 /*
2  * Copyright The University of Chicago
3  *
4  * All Rights Reserved.
5  */
6 
7 #if !defined(GLOBUS_GRIDFTP_SERVER_EMBED_H)
8 #define GLOBUS_GRIDFTP_SERVER_EMBED_H 1
9 
10 #include "globus_gridftp_server.h"
11 
12 typedef struct globus_l_gfs_embed_handle_s * globus_gfs_embed_handle_t;
13 
14 
15 /* events.
16  * XXX should possibly add some generic way to get useful info for
17  * for an event.
18  */
19 typedef enum
20 {
21  GLOBUS_GFS_EMBED_EVENT_CONNECTION_CLOSED = 1,
22  GLOBUS_GFS_EMBED_EVENT_CONNECTION_OPENED,
23  GLOBUS_GFS_EMBED_EVENT_STOPPED
24 } globus_gfs_embed_event_t;
25 
26 typedef globus_bool_t
27 (*globus_gfs_embed_event_cb_t)(
28  globus_gfs_embed_handle_t handle,
29  globus_result_t result,
30  globus_gfs_embed_event_t event,
31  void * user_arg);
32 
33 
34 /*
35  * init the handle. args[] is a NULL terminated argv-type array filled with
36  * command line parameters, may be NULL. Start at args[1].
37  * eg: args = {"not used", "-p", "5000", NULL}
38  */
39 globus_result_t
40 globus_gridftp_server_embed_init(
41  globus_gfs_embed_handle_t * handle,
42  char * args[]);
43 
44 
45 /*
46  * destroy the handle. if server has been started, should only be called
47  * after the STOPPED event has been triggered.
48  */
49 void
50 globus_gridftp_server_embed_destroy(
51  globus_gfs_embed_handle_t handle);
52 
53 
54 /*
55  * set a config parameter. use _int or _ptr as appropriate for
56  * the parameter.
57  */
58 void
59 globus_gridftp_server_embed_config_set_int(
60  globus_gfs_embed_handle_t handle,
61  char * option_name,
62  int int_value);
63 
64 void
65 globus_gridftp_server_embed_config_set_ptr(
66  globus_gfs_embed_handle_t handle,
67  char * option_name,
68  void * ptr_value);
69 
70 
71 /*
72  * config query functions.
73  */
74 
75 #define globus_gridftp_server_embed_config_get_list \
76  (globus_list_t *) globus_gridftp_server_embed_config_get_ptr
77 #define globus_gridftp_server_embed_config_get_string \
78  (char *) globus_gridftp_server_embed_config_get_ptr
79 #define globus_gridftp_server_embed_config_get_bool \
80  (globus_bool_t) globus_gridftp_server_embed_config_get_int
81 
82 void *
83 globus_gridftp_server_embed_config_get_ptr(
84  globus_gfs_embed_handle_t handle,
85  const char * option_name);
86 
87 int
88 globus_gridftp_server_embed_config_get_int(
89  globus_gfs_embed_handle_t handle,
90  const char * option_name);
91 
92 
93 /*
94  * start up an embedded gridftp server
95  *
96  */
97 globus_result_t
98 globus_gridftp_server_embed_start(
99  globus_gfs_embed_handle_t handle,
100  globus_gfs_embed_event_cb_t event_cb,
101  void * user_arg);
102 
103 /*
104  * stop the running embedded server. calling this function will start
105  * the processes of shutting down the embedded server. When it is
106  * completely shut down the event callback will be called with
107  * the GLOBUS_GRIDFTP_SERVER_EMEB_EVENT_STOPPED event.
108  */
109 void
110 globus_gridftp_server_embed_stop(
111  globus_gfs_embed_handle_t handle);
112 
113 
114 #endif
globus_gridftp_server.h