Apama  10.15.6.0
AP_TimestampSet.h
Go to the documentation of this file.
1 /*
2  * Title: AP_TimestampSet.h
3  * Description: High-accuracy time stamp generator
4  * $Copyright(c) 2008, 2009, 2011-2018, 2022 Cumulocity GmbH, Duesseldorf, Germany and/or its affiliates and/or their licensors.$
5  * Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Cumulocity GmbH.
6  * @author Henry Lockwood
7  */
8 
9 #ifndef AP_TIMESTAMP_SET_H
10 #define AP_TIMESTAMP_SET_H
11 
12 #include <AP_Platform.h>
13 #include <IAF_Platform.h>
14 #include <sys/timeb.h>
15 #include <string.h>
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
25 /*
26  * High-res timestamp IDs. These are symbolic constants used to index
27  * where a timestamp was created.
28  */
29 
30 /*
31  * Downstream (incoming towards correlator) timestamp IDs
32  */
33 
34 /* 1000-1999 are for downstream events in the IAF */
35 #define AP_TIMESTAMP_DOWNSTREAM_IAF_MIN 1000
36 
38 #define AP_TIMESTAMP_DOWNSTREAM_IAF_TRANSPORT_ENTRY 1000
39 
40 #define AP_TIMESTAMP_DOWNSTREAM_IAF_TRANSPORT_EXIT 1249
41 
43 #define AP_TIMESTAMP_DOWNSTREAM_IAF_DECODER_ENTRY 1250
44 
45 #define AP_TIMESTAMP_DOWNSTREAM_IAF_DECODER_EXIT 1499
46 
48 #define AP_TIMESTAMP_DOWNSTREAM_IAF_MAPPER_ENTRY 1500
49 
50 #define AP_TIMESTAMP_DOWNSTREAM_IAF_MAPPER_EXIT 1749
51 
53 #define AP_TIMESTAMP_DOWNSTREAM_IAF_APAMA_ENTRY 1750
54 
55 #define AP_TIMESTAMP_DOWNSTREAM_IAF_APAMA_EXIT 1999
56 #define AP_TIMESTAMP_DOWNSTREAM_IAF_MAX 1999
57 
58 /* 3000-3999 are for downstream events in the sender */
59 #define AP_TIMESTAMP_DOWNSTREAM_SENDER_MIN 3000
60 #define AP_TIMESTAMP_DOWNSTREAM_SENDER_MAX 3999
61 
62 /* 5000-5999 are for downstream events in the correlator */
63 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_MIN 5000
64 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_INPUT_MIN 5000
65 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_INPUT_MAX 5099
66 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_SERVICE_MONITOR_MIN 5100
67 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_SERVICE_MONITOR_MAX 5299
68 /* Reserved for internal Apama framework use */
69 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_RESERVED1_MIN 5300
70 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_RESERVED1_MAX 5499
71 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_RESERVED2_MIN 5500
72 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_RESERVED2_MAX 5699
73 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_APPLICATION_MIN 5700
74 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_APPLICATION_MAX 5899
75 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_OUTPUT_MIN 5900
76 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_OUTPUT_MAX 5999
77 #define AP_TIMESTAMP_DOWNSTREAM_CORRELATOR_MAX 5999
78 
79 /* 7000-7999 are for downstream events in the merger */
80 #define AP_TIMESTAMP_DOWNSTREAM_MERGER_MIN 7000
81 #define AP_TIMESTAMP_DOWNSTREAM_MERGE_MAX 7999
82 
83 /* 9000-9999 are for downstream events in an external receiver client */
84 #define AP_TIMESTAMP_DOWNSTREAM_CLIENT_MIN 9000
85 #define AP_TIMESTAMP_DOWNSTREAM_CLIENT_MAX 9999
86 
87 /*
88  * Upstream (outgoing from correlator) timestamp IDs
89  */
90 
91 /* 11000-11999 are for upstream events in an external sender client */
92 #define AP_TIMESTAMP_UPSTREAM_CLIENT_MIN 11000
93 #define AP_TIMESTAMP_UPSTREAM_CLIENT_MAX 11999
94 
95 /* 13000-13999 are for upstream events in the sender */
96 #define AP_TIMESTAMP_UPSTREAM_SENDER_MIN 13000
97 #define AP_TIMESTAMP_UPSTREAM_SENDER_MAX 13999
98 
99 /* 15000-15999 are for upstream events in the correlator */
100 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_MIN 15000
101 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_INPUT_MIN 15000
102 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_INPUT_MAX 15099
103 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_APPLICATION_MIN 15100
104 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_APPLICATION_MAX 15299
105 /* Reserved for internal Apama framework use */
106 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_RESERVED2_MIN 15300
107 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_RESERVED2_MAX 15499
108 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_RESERVED1_MIN 15500
109 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_RESERVED1_MAX 15699
110 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_SERVICE_MONITOR_MIN 15700
111 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_SERVICE_MONITOR_MAX 15899
112 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_OUTPUT_MIN 15900
113 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_OUTPUT_MAX 15999
114 #define AP_TIMESTAMP_UPSTREAM_CORRELATOR_MAX 15999
115 
116 /* 17000-17999 are for upstream events in the merger */
117 #define AP_TIMESTAMP_UPSTREAM_MERGER_MIN 17000
118 #define AP_TIMESTAMP_UPSTREAM_MERGER_MAX 17999
119 
120 /* 19000-19999 are for upstream events in the IAF */
121 #define AP_TIMESTAMP_UPSTREAM_IAF_MIN 19000
122 
123 #define AP_TIMESTAMP_UPSTREAM_IAF_APAMA_ENTRY 19000
124 
125 #define AP_TIMESTAMP_UPSTREAM_IAF_APAMA_EXIT 19249
126 
128 #define AP_TIMESTAMP_UPSTREAM_IAF_MAPPER_ENTRY 19250
129 
130 #define AP_TIMESTAMP_UPSTREAM_IAF_MAPPER_EXIT 19499
131 
133 #define AP_TIMESTAMP_UPSTREAM_IAF_ENCODER_ENTRY 19500
134 
135 #define AP_TIMESTAMP_UPSTREAM_IAF_ENCODER_EXIT 19749
136 
138 #define AP_TIMESTAMP_UPSTREAM_IAF_TRANSPORT_ENTRY 19750
139 
140 #define AP_TIMESTAMP_UPSTREAM_IAF_TRANSPORT_EXIT 19999
141 
142 #define AP_TIMESTAMP_UPSTREAM_IAF_MAX 19999
143 
144 
154 
159 typedef AP_uint64 AP_TimestampSetIndex;
160 
161 
166 typedef double AP_TimestampSetTime;
167 
168 
182 {
193  void (*addNow)(struct AP_TimestampSet* timestamp, AP_TimestampSetIndex index);
194 
206  void (*addTime)(struct AP_TimestampSet* timestamp, AP_TimestampSetIndex index, AP_TimestampSetTime time);
207 
220  void (*replace)(struct AP_TimestampSet* timestamp, AP_TimestampSetIndex index, AP_TimestampSetTime newTime);
221 
233  void (*replaceWithNow)(struct AP_TimestampSet* timestamp, AP_TimestampSetIndex index);
234 
247 
264 
268  AP_bool (*getNextStampAndRemove)(struct AP_TimestampSet* timestamp, AP_TimestampSetIndex* retIndex, AP_TimestampSetTime* retTime);
269 
278  AP_uint32 (*getSize)(struct AP_TimestampSet* timestamp);
279 
290  AP_char8* (*toString)(struct AP_TimestampSet* timestamp);
291 };
292 
293 
306 
310  void* reserved;
311 
317 
318 };
319 typedef struct AP_TimestampSet AP_TimestampSet;
320 
321 
330 AP_COMMON_API AP_TimestampSet* AP_TimestampSet_ctor();
331 
332 
344 
345 
354 AP_COMMON_API void AP_TimestampSet_dtor(AP_TimestampSet* timestamp);
355 
369 
370 #ifdef __cplusplus
371 } /* extern "C" */
372 #endif
373 
374 #endif /* __CTIMESTAMP_HA_INCLUDED__ */
AP_TimestampSetTime(* findTimeAndRemove)(struct AP_TimestampSet *timestamp, AP_TimestampSetIndex index)
findTimeAndRemove
Definition: AP_TimestampSet.h:263
AP_uint64 AP_TimestampSetIndex
Field keys are integer indices.
Definition: AP_TimestampSet.h:153
AP_TimestampSet_Functions.
Definition: AP_TimestampSet.h:181
void(* addNow)(struct AP_TimestampSet *timestamp, AP_TimestampSetIndex index)
addNow
Definition: AP_TimestampSet.h:193
struct AP_TimestampSet_Functions * functions
Function table of internal operations on the timestamp object.
Definition: AP_TimestampSet.h:316
void * reserved
Pointer to private internal data.
Definition: AP_TimestampSet.h:310
AP_uint32(* getSize)(struct AP_TimestampSet *timestamp)
getSize
Definition: AP_TimestampSet.h:278
AP_COMMON_API AP_TimestampSet * AP_TimestampSet_ctor()
AP_TimestampSet_ctor.
AP_COMMON_API AP_TimestampSet * AP_TimestampSet_copy(AP_TimestampSet *old)
AP_TimestampSet_copy.
double AP_TimestampSetTime
Field values are double-precision floating point numbers.
Definition: AP_TimestampSet.h:166
AP_TimestampSetTime(* findTime)(struct AP_TimestampSet *timestamp, AP_TimestampSetIndex index)
findTime
Definition: AP_TimestampSet.h:246
AP_bool(* getNextStampAndRemove)(struct AP_TimestampSet *timestamp, AP_TimestampSetIndex *retIndex, AP_TimestampSetTime *retTime)
getNextStampAndRemove
Definition: AP_TimestampSet.h:268
AP_TimestampSet.
Definition: AP_TimestampSet.h:305
void(* replace)(struct AP_TimestampSet *timestamp, AP_TimestampSetIndex index, AP_TimestampSetTime newTime)
replace
Definition: AP_TimestampSet.h:220
AP_COMMON_API AP_TimestampSetTime AP_TimestampSet_getRelativeTime()
AP_TimestampSet_getRelativeTime.
void(* replaceWithNow)(struct AP_TimestampSet *timestamp, AP_TimestampSetIndex index)
replaceWithNow
Definition: AP_TimestampSet.h:233
AP_COMMON_API void AP_TimestampSet_dtor(AP_TimestampSet *timestamp)
AP_TimestampSet_dtor.
void(* addTime)(struct AP_TimestampSet *timestamp, AP_TimestampSetIndex index, AP_TimestampSetTime time)
addTime
Definition: AP_TimestampSet.h:206