OpenClovis Logo

saEvt.h
1 /*
2  * Copyright (C) 2002-2012 OpenClovis Solutions Inc. All Rights Reserved.
3  *
4  * This file is available under a commercial license from the
5  * copyright holder or the GNU General Public License Version 2.0.
6  *
7  * The source code for this program is not published or otherwise
8  * divested of its trade secrets, irrespective of what has been
9  * deposited with the U.S. Copyright office.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * General Public License for more details.
15  *
16  * For more information, see the file COPYING provided with this
17  * material.
18  */
19 /*******************************************************************************
20  * ModuleName : event
21  * File : saEvt.h
22  *******************************************************************************/
23 
24 /*******************************************************************************
25  * Description :
26  *******************************************************************************/
27 
28 /*
29  * Header file of SA Forum AIS EVT APIs (SAI-AIS-B.01.00.09) compiled on
30  * 21SEP2004 by sayandeb.saha@motorola.com.
31  */
32 
33 #ifndef _SA_EVT_H
34 # define _SA_EVT_H
35 
36 # include <saAis.h>
37 
38 # ifdef __cplusplus
39 extern "C"
40 {
41 # endif
42 
43  typedef SaUint64T SaEvtHandleT;
44  typedef SaUint64T SaEvtEventHandleT;
45  typedef SaUint64T SaEvtChannelHandleT;
46  typedef SaUint32T SaEvtSubscriptionIdT;
47 
48 
49  typedef void (*SaEvtChannelOpenCallbackT) (SaInvocationT invocation,
50  SaEvtChannelHandleT
51  channelHandle,
52  SaAisErrorT error);
53  typedef void (*SaEvtEventDeliverCallbackT) (SaEvtSubscriptionIdT
54  subscriptionId,
55  SaEvtEventHandleT eventHandle,
56  SaSizeT eventDataSize);
57 
58  typedef struct
59  {
60  SaEvtChannelOpenCallbackT saEvtChannelOpenCallback;
61  SaEvtEventDeliverCallbackT saEvtEventDeliverCallback;
62  } SaEvtCallbacksT;
63 
64 # define SA_EVT_CHANNEL_PUBLISHER 0x1
65 # define SA_EVT_CHANNEL_SUBSCRIBER 0x2
66 # define SA_EVT_CHANNEL_CREATE 0x4
67  typedef SaUint8T SaEvtChannelOpenFlagsT;
68 
69  typedef struct
70  {
71  SaSizeT allocatedSize;
72  SaSizeT patternSize;
73  SaUint8T *pattern;
74  } SaEvtEventPatternT;
75 
76  typedef struct
77  {
78  SaSizeT allocatedNumber;
79  SaSizeT patternsNumber;
80  SaEvtEventPatternT *patterns;
81  } SaEvtEventPatternArrayT;
82 
83 
84 # define SA_EVT_HIGHEST_PRIORITY 0
85 # define SA_EVT_LOWEST_PRIORITY 3
86  typedef SaUint8T SaEvtEventPriorityT;
87 
88  typedef SaUint64T SaEvtEventIdT;
89 # define SA_EVT_EVENTID_NONE 0
90 # define SA_EVT_EVENTID_LOST 1
91 
92 # define SA_EVT_LOST_EVENT "SA_EVT_LOST_EVENT_PATTERN"
93 
94  typedef enum
95  {
96  SA_EVT_PREFIX_FILTER = 1,
97  SA_EVT_SUFFIX_FILTER = 2,
98  SA_EVT_EXACT_FILTER = 3,
99  SA_EVT_PASS_ALL_FILTER = 4
100  } SaEvtEventFilterTypeT;
101 
102  typedef struct
103  {
104  SaEvtEventFilterTypeT filterType;
105  SaEvtEventPatternT filter;
106  } SaEvtEventFilterT;
107 
108  typedef struct
109  {
110  SaSizeT filtersNumber;
111  SaEvtEventFilterT *filters;
112  } SaEvtEventFilterArrayT;
113 
114  extern SaAisErrorT saEvtInitialize(SaEvtHandleT * evtHandle,
115  const SaEvtCallbacksT * callbacks,
116  SaVersionT *version);
117  extern SaAisErrorT saEvtSelectionObjectGet(SaEvtHandleT evtHandle,
118  SaSelectionObjectT *
119  selectionObject);
120  extern SaAisErrorT saEvtDispatch(SaEvtHandleT evtHandle,
121  SaDispatchFlagsT dispatchFlags);
122  extern SaAisErrorT saEvtFinalize(SaEvtHandleT evtHandle);
123  extern SaAisErrorT saEvtChannelOpen(SaEvtHandleT evtHandle,
124  const SaNameT *channelName,
125  SaEvtChannelOpenFlagsT channelOpenFlags,
126  SaTimeT timeout,
127  SaEvtChannelHandleT *channelHandle);
128  extern SaAisErrorT saEvtChannelOpenAsync(SaEvtHandleT evtHandle,
129  SaInvocationT invocation,
130  const SaNameT *channelName,
131  SaEvtChannelOpenFlagsT
132  channelOpenFlags);
133  extern SaAisErrorT saEvtChannelClose(SaEvtChannelHandleT channelHandle);
134  extern SaAisErrorT saEvtChannelUnlink(SaEvtHandleT evtHandle,
135  const SaNameT *channelName);
136  extern SaAisErrorT saEvtEventAllocate(SaEvtChannelHandleT channelHandle,
137  SaEvtEventHandleT *eventHandle);
138  extern SaAisErrorT saEvtEventFree(SaEvtEventHandleT eventHandle);
139  extern SaAisErrorT saEvtEventAttributesSet(SaEvtEventHandleT eventHandle,
140  const SaEvtEventPatternArrayT
141  *patternArray, SaUint8T priority,
142  SaTimeT retentionTime,
143  const SaNameT *publisherName);
144  extern SaAisErrorT saEvtEventAttributesGet(SaEvtEventHandleT eventHandle,
145  SaEvtEventPatternArrayT
146  *patternArray,
147  SaUint8T *priority,
148  SaTimeT * retentionTime,
149  SaNameT *publisherName,
150  SaTimeT * publishTime,
151  SaEvtEventIdT * eventId);
152  extern SaAisErrorT saEvtEventDataGet(SaEvtEventHandleT eventHandle,
153  void *eventData,
154  SaSizeT *eventDataSize);
155  extern SaAisErrorT saEvtEventPublish(SaEvtEventHandleT eventHandle,
156  const void *eventData,
157  SaSizeT eventDataSize,
158  SaEvtEventIdT * eventId);
159  extern SaAisErrorT saEvtEventSubscribe(SaEvtChannelHandleT channelHandle,
160  const SaEvtEventFilterArrayT
161  *filters,
162  SaEvtSubscriptionIdT subscriptionId);
163  extern SaAisErrorT saEvtEventUnsubscribe(SaEvtChannelHandleT channelHandle,
164  SaEvtSubscriptionIdT
165  subscriptionId);
166  extern SaAisErrorT saEvtEventRetentionTimeClear(SaEvtChannelHandleT
167  channelHandle,
168  SaEvtEventIdT eventId);
169 
170 # ifdef __cplusplus
171 }
172 # endif
173 
174 #endif /* _SA_EVT_H */

Generated on Tue Jan 10 10:29:15 PST 2012 for OpenClovis SDK using Doxygen