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
7 http://www.apache.org/licenses/LICENSE-2.0
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 ------------------------------------------- */
16 * lapp.h: low level interface for applications
29 #define REGULAR_TUPLE 0
30 #define TEMPORAL_TUPLE 1
33 /* LOW LEVEL APPLICATION INTERFACE */
34 /* =============================== */
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
41 #define CLEARINGHOUSE 1
46 /* deviceid should be set to DEFAULTDEV mapcnt and map to 0 for HFTAs and apps */
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[]);
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*/
55 gs_retval_t fta_find(FTAname name, gs_uint32_t reuse, FTAID * ftaid,
56 gs_sp_t schema , gs_int32_t buffersz );
58 /* the following is used to send a heart beat message to the clearinghouse. Self is the FTAID of the sending
61 gs_retval_t fta_heartbeat(FTAID self, gs_uint64_t trace_id,
62 gs_uint32_t sz, fta_stat * trace);
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.
73 gs_retval_t fta_alloc_instance(FTAID subscriber,
74 FTAID * ftaid, FTAname name, gs_sp_t schema,
76 gs_int32_t command, gs_int32_t sz, void * data);
78 /* see app.h for description of the additional parameter */
79 gs_retval_t fta_alloc_print_instance(FTAID subscriber,
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);
89 * the next two functions result in callouts to the corresponding FTA
90 * functions (fta_free, control_fta).
93 gs_retval_t fta_free_instance(FTAID subscriber,FTAID ftaid, gs_uint32_t recursive);
96 gs_retval_t fta_control(FTAID subscriber,
97 FTAID ftaid, gs_int32_t command, gs_int32_t sz, void * value);
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.
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);
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*/
118 gs_retval_t process_control(FTAID ftaid, gs_int32_t command,
119 gs_int32_t sz, void * value);
122 /* called by an FTA if one of its producers fails. Self is the FTAID of the instance
123 * sending the notification */
125 gs_retval_t fta_notify_producer_failure(FTAID self, FTAID producer);
127 /* returns FTAID of current process */
128 FTAID gscpipc_getftaid();
130 extern gs_uint64_t shared_memory_full_warning;
132 /* returns 1 if GSCP ringbuffers are in blocking mode */
133 gs_retval_t gscp_blocking_mode();