EVPath
evpath.h
00001 
00002 #ifndef __EVPATH__H__
00003 #define __EVPATH__H__
00004 
00006 #include "ffs.h"
00007 #include "atl.h"
00008 #ifdef  __cplusplus
00009 extern "C" {
00010 #endif
00011 
00012 #ifndef TRUE
00013 #define TRUE 1
00014 #endif
00015 #ifndef FALSE
00016 #define FALSE 0
00017 #endif
00018 
00019 
00020 
00021 
00022 struct _CManager;
00023 struct _CMConnection;
00024 struct _CMFormat;
00025 
00031 typedef struct _CManager *CManager;
00032 
00038 typedef struct _CMConnection *CMConnection;
00039 
00048 typedef struct _CMFormat *CMFormat;
00049 
00053 typedef struct _CMTaskHandle *CMTaskHandle;
00054 
00059 typedef struct buf_entry {
00060     long length;        
00061     void *buffer;       
00062 } *EVevent_list;
00063 
00081 typedef void (*CMHandlerFunc) (CManager cm, 
00082                                CMConnection conn,
00083                                void *message, void *client_data,
00084                                attr_list attrs);
00085 
00096 typedef void (*CMPollFunc) (CManager cm, void *client_data);
00097 
00109 typedef void (*CMCloseHandlerFunc) (CManager cm, CMConnection conn,
00110                                     void *client_data);
00111 
00123 typedef void (*CMWriteCallbackFunc) (CManager cm, CMConnection conn,
00124                                      void *client_data);
00125 
00126 
00127 
00133 /*NOLOCK*/
00134 extern CManager CManager_create();
00135 
00143 extern void CManager_close (CManager cm);
00144 
00152 /*NOLOCK*/
00153 extern void CMTrace_file_id (int ID);
00154 
00169 extern int CMfork_comm_thread (CManager cm);
00170 
00182 extern int CMlisten (CManager cm);
00183 
00209 extern int CMlisten_specific (CManager cm, attr_list listen_info);
00210 
00220 extern attr_list
00221 CMget_contact_list (CManager cm);
00222 
00232 extern void
00233 CM_insert_contact_info (CManager cm, attr_list attrs);
00234 
00246 extern attr_list
00247 CMget_specific_contact_list (CManager cm, attr_list attrs);
00248 
00261 extern int
00262 CMcontact_self_check (CManager cm, attr_list attrs);
00263 
00278 extern CMConnection
00279 CMget_conn (CManager cm, attr_list contact_list);
00280 
00296 extern CMConnection
00297 CMinitiate_conn (CManager cm, attr_list contact_list);
00298 
00313 extern void
00314 CMConnection_close (CMConnection conn);
00315 
00324 extern void
00325 CMConnection_add_reference (CMConnection conn);
00326 
00337 extern void
00338 CMconn_register_close_handler (CMConnection conn, 
00339                                CMCloseHandlerFunc func, 
00340                                void *client_data);
00347 extern attr_list 
00348 CMConnection_get_attrs (CMConnection conn);
00349 
00357 extern int
00358 CMConnection_set_character (CMConnection conn, attr_list attrs);
00359 
00367 extern CMConnection
00368 CMget_indexed_conn (CManager cm, int i);
00369 
00382 extern CMFormat
00383 CMregister_format (CManager cm, FMStructDescList format_list);
00384 
00400 extern CMFormat
00401 CMregister_simple_format (CManager cm, char *format_name, FMFieldList field_list, int struct_size);
00402 
00425 extern CMFormat CMlookup_format (CManager cm, FMStructDescList format_list);
00426 
00434 /*NOLOCK*/
00435 extern FMContext CMget_FMcontext(CManager cm);
00436 
00449 extern int
00450 CMwrite (CMConnection conn, CMFormat format, void *data);
00451 
00471 extern int
00472 CMwrite_attr (CMConnection conn, CMFormat format, void *data, 
00473               attr_list attrs);
00474 
00484 extern void
00485 CMregister_handler (CMFormat format, CMHandlerFunc handler, 
00486                     void *client_data);
00487 
00498 extern void
00499 CMregister_write_callback (CMConnection conn, 
00500                            CMWriteCallbackFunc handler,
00501                            void *client_data);
00502 
00518 extern int
00519 CMConnection_write_would_block (CMConnection conn);
00520 
00538 extern void *CMtake_buffer (CManager cm, void *data);
00539 
00549 extern void CMreturn_buffer (CManager cm, void *data);
00550 
00551 #include "cm_transport.h"
00562 typedef int (*CMNonCMHandler) (CMConnection conn, CMTransport transport,
00563                                char *buffer, long length);
00564 
00583 /*NOLOCK*/
00584 extern void
00585 CMregister_non_CM_message_handler (int header, CMNonCMHandler handler);
00586 
00595 /*NOLOCK*/
00596 extern CMtrans_services
00597 CMget_static_trans_services ();
00598 
00607 extern void*
00608 CMget_transport_data (CMConnection conn);
00609 
00620 extern void
00621 CMadd_poll (CManager cm, CMPollFunc func, void *client_data);
00622 
00642 extern CMTaskHandle
00643 CMadd_periodic_task (CManager cm, int period_sec, int period_usec, 
00644                      CMPollFunc func, void *client_data);
00645 
00663 extern CMTaskHandle
00664 CMadd_delayed_task (CManager cm, int secs, int usecs, CMPollFunc func,
00665                     void *client_data);
00666 
00672 extern void
00673 CMremove_task (CMTaskHandle handle);
00674 
00687 extern void
00688 CMadd_shutdown_task (CManager cm, CMPollFunc func, void *client_data, int task_type);
00689 
00693 #define NO_TASK 0
00694 
00697 #define SHUTDOWN_TASK 1
00698 
00701 #define FREE_TASK 2
00702 
00714 extern CMTaskHandle
00715 CMadd_periodic (CManager cm, long period, CMPollFunc func,
00716                 void *client_data);
00717 
00724 extern void
00725 CMremove_periodic (CMTaskHandle handle);
00726 
00739 extern void
00740 CMsleep (CManager cm, int secs);
00741 
00754 extern void
00755 CMusleep (CManager cm, int usecs);
00756 
00769 extern 
00770 void CMpoll_network (CManager cm);
00771 
00781 extern 
00782 void CMrun_network (CManager cm);
00783 
00792 typedef void (*select_func) (void *param1, void*param2);
00793 
00804 extern void
00805 CM_fd_add_select (CManager cm, int fd, select_func handler_func,
00806                   void *param1, void *param2);
00807 
00828 extern int CMCondition_get (CManager cm, CMConnection dep);
00829 
00853 extern int CMCondition_wait (CManager cm, int condition);
00854 
00866 extern void CMCondition_signal (CManager cm, int condition);
00867 
00890 extern void CMCondition_set_client_data (CManager cm, int condition,
00891                                        void *client_data);
00910 extern void *CMCondition_get_client_data (CManager cm, int condition);
00911 
00924 extern int CMCondition_has_signaled (CManager cm, int condition);
00937 extern int CMCondition_has_failed (CManager cm, int condition);
00938 
00954 /*NOLOCK*/
00955 extern void* CMrealloc (void *ptr, long size);
00962 /*NOLOCK*/
00963 extern void* CMmalloc (long size);
00969 /*NOLOCK*/
00970 extern void CMfree (void *ptr);
00971 
00995 extern long CMprobe_latency (CMConnection conn, long msg_size,
00996                                   attr_list attrs);
00997 
01013 extern double
01014 CMprobe_bandwidth (CMConnection conn, long size, attr_list attrs);
01015 
01031 extern double
01032 CMregressive_probe_bandwidth (CMConnection conn, long size, attr_list attrs);
01033 
01038 /*NOLOCK*/
01039 extern int
01040 CMget_self_ip_addr(CManager cm);
01041 
01045 struct _EVStone;
01046 struct _EVSource;
01054 typedef int EVstone;
01063 typedef int EVaction;
01072 typedef struct _EVSource *EVsource;
01073 
01083 typedef void (*EVSubmitCallbackFunc) (CManager cm, EVstone target, 
01084                                           void *client_data);
01085 
01102 typedef int (*EVSimpleHandlerFunc) (CManager cm, void *message, void *client_data,
01103                                     attr_list attrs);
01104 
01122 typedef int (*EVRawHandlerFunc) (CManager cm, void *message, int msg_len, void *client_data,
01123                                  attr_list attrs);
01124 
01137 typedef void (*EVStoneCloseHandlerFunc) (CManager cm, CMConnection conn, int stone, void *client_data);
01138 
01139 struct _event_item;
01140 
01152 /*REMOTE*/
01153 extern EVstone
01154 EValloc_stone(CManager cm);
01155 
01164 /*REMOTE*/
01165 extern void
01166 EVfree_stone(CManager cm, EVstone stone);
01167 
01186 /*REMOTE*/
01187 extern EVaction
01188 EVassoc_terminal_action(CManager cm, EVstone stone, FMStructDescList format_list, 
01189                         EVSimpleHandlerFunc handler, void* client_data);
01190 
01208 extern EVaction
01209 EVassoc_raw_terminal_action(CManager cm, EVstone stone, 
01210                             EVRawHandlerFunc handler, void* client_data);
01211 
01231 /*REMOTE*/
01232 extern EVstone
01233 EVcreate_terminal_action(CManager cm, FMStructDescList format_list, 
01234                         EVSimpleHandlerFunc handler, void* client_data);
01235 
01259 /*REMOTE*/
01260 extern EVaction
01261 EVassoc_multi_action(CManager cm, EVstone stone, char *action_spec, 
01262                      void *client_data);
01263 
01283 /*REMOTE*/
01284 extern EVaction
01285 EVassoc_immediate_action(CManager cm, EVstone stone, char *action_spec, 
01286                       void *client_data);
01287 
01310 /*REMOTE*/
01311 extern EVstone
01312 EVcreate_immediate_action(CManager cm, char *action_spec, EVstone *target_list);
01313 
01336 /*REMOTE*/
01337 extern int
01338 EVaction_set_output(CManager cm, EVstone stone, EVaction action, 
01339                     int output_index, EVstone target_stone);
01340 
01355 /*REMOTE*/
01356 extern int
01357 EVstone_set_output(CManager cm, EVstone stone, int output_index, EVstone target_stone);
01358 
01382 /*REMOTE*/
01383 extern EVaction
01384 EVassoc_filter_action(CManager cm, EVstone stone, 
01385                       FMStructDescList incoming_format_list, 
01386                       EVSimpleHandlerFunc handler, EVstone out_stone,
01387                       void* client_data);
01388 
01412 /*REMOTE*/
01413 extern EVaction
01414 EVassoc_bridge_action(CManager cm, EVstone stone, attr_list contact_list, 
01415                       EVstone remote_stone);
01416 
01441 /*REMOTE*/
01442 extern EVstone
01443 EVcreate_bridge_action(CManager cm, attr_list contact_list, 
01444                        EVstone remote_stone);
01445 
01465 extern EVaction
01466 EVassoc_thread_bridge_action(CManager cm, EVstone stone, CManager target_cm,
01467                              EVstone target_stone);
01468 
01487 extern EVstone
01488 EVcreate_thread_bridge_action(CManager cm, CManager target_cm,
01489                               EVstone target_stone);
01490 
01508 /*REMOTE*/
01509 extern EVaction
01510 EVassoc_split_action(CManager cm, EVstone stone, EVstone *target_list);
01511 
01529 /*REMOTE*/
01530 extern EVstone
01531 EVcreate_split_action(CManager cm, EVstone *target_list);
01532 
01546 /*REMOTE*/
01547 extern int
01548 EVaction_add_split_target(CManager cm, EVstone stone, EVaction action,
01549                           EVstone target_stone);
01550 
01562 /*REMOTE*/
01563 extern void
01564 EVaction_remove_split_target(CManager cm, EVstone stone, EVaction action,
01565                           EVstone target_stone);
01566 
01577 /*REMOTE*/
01578 extern void
01579 EVstone_add_split_target(CManager cm, EVstone stone, EVstone target_stone);
01580 
01591 /*REMOTE*/
01592 extern void
01593 EVstone_remove_split_target(CManager cm, EVstone stone, EVstone target_stone);
01594 
01613 extern EVaction
01614 EVassoc_congestion_action(CManager cm, EVstone stone, char *action_spec,
01615                           void* client_data);
01616 
01629 /*REMOTE*/
01630 extern EVstone
01631 EVcreate_store_action(CManager cm, EVstone out_stone, int store_limit);
01632 
01642 /*REMOTE*/
01643 extern EVstone
01644 EVcreate_stone_action(CManager cm, char *action_spec);
01645 
01662 /*REMOTE*/
01663 extern EVaction 
01664 EVassoc_store_action(CManager cm, EVstone stone_num, EVstone out_stone,
01665                         int store_limit);
01666 
01674 /*REMOTE*/ /* XXX??? */
01675 extern void
01676 EVclear_stored(CManager cm, EVstone stone_num, EVaction action_num);
01677 
01686 extern void
01687 EVsend_stored(CManager cm, EVstone stone_num, EVaction action_num);
01688 
01697 extern int 
01698 EVstore_count(CManager cm, EVstone stone_num, EVaction action_num); 
01699 
01708 extern int
01709 EVstore_is_sending(CManager cm, EVstone stone_num, EVaction action_num);
01710 
01718 extern void
01719 EVstore_start_send(CManager cm, EVstone stone_num, EVaction action_num); 
01720 
01731 extern void
01732 EVset_store_limit(CManager cm, EVstone stone_num, EVaction action_num,
01733     int store_limit);
01734 
01749 extern EVsource
01750 EVcreate_submit_handle(CManager cm, EVstone stone, FMStructDescList data_format);
01751 
01758 extern void
01759 EVfree_source(EVsource source);
01760 
01778 typedef void (*EVFreeFunction) (void *event_data, void *client_data);
01779 
01802 extern EVsource
01803 EVcreate_submit_handle_free(CManager cm, EVstone stone, FMStructDescList data_format,
01804                             EVFreeFunction free_func, void *client_data);
01805 
01821 extern void
01822 EVsubmit(EVsource source, void *data, attr_list attrs);
01823 
01845 extern void
01846 EVsubmit_general(EVsource source, void *data, EVFreeFunction free_func,
01847                  attr_list attrs);
01848 
01866 extern void
01867 EVsubmit_encoded(CManager cm, EVstone stone, void *data, int data_len,
01868                  attr_list attrs);
01869 
01881 /*REMOTE*/
01882 extern int
01883 EVtransfer_events(CManager cm, EVstone src_stone, EVstone dest_stone);
01884 
01903 extern int
01904 EVtake_event_buffer (CManager cm, void *event);
01905 
01915 extern void
01916 EVreturn_event_buffer (CManager cm, void *event);
01917 
01928 extern FMFormat
01929 EVget_src_ref_format(EVsource source);
01930 
01940 /*REMOTE*/
01941 extern void
01942 EVenable_auto_stone(CManager cm, EVstone stone_num, int period_sec, 
01943                     int period_usec);
01944 
01960 /*REMOTE*/
01961 extern EVstone
01962 EVcreate_auto_stone(CManager cm, int period_sec, int period_usec, 
01963                     char *action_spec, EVstone out_stone);
01964 
01965 
01978 /*REMOTE*/
01979 extern void
01980 EVstall_stone(CManager cm, EVstone stone_id);
01981 
01990 /*REMOTE*/
01991 extern void
01992 EVunstall_stone(CManager cm, EVstone stone_id); 
01993 
02004 extern int
02005 EVsubmit_or_wait(EVsource source, void *data, attr_list attrs, EVSubmitCallbackFunc cb, void *user_data);
02006 
02017 extern int
02018 EVsubmit_encoded_or_wait(CManager cm, EVstone stone, void *data, int data_len, attr_list attrs,
02019                             EVSubmitCallbackFunc cb, void *user_data);
02020 
02033 /*REMOTE*/
02034 extern int
02035 EVfreeze_stone(CManager cm, EVstone stone_id);
02036 
02047 /*REMOTE*/
02048 extern int
02049 EVunfreeze_stone(CManager cm, EVstone stone_id);
02050 
02065 /*REMOTE*/
02066 extern int
02067 EVdrain_stone(CManager cm, EVstone stone_id);
02068 
02084 extern EVstone
02085 EVexecuting_stone(CManager cm);
02086 
02099 extern EVevent_list
02100 EVextract_stone_events(CManager cm, EVstone stone_id);
02101 
02112 /*REMOTE*/
02113 extern attr_list
02114 EVextract_attr_list(CManager cm, EVstone stone_id);
02115 
02126 /*REMOTE*/
02127 extern void
02128 EVset_attr_list(CManager cm, EVstone stone_id, attr_list list);
02129 
02139 /*REMOTE*/
02140 extern int
02141 EVdestroy_stone(CManager cm, EVstone stone_id);
02142 
02152 /*NOLOCK*/
02153 extern char *
02154 create_filter_action_spec(FMStructDescList format_list, char *function);
02155 
02168 /*NOLOCK*/
02169 extern char *
02170 create_router_action_spec(FMStructDescList format_list, char *function);
02171 
02182 /*NOLOCK*/
02183 extern char *
02184 create_transform_action_spec(FMStructDescList format_list, FMStructDescList out_format_list, char *function);
02185 
02194 /*NOLOCK*/
02195 extern char *
02196 create_multityped_action_spec(FMStructDescList *input_format_lists, char *function);
02197 
02198 #ifdef __COD__H__
02199 
02209 extern void
02210 EVadd_standard_routines(CManager cm, char *extern_string, 
02211                         cod_extern_entry *externs);
02212 #endif
02213 
02219 /*NOLOCK*/
02220 extern void
02221 EVadd_dll_search_dir(char *path_string);
02222 
02229 extern void
02230 EVadd_standard_structs(CManager cm, FMStructDescList *lists);
02231 
02239 extern void
02240 EVregister_close_handler(CManager cm, EVStoneCloseHandlerFunc handler, void *client_data);
02241 
02249 void
02250 EVdump_stone(CManager cm,  EVstone stone_num);
02251 
02260 typedef int (*EVImmediateHandlerFunc) (CManager cm, struct _event_item *event, 
02261                                        void *client_data, attr_list attrs, 
02262                                        int out_count, int *out_stones);
02271 extern void
02272 EVassoc_conversion_action(CManager cm, int stone_id, int stage, FMFormat target_format,
02273                           FMFormat incoming_format);
02274 
02298 extern attr_list
02299 CMtest_transport(CMConnection conn, attr_list how);
02300 
02317 typedef attr_list (*CMperf_upcall)(CManager cm, void *buffer, long length, int type, attr_list list);
02318 
02327 extern void
02328 CMinstall_perf_upcall(CManager cm, CMperf_upcall upcall);
02329 
02330 /* @}*/
02331 
02332 #ifdef  __cplusplus
02333 }
02334 #endif
02335 
02336 #endif