Add new udafs and RMR support to gsprintconsole_ves
[com/gs-lite.git] / include / lapp.h
1 /* ------------------------------------------------
2  Copyright 2014 AT&T Intellectual Property
3  Licensed under the Apache License, Version 2.0 (the "License");
4  you may not use this file except in compliance with the License.
5  You may obtain a copy of the License at
6  
7  http://www.apache.org/licenses/LICENSE-2.0
8  
9  Unless required by applicable law or agreed to in writing, software
10  distributed under the License is distributed on an "AS IS" BASIS,
11  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  See the License for the specific language governing permissions and
13  limitations under the License.
14  ------------------------------------------- */
15 /*
16  * lapp.h: low level interface for applications
17  */
18 #ifndef LAPP_H
19 #define LAPP_H
20
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24
25 #include <fta.h>
26 #include <systat.h>
27 #include <fta_stat.h>
28
29 #define REGULAR_TUPLE 0
30 #define TEMPORAL_TUPLE 1
31 #define EOF_TUPLE 2
32
33 /* LOW LEVEL APPLICATION INTERFACE */
34 /* =============================== */
35
36 /* NOTE: A streamid is only unique in the context of a particular
37  * producer. Therefore, all the fields in the FTAID need to be compared
38  * to decided if to FTA instances are the same
39  */
40
41 #define CLEARINGHOUSE 1
42 #define APP 2
43 #define HFTA 3
44 #define LFTA 4
45
46 /* deviceid should be set to DEFAULTDEV mapcnt and map to 0 for HFTAs and apps */
47
48 gs_retval_t hostlib_init(gs_int32_t type, gs_int32_t recvbuffersz, gs_int32_t deviceid,  gs_int32_t mapcnt, gs_sp_t map[]);
49
50 void hostlib_free();
51
52 /* find an FTA message queue ID, index and schema based on an FTA key
53  * if reuse is set we return an already running instance if possible*/
54
55 gs_retval_t fta_find(FTAname name, gs_uint32_t  reuse,  FTAID * ftaid,
56                      gs_sp_t schema , gs_int32_t buffersz );
57
58 /* the following is used to send a heart beat message to the clearinghouse. Self is the FTAID of the sending
59  * fta instance*/
60
61 gs_retval_t fta_heartbeat(FTAID self, gs_uint64_t trace_id,
62                           gs_uint32_t  sz, fta_stat * trace);
63
64 /*
65  * FTA's cannot be dynamically installed (since we currently don't
66  * have a run-time linker in the card).  however, new parameterized
67  * instances of previously installed FTAs can be created.  The FTA
68  * template IDs have to defined in an include file.  the following
69  * call will result in a call to the FTA's alloc_fta function.
70  * if sucessfull the streamid is set in the ftaid.
71  */
72
73 gs_retval_t fta_alloc_instance(FTAID subscriber,
74                                FTAID * ftaid, FTAname name, gs_sp_t schema,
75                                gs_uint32_t  reusable,
76                                gs_int32_t command, gs_int32_t sz, void *  data);
77
78 /* see app.h for description of the additional parameter */
79 gs_retval_t fta_alloc_print_instance(FTAID subscriber,
80                                      FTAID * ftaid,
81                                      FTAname name, gs_sp_t schema,gs_uint32_t  reusable,
82                                      gs_int32_t command, gs_int32_t sz, void *  data,
83                                      gs_sp_t path,gs_sp_t basename,
84                                      gs_sp_t temporal_field, gs_sp_t split_field,
85                                      gs_uint32_t  delta, gs_uint32_t  split);
86
87
88 /*
89  * the next two functions result in callouts to the corresponding FTA
90  * functions (fta_free, control_fta).
91  */
92
93 gs_retval_t fta_free_instance(FTAID subscriber,FTAID ftaid, gs_uint32_t  recursive);
94
95
96 gs_retval_t fta_control(FTAID subscriber,
97                         FTAID ftaid, gs_int32_t command, gs_int32_t sz, void * value);
98
99
100 /*
101  * gscp_get_buffer: get a tuple from a read shared buffer
102  * established with any other porcess  when an FTA
103  * was established. Returns -1 on error, 0 on success and 1 on timeout and 2 for a temporal tuple.
104  * On a timeout the streamid is set to 1 and the length to 0.
105  * The timeout is in seconds. A timeout of 0 makes the call blocking
106  * a timeout of -1 returns imidiatly if no buffer is availabe.
107  */
108 gs_retval_t gscp_get_buffer(FTAID * ftaid, gs_int32_t * size, void *tbuffer,
109                             gs_int32_t tbuf_size, gs_int32_t timeout);
110
111 /* the following function send a control callback to every
112  active FTA in a particular process identified by the
113  IP and port part of the ftaid. The result is < 0 if not
114  successful if the control operation is returning a result it is ignored.
115  The main purpose of this message is to support a
116  flush of all FTAs in a proccess*/
117
118 gs_retval_t process_control(FTAID ftaid, gs_int32_t command,
119                             gs_int32_t sz, void * value);
120
121
122 /* called by an FTA if one of its producers fails. Self is the FTAID of the instance
123  * sending the notification */
124
125 gs_retval_t fta_notify_producer_failure(FTAID self, FTAID producer);
126
127 /* returns FTAID of current process */
128 FTAID  gscpipc_getftaid();
129
130 extern gs_uint64_t shared_memory_full_warning;
131
132 /* returns 1 if GSCP ringbuffers are in blocking mode */
133 gs_retval_t gscp_blocking_mode();
134
135 #ifdef __cplusplus
136 }
137 #endif
138
139 #endif