OpenClovis Logo

saCkpt.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 : ckpt
21  * File : saCkpt.h
22  *******************************************************************************/
23 
24 /*******************************************************************************
25  * Description :
26  *******************************************************************************/
27 
28 /*
29 
30  Header file of SA Forum AIS CKPT APIs (SAI-AIS-B.01.00.09)
31  compiled on 28SEP2004 by sayandeb.saha@motorola.com.
32 */
33 
34 #ifndef _SA_CKPT_H_
35 #define _SA_CKPT_H_
36 
37 # ifdef __cplusplus
38 extern "C" {
39 # endif
40 
41 #include <saAis.h>
42 
43 typedef SaUint64T SaCkptHandleT;
44 typedef SaUint64T SaCkptCheckpointHandleT;
45 typedef SaUint64T SaCkptSectionIterationHandleT;
46 
47 #define SA_CKPT_WR_ALL_REPLICAS 0X1
48 #define SA_CKPT_WR_ACTIVE_REPLICA 0X2
49 #define SA_CKPT_WR_ACTIVE_REPLICA_WEAK 0X4
50 #define SA_CKPT_CHECKPOINT_COLLOCATED 0X8
51 
52 typedef SaUint32T SaCkptCheckpointCreationFlagsT;
53 
54 typedef struct {
55  SaCkptCheckpointCreationFlagsT creationFlags;
56  SaSizeT checkpointSize;
57  SaTimeT retentionDuration;
58  SaUint32T maxSections;
59  SaSizeT maxSectionSize;
60  SaSizeT maxSectionIdSize;
61 } SaCkptCheckpointCreationAttributesT;
62 
63 #define SA_CKPT_CHECKPOINT_READ 0X1
64 #define SA_CKPT_CHECKPOINT_WRITE 0X2
65 #define SA_CKPT_CHECKPOINT_CREATE 0X4
66 
67 typedef SaUint32T SaCkptCheckpointOpenFlagsT;
68 
69 #define SA_CKPT_DEFAULT_SECTION_ID {0, NULL}
70 #define SA_CKPT_GENERATED_SECTION_ID {0, NULL}
71 
72 typedef struct {
73  SaUint16T idLen;
74  SaUint8T *id;
75 } SaCkptSectionIdT;
76 
77 typedef struct {
78  SaCkptSectionIdT *sectionId;
79  SaTimeT expirationTime;
80 } SaCkptSectionCreationAttributesT;
81 
82 typedef enum {
83  SA_CKPT_SECTION_VALID = 1,
84  SA_CKPT_SECTION_CORRUPTED = 2
85 } SaCkptSectionStateT;
86 
87 typedef struct {
88  SaCkptSectionIdT sectionId;
89  SaTimeT expirationTime;
90  SaSizeT sectionSize;
91  SaCkptSectionStateT sectionState;
92  SaTimeT lastUpdate;
93 } SaCkptSectionDescriptorT;
94 
95 typedef enum {
96  SA_CKPT_SECTIONS_FOREVER = 1,
97  SA_CKPT_SECTIONS_LEQ_EXPIRATION_TIME = 2,
98  SA_CKPT_SECTIONS_GEQ_EXPIRATION_TIME = 3,
99  SA_CKPT_SECTIONS_CORRUPTED = 4,
100  SA_CKPT_SECTIONS_ANY = 5
101 } SaCkptSectionsChosenT;
102 
103 typedef struct {
104  SaCkptSectionIdT sectionId;
105  void *dataBuffer;
106  SaSizeT dataSize;
107  SaOffsetT dataOffset;
108  SaSizeT readSize;
109 } SaCkptIOVectorElementT;
110 
111 typedef struct {
112  SaCkptCheckpointCreationAttributesT checkpointCreationAttributes;
113  SaUint32T numberOfSections;
114  SaUint32T memoryUsed;
115 } SaCkptCheckpointDescriptorT;
116 
117 typedef void
118 (*SaCkptCheckpointOpenCallbackT)(SaInvocationT invocation,
119  SaCkptCheckpointHandleT checkpointHandle,
120  SaAisErrorT error);
121 typedef void
122 (*SaCkptCheckpointSynchronizeCallbackT)(SaInvocationT invocation,
123  SaAisErrorT error);
124 
125 typedef struct {
126  SaCkptCheckpointOpenCallbackT saCkptCheckpointOpenCallback;
127  SaCkptCheckpointSynchronizeCallbackT saCkptCheckpointSynchronizeCallback;
128 } SaCkptCallbacksT;
129 
130  extern SaAisErrorT
131 saCkptInitialize(SaCkptHandleT *ckptHandle,
132  const SaCkptCallbacksT *callbacks,
133  SaVersionT *version);
134  extern SaAisErrorT
135 saCkptSelectionObjectGet(SaCkptHandleT ckptHandle,
136  SaSelectionObjectT *selectionObject);
137  extern SaAisErrorT
138 saCkptDispatch(SaCkptHandleT ckptHandle,
139  SaDispatchFlagsT dispatchFlags);
140  extern SaAisErrorT
141 saCkptFinalize(SaCkptHandleT ckptHandle);
142  extern SaAisErrorT
143 saCkptCheckpointOpen(SaCkptHandleT ckptHandle,
144  const SaNameT *ckeckpointName,
145  const SaCkptCheckpointCreationAttributesT *checkpointCreationAttributes,
146  SaCkptCheckpointOpenFlagsT checkpointOpenFlags,
147  SaTimeT timeout,
148  SaCkptCheckpointHandleT *checkpointHandle);
149  extern SaAisErrorT
150 saCkptCheckpointOpenAsync(SaCkptHandleT ckptHandle,
151  SaInvocationT invocation,
152  const SaNameT *ckeckpointName,
153  const SaCkptCheckpointCreationAttributesT *checkpointCreationAttributes,
154  SaCkptCheckpointOpenFlagsT checkpointOpenFlags);
155  extern SaAisErrorT
156 saCkptCheckpointClose(SaCkptCheckpointHandleT checkpointHandle);
157  extern SaAisErrorT
158 saCkptCheckpointUnlink(SaCkptHandleT ckptHandle,
159  const SaNameT *checkpointName);
160  extern SaAisErrorT
161 saCkptCheckpointRetentionDurationSet(SaCkptCheckpointHandleT checkpointHandle,
162  SaTimeT retentionDuration);
163  extern SaAisErrorT
164 saCkptActiveReplicaSet(SaCkptCheckpointHandleT checkpointHandle);
165  extern SaAisErrorT
166 saCkptCheckpointStatusGet(SaCkptCheckpointHandleT checkpointHandle,
167  SaCkptCheckpointDescriptorT *checkpointStatus);
168  extern SaAisErrorT
169 saCkptSectionCreate(SaCkptCheckpointHandleT checkpointHandle,
170  SaCkptSectionCreationAttributesT *sectionCreationAttributes,
171  const SaUint8T *initialData,
172  SaSizeT initialDataSize);
173  extern SaAisErrorT
174 saCkptSectionDelete(SaCkptCheckpointHandleT checkpointHandle,
175  const SaCkptSectionIdT *sectionId);
176  extern SaAisErrorT
177 saCkptSectionExpirationTimeSet(SaCkptCheckpointHandleT checkpointHandle,
178  const SaCkptSectionIdT* sectionId,
179  SaTimeT expirationTime);
180  extern SaAisErrorT
181 saCkptSectionIterationInitialize(SaCkptCheckpointHandleT checkpointHandle,
182  SaCkptSectionsChosenT sectionsChosen,
183  SaTimeT expirationTime,
184  SaCkptSectionIterationHandleT *sectionIterationHandle);
185  extern SaAisErrorT
186 saCkptSectionIterationNext(SaCkptSectionIterationHandleT sectionIterationHandle,
187  SaCkptSectionDescriptorT *sectionDescriptor);
188  extern SaAisErrorT
189 saCkptSectionIterationFinalize(SaCkptSectionIterationHandleT sectionIterationHandle);
190  extern SaAisErrorT
191 saCkptCheckpointWrite(SaCkptCheckpointHandleT checkpointHandle,
192  const SaCkptIOVectorElementT *ioVector,
193  SaUint32T numberOfElements,
194  SaUint32T *erroneousVectorIndex);
195  extern SaAisErrorT
196 saCkptSectionOverwrite(SaCkptCheckpointHandleT checkpointHandle,
197  const SaCkptSectionIdT *sectionId,
198  const void *dataBuffer,
199  SaSizeT dataSize);
200  extern SaAisErrorT
201 saCkptCheckpointRead(SaCkptCheckpointHandleT checkpointHandle,
202  SaCkptIOVectorElementT *ioVector,
203  SaUint32T numberOfElements,
204  SaUint32T *erroneousVectorIndex);
205  extern SaAisErrorT
206 saCkptCheckpointSynchronize(SaCkptCheckpointHandleT ckeckpointHandle,
207  SaTimeT timeout);
208  extern SaAisErrorT
209 saCkptCheckpointSynchronizeAsync(SaCkptCheckpointHandleT checkpointHandle,
210  SaInvocationT invocation);
211 
212 #ifdef __cplusplus
213 }
214 #endif
215 
216 #endif /* _SA_CKPT_H_ */
217 

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