Adaptive Framework  0.9.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
afw_adaptor_internal.h
Go to the documentation of this file.
1 // See the 'COPYING' file in the project root for licensing information.
2 /*
3  * Helpers for interfaces afw_adaptor*
4  *
5  * Copyright (c) 2010-2023 Clemson University
6  *
7  */
8 
9 #ifndef __AFW_ADAPTOR_INTERNAL_H__
10 #define __AFW_ADAPTOR_INTERNAL_H__
11 
12 #include "afw_interface.h"
13 
28 
29 /* @brief Internal struct used by adaptors for this xctx. */
31  afw_boolean_t loading_object_types;
32 };
33 
34 #define AFW_ADAPTOR_SCOPE_INTERNAL(xctx) \
35  ((xctx)->adaptor_xctx_internal \
36  ? (xctx)->adaptor_xctx_internal \
37  : ((xctx)->adaptor_xctx_internal = \
38  afw_xctx_calloc_type(afw_adaptor_xctx_internal_t, xctx)))
39 
40 
42  const afw_adaptor_session_t *session;
43  apr_hash_t *object_types_ht;
44 };
45 
46 
48  apr_hash_t *session_cache;
49  apr_array_header_t *transactions;
50  const afw_adaptor_session_t *runtime_adaptor_session;
51 };
52 
53 
54 /* Object callback context. */
55 typedef struct {
56  const afw_pool_t *p;
57  const afw_adaptor_session_t *session;
58  afw_adaptor_impl_t *impl;
59  const afw_utf8_t *adaptor_id;
60  const afw_utf8_t *object_type_id;
61  const afw_utf8_t *object_id;
62  void * original_context;
63  afw_object_cb_t original_callback;
64  const afw_object_t *journal_entry;
65  const afw_object_options_t *options;
66  afw_boolean_t first_call;
67  afw_boolean_t outboundNormalization;
69 
70 
71 
79 afw_adaptor_internal_get_cache(afw_xctx_t *xctx);
80 
81 
82 
89 const afw_object_t *
91  const afw_adaptor_session_t *session,
92  const afw_utf8_t *object_id,
93  const afw_object_t *journal_entry,
94  afw_xctx_t *xctx);
95 
96 
103 void
104 afw_adaptor_internal_journal_prologue(
105  const afw_adaptor_session_t *session,
106  const afw_object_t *journal_entry,
107  afw_xctx_t *xctx);
108 
115 void
117  const afw_adaptor_session_t *session,
118  const afw_object_t *journal_entry,
119  afw_boolean_t modification,
120  afw_xctx_t *xctx);
121 
122 
125  const afw_utf8_t *adaptor_id;
126  const afw_adaptor_transaction_t *transaction;
128 
129 
130 
135 void
137  const afw_object_t * *adapted_object,
138  const afw_object_t * *view,
140  const afw_object_t *object,
141  const afw_pool_t *p,
142  afw_xctx_t *xctx);
143 
144 
145 
152 void
153 afw_adaptor_internal_register_service_type(afw_xctx_t *xctx);
154 
155 
162 void
163 afw_adaptor_internal_register_afw_adaptor(afw_xctx_t *xctx);
164 
165 
172 void
173 afw_adaptor_internal_conf_type_create_cede_p(
174  const afw_utf8_t *type,
175  const afw_object_t *entry,
176  const afw_utf8_t *source_location,
177  const afw_pool_t *p, afw_xctx_t *xctx);
178 
179 
180 AFW_END_DECLARES
181 
184 #endif /* __AFW_ADAPTOR_INTERNAL_H__ */
#define AFW_BEGIN_DECLARES
Interfaceafw_interface header.
const afw_object_t * afw_adaptor_internal_journal_get_entry(const afw_adaptor_session_t *session, const afw_utf8_t *object_id, const afw_object_t *journal_entry, afw_xctx_t *xctx)
struct afw_adaptor_internal_transaction_s afw_adaptor_internal_transaction_t
Adaptor id and associated transaction.
void afw_adaptor_internal_journal_epilogue(const afw_adaptor_session_t *session, const afw_object_t *journal_entry, afw_boolean_t modification, afw_xctx_t *xctx)
void afw_adaptor_internal_process_object_from_adaptor(const afw_object_t **adapted_object, const afw_object_t **view, afw_adaptor_internal_object_cb_context_t *ctx, const afw_object_t *object, const afw_pool_t *p, afw_xctx_t *xctx)
Definition: afw_adaptor.c:625
afw_boolean_t(* afw_object_cb_t)(const afw_object_t *object, void *context, afw_xctx_t *xctx)
Typedef for afw_adaptor_session_object callback.
Definition: afw_common.h:1176
_Bool afw_boolean_t
Definition: afw_common.h:373
Internal struct used by common adaptor code for all adaptors.
Adaptor id and associated transaction.
Interface afw_adaptor_session public struct.
Interface afw_adaptor_transaction public struct.
Struct for object processing options.
Interface afw_object public struct.
Interface afw_pool public struct.
NFC normalized UTF-8 string.
Definition: afw_common.h:545
Interface afw_xctx public struct.