PDI 1.6.0-alpha.2022-04-22.b70acbf

the PDI data interface

pdi.h
1/*******************************************************************************
2* Copyright (C) 2015-2021 Commissariat a l'energie atomique et aux energies alternatives (CEA)
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of CEA nor the names of its contributors may be used to
13* endorse or promote products derived from this software without specific
14* prior written permission.
15*
16* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22* THE SOFTWARE.
23******************************************************************************/
24
55#ifndef PDI_H_
56#define PDI_H_
57
58#include <paraconf.h>
59
60#include <pdi/export.h>
61#include <pdi/version.h>
62
63#ifdef __cplusplus
64extern "C" {
65#endif
66
73typedef enum PDI_status_e {
75 PDI_OK = 0,
96
98
104typedef void (*PDI_errfunc_f)(PDI_status_t status, const char* message, void* context);
105
108typedef struct PDI_errhandler_s {
109
112
114 void* context;
115
117
118
121extern const PDI_errhandler_t PDI_EXPORT PDI_ASSERT_HANDLER;
122
125extern const PDI_errhandler_t PDI_EXPORT PDI_WARN_HANDLER;
126
129extern const PDI_errhandler_t PDI_EXPORT PDI_NULL_HANDLER;
130
131
134const char PDI_EXPORT* PDI_errmsg(void);
135
144
146
158PDI_status_t PDI_EXPORT PDI_init(PC_tree_t conf);
159
163PDI_status_t PDI_EXPORT PDI_finalize(void);
164
172PDI_status_t PDI_EXPORT PDI_version(unsigned long* provided, unsigned long expected);
173
175
183typedef enum PDI_inout_e {
191 PDI_INOUT = 3
192
194
195
210PDI_status_t PDI_EXPORT PDI_share(const char* name, void* data, PDI_inout_t access);
211
220PDI_status_t PDI_EXPORT PDI_access(const char* name, void** buffer, PDI_inout_t inout);
221
229PDI_status_t PDI_EXPORT PDI_release(const char* name);
230
238PDI_status_t PDI_EXPORT PDI_reclaim(const char* name);
239
244PDI_status_t PDI_EXPORT PDI_event(const char* event);
245
253PDI_status_t PDI_EXPORT PDI_expose(const char* name, void* data, PDI_inout_t access);
254
270PDI_status_t PDI_EXPORT PDI_multi_expose(const char* event_name, const char* name, void* data, PDI_inout_t access, ...);
271
272#ifdef PDI_WITH_DEPRECATED
273
288PDI_status_t PDI_DEPRECATED_EXPORT PDI_transaction_begin(const char* name);
289
300PDI_status_t PDI_DEPRECATED_EXPORT PDI_transaction_end(void);
301
302#endif // PDI_WITH_DEPRECATED
303
305
306#ifdef __cplusplus
307} // extern C
308#endif
309
310
311#endif // PDI_H_
PDI_status_t PDI_release(const char *name)
Releases ownership of a data shared with PDI.
PDI_status_t PDI_share(const char *name, void *data, PDI_inout_t access)
Shares some data with PDI.
PDI_inout_t
Access directions.
Definition: pdi.h:183
PDI_status_t PDI_access(const char *name, void **buffer, PDI_inout_t inout)
Requests for PDI to access a data buffer.
PDI_status_t PDI_event(const char *event)
Triggers a PDI "event".
PDI_status_t PDI_expose(const char *name, void *data, PDI_inout_t access)
Shortly exposes some data to PDI.
PDI_status_t PDI_reclaim(const char *name)
Reclaims ownership of a data buffer shared with PDI.
PDI_status_t PDI_multi_expose(const char *event_name, const char *name, void *data, PDI_inout_t access,...)
Performs multiple exposes at once.
@ PDI_OUT
data transfer from the main code to PDI
Definition: pdi.h:189
@ PDI_INOUT
data transfer in both direction
Definition: pdi.h:191
@ PDI_IN
data tranfer from PDI to the main code
Definition: pdi.h:187
@ PDI_NONE
No data transfert.
Definition: pdi.h:185
PDI_errfunc_f func
The function to handle the error (none if NULL)
Definition: pdi.h:111
void * context
the context that will be provided to the function
Definition: pdi.h:114
PDI_errhandler_t PDI_errhandler(PDI_errhandler_t handler)
Sets the error handler to use.
const PDI_errhandler_t PDI_ASSERT_HANDLER
Prints the error message and aborts if the status is invalid.
const PDI_errhandler_t PDI_NULL_HANDLER
Does nothing.
PDI_status_t
Error codes of PDI.
Definition: pdi.h:73
const char * PDI_errmsg(void)
Return a human-readabe message describing the last error that occured in PDI.
const PDI_errhandler_t PDI_WARN_HANDLER
Prints the error message and continue if the status is invalid.
void(* PDI_errfunc_f)(PDI_status_t status, const char *message, void *context)
Type of a callback function used when an error occurs.
Definition: pdi.h:104
@ PDI_UNAVAILABLE
on an input call, no such data is available
Definition: pdi.h:77
@ PDI_ERR_VALUE
A value expression is invalid.
Definition: pdi.h:81
@ PDI_ERR_STATE
A call to a function has been made at a wrong time (e.g.
Definition: pdi.h:91
@ PDI_ERR_CONFIG
The configuration file is invalid.
Definition: pdi.h:79
@ PDI_OK
everything went well
Definition: pdi.h:75
@ PDI_ERR_TYPE
Invalid type error.
Definition: pdi.h:95
@ PDI_ERR_SYSTEM
A system error occured (OS, etc.)
Definition: pdi.h:87
@ PDI_ERR_IMPL
Implementation limitation (typically an unimplemented feature)
Definition: pdi.h:85
@ PDI_ERR_PLUGIN
Tried to load a non-existing plugin.
Definition: pdi.h:83
@ PDI_ERR_RIGHT
A conflict of onwership over a content has been raised.
Definition: pdi.h:93
Definition of an error handler.
Definition: pdi.h:108
PDI_status_t PDI_init(PC_tree_t conf)
Initializes PDI.
PDI_status_t PDI_finalize(void)
Finalizes PDI.
PDI_status_t PDI_version(unsigned long *provided, unsigned long expected)
Checks PDI API version.