theLink 10.0
Loading...
Searching...
No Matches
MqFactoryC_atl.c
Go to the documentation of this file.
1
9/* LABEL-INIT */
10
11/* LABEL-START */
12
13#define META_FILE_NAME "MqFactoryC_atl.c"
14
16
17#define OT_CLASS amqrt->AtlMqFactoryC
18#define OT_NULL amqrt->AtlMqFactoryC_MK_NULL
19#define OT_CLASS_NAME "MqFactoryC"
20
21#define SELF2HDL(O) MqFct(VAL2MNG(O))
22
23// LNG: class
24// -> moved to LibMqMsgque_atl.h → OT_MQ_RT_S → AtlMqMsgqueCTT;
25
26// META: ObjNew feature: called to return a new or an already existing ATL-SELF-Object
27// -> moved to LibMqMsgque_atl.h → MqMsgqueC_ObjNew
28
29// META: ObjNew feature: selfCreate will be called from "ObjNew->MkSelfNew" if MkObj need a SELF pointer
30static MK_PTR NS(MqFactoryC_selfCreate) (MK_RT_ARGS MK_OBJ const obj, MK_PTR const env) {
31 SETUP_amqrt(env);
32 return AtomMake(obj,OT_CLASS,NULL,NULL,env);
33}
34
35// META: called if MkObj must be destroyed and if the SELF is still alive → goal: destroy the SELF
36static void NS(MqFactoryC_selfDelete) (MK_RT_ARGS MK_PTR selfP, MK_PTR const env) {
37 OT_SELF_T selfO = selfP;
38 SETUP_amqrt(env);
39 MK(AtomDeleteHard) (OT_MK_CALL selfO);
40}
41
42// META: called to destroy link from SELF to META
43static void NS(MqFactoryC_selfUnlink) (MK_RT_ARGS MK_PTR selfP, MK_PTR const env) {
44 OT_SELF_T selfO = selfP;
45 SETUP_amqrt(env);
46 return MK(AtomUnlink) (OT_MK_CALL selfO);
47}
48
49#define OT_SETUP_hdl SetupHdlFromMetaData_2(MQ_FCT)
50#define OT_SETUP_hdl__null_allow SetupHdlFromMetaData__null_allow_2(MQ_FCT)
51#define OT_SETUP_hdl_destr SetupHdlFromMetaData__null_allow_2(MQ_FCT)
52#define OT_SETUP_hdl_constr SetupHdlConstr(MqFactoryC)
53#define OT_SETUP_hdl_static_constr OT_SETUP_hdl_static
54#define OT_SETUP_hdl_static SetupHdlStatic(MqFactoryC)
55
56#define OT_retObj_CONSTR(x) OT_retObj_SET(AtomInit(OT_SELF,MqFactoryC_X2obj(x),amqrt))
57
58// initialize the ATL and META class specific object
59#define ClassInit \
60 /* if not already done, initialize NEW META type */ \
61 if (MqFactoryCTT == NULL) MqFactoryCTT = MqFactorySTT; \
62 \
63 /* protect against double call */ \
64 if (MqFactoryCTT->selfCreate == NS(MqFactoryC_selfCreate)) return MK_OK; \
65 \
66 /* add "selfCreate" and "selfDelete" feature to the META-Class */ \
67 MqFactoryCTT->selfCreate = NS(MqFactoryC_selfCreate); \
68 MqFactoryCTT->selfDelete = NS(MqFactoryC_selfDelete); \
69 MqFactoryCTT->selfUnlink = NS(MqFactoryC_selfUnlink); \
70 \
71 /* create the ATL-class */ \
72 OT_CLASS = AltClassDef(MqFactoryCTT,&amqrt->AtlMqFactoryC_NS); \
73 if (OT_CLASS == NULL) goto error; \
74 OT_REF_INCR(OT_CLASS); \
75 \
76 /* create the ATL static Methods */ \
77 check_LNG(AtlUnknownSetup (NS(sOtClassDef),amqrt)) goto error; \
78 \
79 /* create the ATL instance Methods */ \
80 check_LNG(AtlUnknownSetup (NS(sInstanceDef),amqrt)) goto error; \
81 \
82 /* after class was modified, recompile the class */ \
83 RL_init(2, recompile, RL_T(0,RecompileN)); RL_O(1,OT_CLASS) ; \
84 int retI = RL_EvalEx(0); \
85 if (retI != TCL_OK) return retI; \
86 \
87 /* define the "NULL" object */ \
88 OT_NULL = AtomCreateNULL(OT_CLASS, "::MqFactoryC::MK_NULL", (MK_PTR)amqrt); \
89 if (OT_NULL == NULL) goto error; \
90 OT_REF_INCR(OT_NULL);
91/* LABEL-END */
92
93#undef META_CONTEXT_S
94#define META_CONTEXT_S mqctx
95
101
102extern MkThreadLocal bool NS(inMain);
103
104static char msg[] = "ERROR: a 'MqFactoryC' command was called OUTSIDE" \
105" of the 'atlmqmsgque::Main'-proc.\n" \
106"\n" \
107"Description: a 'atlmqmsgque SERVER' listen on a port and start for every incoming connetion\n" \
108"a sub-server. If a thread sub-server was choosen... with the '--thread' commandline-option...\n" \
109"a new thread is created. To setup a new thread the INITIAL tcl-file is RE-READ again and\n" \
110"PROCS and VARIABLES are initialized. The NEW thread has it's own 'Main'-proc and so... the\n" \
111"original 'Main'-proc is skipped. If a 'factory' command is used OUTSIDE of the 'Main'-proc...\n" \
112"the initial 'Factory' will be created TWICE. The creation of multiple 'Factory' objects...\n" \
113"with the SAME name... is an ERROR."; \
114
115#undef OT_SETUP_hdl_constr
116#define OT_SETUP_hdl_constr \
117 if (NS(inMain) == false) { \
118 Tcl_SetResult(interp,msg,TCL_STATIC); \
119 return TCL_ERROR; \
120 } \
121 SetupHdlConstr(MqFactoryC)
122
123#undef OT_SETUP_hdl_static_constr
124#define OT_SETUP_hdl_static_constr \
125 if (NS(inMain) == false) { \
126 Tcl_SetResult(interp,msg,TCL_STATIC); \
127 return TCL_ERROR; \
128 } \
129 SetupHdlStatic(MqFactoryC)
130
131static void NS(sFactoryDataFree) ( MK_RT_ARGS MK_PTR *dataP)
132{
133 return;
134 SETUP_amkrt(NULL);
135printP(interp)
136 if (interp == NULL || Tcl_InterpDeleted(interp)) return;
137 OT_REF_DECR_AND_NULL(*dataP); // OT_REF_INCR in: CheckConstructor
138}
139
140static void NS(sFactoryDataCopy) ( MK_RT_ARGS MK_PTR *dataP)
141{
142 *dataP = OT_OBJ_COPY(*dataP);
143}
144
150
151// BEGIN-DOC - created by 'atl_MqS.tcl -i NHI1_HOME/theLink/c/gen/c_mqmsgque.meta' - DO NOT change
152
153// doc-key: MqFactoryC,MqFactory,sCc,func
154#define Add_doc "MqFactoryC [MqFactoryC::Add constructor:class ?ident:string=\"MK_NULL\"?]"
155#define CTOR_doc "MqFactoryC [MqFactoryC::CTOR constructor:class ?ident:string=\"MK_NULL\"?]"
156
157// doc-key: MqFactoryC,MqFactory,sc_,func
158#define Get_doc "MqFactoryC [MqFactoryC::Get ?ident:string=\"\"?]"
159#define GetCalled_doc "MqFactoryC [MqFactoryC::GetCalled ?ident:string=\"\"?]"
160#define GetCalledL_doc "MqFactoryC [MqFactoryC::GetCalledL largs:MkBufferListC]"
161#define GetNull_doc "MqFactoryC [MqFactoryC::GetNull]"
162#define HandleResolve_doc "MqFactoryC [MqFactoryC::HandleResolve netHdl:MK_HDL]"
163#define Instances_doc "MqFactoryC [MqFactoryC::Instances]"
164
165// doc-key: MqFactoryC,MqFactory,sm_,func
166#define DefaultIdent_doc "string [MqFactoryC::DefaultIdent]"
167#define InitialIdent_doc "string [MqFactoryC::InitialIdent]"
168#define LogAll_doc "MqFactoryC::LogAll ?callfunc:string=\"MK_NULL\"?"
169
170// doc-key: MqFactoryC,MqFactory,oCx,func
171#define Dup2_doc "MqFactoryC [MqFactoryC::Dup2 $fct ident:string] (const)"
172
173// doc-key: MqFactoryC,MqFactory,oc_,func
174#define Default_doc "MqFactoryC [MqFactoryC::Default $fct]"
175#define Initial_doc "MqFactoryC [MqFactoryC::Initial $fct]"
176#define Next_doc "MqFactoryC [MqFactoryC::Next $fct]"
177#define Prev_doc "MqFactoryC [MqFactoryC::Prev $fct]"
178
179// doc-key: MqFactoryC,MqFactory,oco,func
180#define New_doc "MqContextC [MqFactoryC::New $fct]"
181
182// doc-key: MqFactoryC,MqFactory,om_,func
183#define GetOriginalIdent_doc "string [MqFactoryC::GetOriginalIdent $fct] (const)"
184// skip class-overload: HandleGet → MkObjectHandleGet
185// skip class-overload: Log → MkObjectLog
186
187// END-DOC - created by 'atl_MqS.tcl -i NHI1_HOME/theLink/c/gen/c_mqmsgque.meta' - DO NOT change
188
189// \anchor tcl_mqmsgque_MqFactoryC_New
190//static OT_ProcRet NS(MqFactoryC_NewMqC) (MqFactoryC_ARGS);
191
197
198#ifdef CALLGRIND_DEBUG
199# include "valgrind/callgrind.h"
200#endif
201
202static enum MkErrorE NS(sFactoryCTor) ( MQ_CALLBACK_FACTORY_CTOR_ARGS )
203{
204//printTxt("11111111111111111111111111111111111111111111111111111111111111111111111111111111111")
205//colorYELLOW("mkrt<%p>, mqrt<%p>, amkrc<%p>, amqrc<%p>", mkrt, mqrt, &amkrtR, &amqrt);
206
207//printSTACK_0()
208//MkObjLog(fct);
209
210 MQ_CTX mqctx = NULL;
211 OT_SELF_T retO = NULL;
212 OT_CLS_T clsO = NULL, clsTO = NULL;
213 OT_OBJ_T tmplO = tmpl ? META2VAL_X(tmpl) : NULL;
214 OT_MQ_RT_T amqrt = &amqrtR;
215 OT_MK_RT_T amkrt = &amkrtR;
216 OT_ENV_T interp = NULL;
217
218//#define CALLGRIND_DEBUG
219
220 if (create == MQ_FACTORY_NEW_THREAD) {
221//printTxt("222222222222222222222222222222222222222222222222222222")
222#ifdef CALLGRIND_DEBUG
223printTxt("start CALLGRIND_ZERO_STATS")
224printSTACK_0()
225CALLGRIND_ZERO_STATS;
226#endif
227 interp = Tcl_CreateInterp();
228 // tmpl→MK_ERROR_DEFAULT 25.11.2019 aotto
229 check_LNG(Tcl_Init(interp)) {
230 return MkErrorSetV_1E ("[ThreadCreateError] Tcl_Init : %s", Tcl_GetStringResult(interp));
231 }
232 // mark new interpreter as "MQ_STARTUP_IS_THREAD"
233 Tcl_SetVar (interp, "MQ_STARTUP_IS_THREAD", "yes", TCL_GLOBAL_ONLY);
234 // source initial script
235 check_LNG(Tcl_EvalFile(interp, MqInitGetArg0()->data[1]->storage.first.C)) {
236 return MkErrorSetV_1E ("[ThreadCreateError] Tcl_EvalFile : %s", Tcl_GetStringResult(interp));
237 }
238 // set script
239 check_NULL(AtlInfoScript(MqInitGetArg0()->data[1]->storage.first.C)) {
240 return MkErrorSetV_1E ("[ThreadCreateError] AtlInfoScript : %s", Tcl_GetStringResult(interp));
241 }
242#ifdef CALLGRIND_DEBUG
243CALLGRIND_DUMP_STATS_AT("tcl_thread_startup");
244printTxt("end CALLGRIND_ZERO_STATS")
245#endif
246 }
247 if (interp == NULL) interp = amqrt->interp;
248 MOX_RT_T moxrt = amkrt->moxrt;
249
250//colorBLUE("mkrt<%p>, mqrt<%p>, amkrt<%p>, amqrt<%p>", mkrt, mqrt, amkrt, amqrt);
251//colorWHITE("interp<%p>, amqrt->interp<%p>, amkrt->interp<%p>", interp, amqrt->interp, amkrt->interp);
252
253 Tcl_ResetResult(interp);
254
255 // reflection -> "child" use the same "Tcl_Class" as tmpl=parent
257 clsTO = MoxMy__CLASS__N(tmplO);
258 if (clsTO == NULL) {
259 MkErrorSetV_1E("FactoryError: the template '%s' is no instance", VAL2STR(tmplO));
260 goto error;
261 }
262 } else {
263 clsTO = fct->fct_ctor.data ? fct->fct_ctor.data : MqContextC_lngO;
264 }
265
266 // security check of the Tcl_Class pointer
267 if (clsTO == NULL) {
268 MkErrorSetC_1E("FactoryError: unable to find Constructor");
269 goto error;
270 }
271
272 // on a NEW interpreter the class also have to be resolved new
273 if (create & (MQ_FACTORY_NEW_THREAD)) {
274 // always assume that 'clsTO' is from OTHER thread
275 // attention: this code create an ATL-CLASS-OBJECT with AtlClassDefGetNN
276 // SIDE EFFECT: register a "AtlClassDefT" into the namespace
277 OT_NS_T clsNs = Tcl_FindNamespace(interp,VAL2STR(clsTO),NULL,TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG);
278 if (clsNs == NULL) goto error;
279 clsO = AtlGetClassFrmNsPtr(clsNs,TCL_LEAVE_ERR_MSG);
280 if (clsO == NULL) goto error;
281 } else {
282 clsO = clsTO;
283 }
284
285 // Call Factory -> Contructor
286 int lobjc=0;
287 OT_OBJ_T lobjv[1];
288
289 // 2. add "self"
290 // MQ_FACTORY_NEW_THREAD get a NEW "interp" and "tmpl->obj.self" is only defined
291 // on the original interp -> no "tmpl" possible -> missing "MqConfigDup"
293 ;
294 } else {
295 lobjv[lobjc++] = tmplO;
296 }
297
298 // 3. evaluate the script
299 check_LNG(MoxCreate3N(clsO, NULL, NULL, lobjc, lobjv)) {
301 goto error;
302 }
303 retO = Tcl_GetObjResult(interp);
304 OT_REF_INCR(retO);
305
306 // 4. get context
307 mqctx = MqCtx(VAL2MNG(retO));
308 if (mqctx == NULL) {
309 MkErrorSetV_1E("Factory return '%s', this is not a MqContextC type", VAL2STR(retO));
310 goto error;
311 }
312
313//printLV("222 → <%p>\n", mqctx->setup.Event.data)
314
315 // 5. check for MQ error
316 MkErrorCheck_0E();
317
318 // 6. do the missing "MqConfigDup" from "2"
319 // BUGFIX: without MQ_FACTORY_NEW_CHILD the OT_CONSTRUCTOR_POST prefix will NOT cleanup
321 MqConfigDup(mqctx, tmpl);
322 }
323
324 // 7. copy and initialize "setup" data
325 // "MQ_FACTORY_NEW_THREAD|MQ_FACTORY_NEW_FORK" is only used to support NON factory startup
327//MkObjLog(tmpl);
328 MqSetupDup(mqctx, tmpl);
329 }
330
331 // tcl-special: default event handler has !no! data and calling just the
332 // tcl-event-update function. CHILD does not need to call it too
333 if (create & MQ_FACTORY_NEW_CHILD && mqctx->setup.Event.data == NULL) {
334 mqctx->setup.Event.fCall = NULL;
335 }
336
337//printLV("333 → <%p>\n", mqctx->setup.Event.data)
338//printXV(mqctx,"333 → MqLinkGetTargetIdent = %s\n", MqLinkGetTargetIdent(mqctx))
339 *contextP = mqctx;
340 Ot_DecrRefCount(retO);
341 return MK_OK;
342
343error:
344 *contextP = NULL;
345 if (retO) {
346 MoxDestroyN(retO);
347 OT_REF_DECR(retO);
348 }
349 return MkErrorStack_0E();
350}
351
352/*
353static void NS(sFactoryDTor) (
354 MK_RT_ARGS
355 MQ_CTX hdl,
356 bool doFactoryCleanup,
357 MQ_FCT fct
358) {
359 if (doFactoryCleanup) {
360 SETUP_amqrt(NULL);
361 OT_SELF_T selfO = OT_SELF_X(hdl);
362 if (selfO && OT_OBJECT_DELETE_HARD(selfO)) return;
363 }
364
365 MqContextDelete(hdl);
366}
367*/
368
374
375// BEGIN-MqFactoryC - created by 'atl_MqC.tcl -i NHI1_HOME/theLink/c/gen/c_mqmsgque.meta' - DO NOT change
376
380
381// doc-key: MqFactoryC,MqFactoryC-Class-Export,sc_
382
384static OT_ProcRet NS(MqFactoryC_HandleResolve) (OtClass_ARGS) {
387 MK_HDL netHdl = 0;
390 MQ_FCT retVal = MqFactoryHandleResolve (netHdl);
391 OT_retObj_SET_FCT(retVal);
392 goto end;
393 error:
395 end:
397}
398
399// doc-key: MqFactoryC,MqFactoryC-Class-Export,om_
400
401// skip on class-overload: MqFactoryHandleGet → MkObjectHandleGet
403static OT_ProcRet NS(MqFactoryC_HandleGet) (MqFactoryC_ARGS) {OT_ERROR_LNG_RETURN;}
404
406// MqFactoryC_Class_ATL_API
407
411
412// doc-key: MqFactoryC,MqFactoryC-Class-Introspection,oc_
413
415static OT_ProcRet NS(MqFactoryC_Next) (MqFactoryC_ARGS) {
419 MQ_FCT retVal = MqFactoryNext (hdl);
420 OT_retObj_SET_FCT(retVal);
421 goto end;
422 error:
424 end:
426}
427
429static OT_ProcRet NS(MqFactoryC_Prev) (MqFactoryC_ARGS) {
433 MQ_FCT retVal = MqFactoryPrev (hdl);
434 OT_retObj_SET_FCT(retVal);
435 goto end;
436 error:
438 end:
440}
441
442// doc-key: MqFactoryC,MqFactoryC-Class-Introspection,sc_
443
445static OT_ProcRet NS(MqFactoryC_Instances) (OtClass_ARGS) {
449 MQ_FCT retVal = MqFactoryInstances ();
450 OT_retObj_SET_FCT(retVal);
451 goto end;
452 error:
454 end:
456}
457
459// MqFactoryC_Class_ATL_API
460
464
465// doc-key: MqFactoryC,MqFactoryC-Class-Misc,sc_
466
468static OT_ProcRet NS(MqFactoryC_GetNull) (OtClass_ARGS) {
472 MQ_FCT retVal = MqFactoryGetNull ();
473 OT_retObj_SET_FCT(retVal);
474 goto end;
475 error:
477 end:
479}
480
482// MqFactoryC_Class_ATL_API
483
487
488// doc-key: MqFactoryC,MqFactoryC-Get,sc_
489
491static OT_ProcRet NS(MqFactoryC_Get) (OtClass_ARGS) {
494 MK_STRN ident = "";
497 MQ_FCT retVal = MqFactoryGet (ident);
498 OT_retObj_SET_FCT(retVal);
499 goto end;
500 error:
502 end:
504}
505
507static OT_ProcRet NS(MqFactoryC_GetCalled) (OtClass_ARGS) {
510 MK_STRN ident = "";
513 MQ_FCT retVal = MqFactoryGetCalled (ident);
514 OT_retObj_SET_FCT(retVal);
515 goto end;
516 error:
518 end:
520}
521
523static OT_ProcRet NS(MqFactoryC_GetCalledL) (OtClass_ARGS) {
526 MkBufferListCreateTLS_T(largs,10);
529 MQ_FCT retVal = MqFactoryGetCalledL (largs);
530 OT_retObj_SET_FCT(retVal);
531 goto end;
532 error:
534 end:
536}
537
538// doc-key: MqFactoryC,MqFactoryC-Get,om_
539
541static OT_ProcRet NS(MqFactoryC_GetOriginalIdent) (MqFactoryC_ARGS) {
546 goto end;
547 error:
549 end:
551}
552
554// MqFactoryC_Get_ATL_API
555
559
560// doc-key: MqFactoryC,MqFactoryC-Misc,oc_
561
563static OT_ProcRet NS(MqFactoryC_Default) (MqFactoryC_ARGS) {
567 MQ_FCT retVal = MqFactoryDefault (hdl);
568 OT_retObj_SET_FCT(retVal);
569 goto end;
570 error:
572 end:
574}
575
577static OT_ProcRet NS(MqFactoryC_Initial) (MqFactoryC_ARGS) {
581 MQ_FCT retVal = MqFactoryInitial (hdl);
582 OT_retObj_SET_FCT(retVal);
583 goto end;
584 error:
586 end:
588}
589
590// doc-key: MqFactoryC,MqFactoryC-Misc,oco
591
593static OT_ProcRet NS(MqFactoryC_New) (MqFactoryC_ARGS) {
597 MQ_CTX val_out;
598 MkErrorC_Check(hdl,MqFactoryNew (hdl, NULL, &val_out));
599 OT_retObj_SET_CTX(val_out);
600 goto end;
601 error:
603 end:
605}
606
607// doc-key: MqFactoryC,MqFactoryC-Misc,om_
608
609// skip on class-overload: MqFactoryLog → MkObjectLog
612
613// doc-key: MqFactoryC,MqFactoryC-Misc,sm_
614
616static OT_ProcRet NS(MqFactoryC_DefaultIdent) (OtClass_ARGS) {
621 goto end;
622 error:
624 end:
626}
627
629static OT_ProcRet NS(MqFactoryC_InitialIdent) (OtClass_ARGS) {
634 goto end;
635 error:
637 end:
639}
640
642static OT_ProcRet NS(MqFactoryC_LogAll) (OtClass_ARGS) {
645 MK_STRN callfunc = NULL;
648 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
649 MqFactoryLogAll (callfunc);
651 goto end;
652 error:
654 end:
657}
658
660// MqFactoryC_Misc_ATL_API
661
665
666// doc-key: MqFactoryC,MqFactoryC-TOR,oCx
667
669static OT_ProcRet NS(MqFactoryC_Dup2) (MqFactoryC_ARGS) {
672 MK_STRN ident = 0;
675 MQ_FCT retVal = MqFactoryDup2 (hdl, ident);
676 if (retVal == NULL) {
677 OT_ERROR_CONSTRUCTOR(MqFactoryC);
678 goto error;
679 }
680 OT_retObj_SET_FCT(retVal);
681 goto end;
682 error:
684 end:
686}
687
688// doc-key: MqFactoryC,MqFactoryC-TOR,sCc
689
691static OT_ProcRet NS(MqFactoryC_Add) (OtClass_ARGS) {
694 MK_CCP constructor = 0;
696 MK_STRN ident = NULL;
699 if (MkSysStringIsNULL(ident)) {ident = OT_GET_CONSTR_NAME(constructor);}
700 MQ_FCT retVal = MqFactoryAdd (NULL, NS(sFactoryCTor), constructor, NS(sFactoryDataFree), NS(sFactoryDataCopy), NULL, NULL, NULL, NULL, ident);
701 if (retVal == NULL) {
702 OT_ERROR_CONSTRUCTOR(MqFactoryC);
703 goto error;
704 }
705 OT_CONSTRUCTOR_POST(retVal)
706 OT_retObj_SET_FCT(retVal);
707 goto end;
708 error:
710 end:
712}
713
715static OT_ProcRet NS(MqFactoryC_CTOR) (CONSTR_ARGS) {
718 MK_CCP constructor = 0;
720 MK_STRN ident = NULL;
722 if (MkSysStringIsNULL(ident)) {ident = OT_GET_CONSTR_NAME(constructor);}
723 MQ_FCT retVal = MqFactoryAdd (NULL, NS(sFactoryCTor), constructor, NS(sFactoryDataFree), NS(sFactoryDataCopy), NULL, NULL, NULL, NULL, ident);
724 if (retVal == NULL) {
725 OT_ERROR_CONSTRUCTOR(MqFactoryC);
726 goto error;
727 }
728 OT_CONSTRUCTOR_POST(retVal)
729 OT_retObj_CONSTR(retVal);
730 goto end;
731 error:
733 end:
735}
736
738// MqFactoryC_TOR_ATL_API
739
740// END-MqFactoryC - created by 'atl_MqC.tcl -i NHI1_HOME/theLink/c/gen/c_mqmsgque.meta' - DO NOT change
741
742// ---------------------------------------------------------------------------------------
743
744static const OtObjProcDefS NS(sOtClassDef)[] = {
745 // BEGIN-CLASS - created by 'atl_MqS.tcl -i NHI1_HOME/theLink/c/gen/c_mqmsgque.meta' - DO NOT change
746
747 // doc-key: MqFactoryC,MqFactory,sCc
748 { "::MqFactoryC::Add" , NS(MqFactoryC_Add) },
749
750 // doc-key: MqFactoryC,MqFactory,sc_
751 { "::MqFactoryC::Get" , NS(MqFactoryC_Get) },
752 { "::MqFactoryC::GetCalled" , NS(MqFactoryC_GetCalled) },
753 { "::MqFactoryC::GetCalledL" , NS(MqFactoryC_GetCalledL) },
754 { "::MqFactoryC::GetNull" , NS(MqFactoryC_GetNull) },
755 { "::MqFactoryC::HandleResolve" , NS(MqFactoryC_HandleResolve) },
756 { "::MqFactoryC::Instances" , NS(MqFactoryC_Instances) },
757
758 // doc-key: MqFactoryC,MqFactory,sm_
759 { "::MqFactoryC::DefaultIdent" , NS(MqFactoryC_DefaultIdent) },
760 { "::MqFactoryC::InitialIdent" , NS(MqFactoryC_InitialIdent) },
761 { "::MqFactoryC::LogAll" , NS(MqFactoryC_LogAll) },
762
763 // END-CLASS - created by 'atl_MqS.tcl -i NHI1_HOME/theLink/c/gen/c_mqmsgque.meta' - DO NOT change
764 { NULL }
765};
766
767// ---------------------------------------------------------------------------------------
768
769static const OtObjProcDefS NS(sInstanceDef)[] = {
770 // BEGIN-OBJ - created by 'atl_MqS.tcl -i NHI1_HOME/theLink/c/gen/c_mqmsgque.meta' - DO NOT change
771
772 // doc-key: MqFactoryC,MqFactory,oC_
773 { "::MqFactoryC::MqFactoryC" , NS(MqFactoryC_CTOR) },
774
775 // doc-key: MqFactoryC,MqFactory,oCx
776 { "::MqFactoryC::Dup2" , NS(MqFactoryC_Dup2) },
777
778 // doc-key: MqFactoryC,MqFactory,oc_
779 { "::MqFactoryC::Default" , NS(MqFactoryC_Default) },
780 { "::MqFactoryC::Initial" , NS(MqFactoryC_Initial) },
781 { "::MqFactoryC::Next" , NS(MqFactoryC_Next) },
782 { "::MqFactoryC::Prev" , NS(MqFactoryC_Prev) },
783
784 // doc-key: MqFactoryC,MqFactory,oco
785 { "::MqFactoryC::New" , NS(MqFactoryC_New) },
786
787 // doc-key: MqFactoryC,MqFactory,om_
788 { "::MqFactoryC::GetOriginalIdent" , NS(MqFactoryC_GetOriginalIdent) },
789 // skip class-overload: HandleGet → MkObjectHandleGet
790 // skip class-overload: Log → MkObjectLog
791
792 // END-OBJ - created by 'atl_MqS.tcl -i NHI1_HOME/theLink/c/gen/c_mqmsgque.meta' - DO NOT change
793 { NULL }
794};
795
801
802int
803NS(MqFactoryC_Setup) (MK_RT_ARGS Tcl_Interp *interp)
804{
805 if (!strcmp(MqFactoryDefaultIdent(), "libmqmsgque")) {
806 if ( MqFactoryDefault(
809 NS(sFactoryCTor), NULL, NULL, NULL, NULL, NULL, NULL, NULL, "atlmqmsgque"
810 )
811 )
812 ) == NULL
813 )
814 {
815 Tcl_SetResult(interp,"MqFactoryS exception",TCL_STATIC);
816 return TCL_ERROR;
817 }
818 }
819 return TCL_OK;
820}
821
822int NS(pMqFactoryC_Init) ( OT_MQ_ARGS OT_NS_T ns )
823{
826
827 return TCL_OK;
828error:
829 return TCL_ERROR;
830}
__thread OT_MK_RT_S amkrtR
#define check_NULL(code)
#define MK(n)
#define AtomMake(...)
#define OT_SETUP_VARARGS(min, max, d)
#define OT_CHECK_NIH(val)
#define OT_SETUP_NOARG(d)
#define OT_SETUP_ONEARG(d)
#define OT_ERROR_LNG_RETURN
#define AtlInfoScript(s)
MOX_ENV_T OT_ENV_T
MOX_NS_T OT_NS_T
#define OT_retObj_SET_Error
#define OT_FRAME_CLEANUP
#define OT_ERROR_CONSTRUCTOR(class)
#define OT_CHECK_REQUIRED(val)
#define OT_retObj_SET_None
MOX_OBJ_T OT_SELF_T
static void Ot_DecrRefCount(OT_OBJ_T tclO)
MOX_CLS_T OT_CLS_T
#define META2VAL_X(x)
#define VAL2MNG(val)
#define OT_SETUP_CONSTRUCTOR_ARGS(...)
#define VAL2STR(val)
#define OT_retObj_RETURN
#define OT_GET_CALL_PROC
#define check_LNG(code)
#define OT_ERROR_LNG_2_META(m)
#define OT_MK_CALL
#define OT_retObj_SET_STR(nat)
#define SETUP_amkrt(r)
#define OT_CHECK_OPTIONAL(val)
#define OT_GET_CONSTR_NAME(ctor)
#define OT_OBJ_COPY(o)
#define OT_REF_DECR_AND_NULL(_obj)
#define OT_REF_DECR(_obj)
#define OT_REF_INCR(_obj)
#define OT_CHECK_NOARGS
#define MkErrorC_Check(mng, PROC)
#define OT_ProcRet
#define AtlGetClassFrmNsPtr(nsP, flg)
#define CONSTR_ARGS
#define OT_CHECK_STRN(val)
MOX_OBJ_T OT_OBJ_T
__thread OT_MQ_RT_S amqrtR
#define OtClass_ARGS
#define MqFactoryC_ARGS
#define SETUP_amqrt(r)
#define OT_retObj_SET_CTX(nat)
#define NS(n)
#define OT_retObj_SET_FCT(nat)
#define OT_MQ_ARGS
#define MqContextC_lngO
tag: nhi1-release-250425
#define mqctx
Definition MqCall_atl.c:13
#define OT_CONSTRUCTOR_POST(x)
#define Instances_doc
#define Initial_doc
#define OT_SETUP_hdl_static_constr
#define GetOriginalIdent_doc
#define OT_SETUP_hdl
#define New_doc
#define Get_doc
#define LogAll_doc
#define GetNull_doc
#define Next_doc
#define HandleResolve_doc
#define GetCalledL_doc
#define DefaultIdent_doc
#define Prev_doc
#define InitialIdent_doc
#define OT_CLASS
#define OT_SETUP_hdl_static
#define OT_SETUP_hdl_constr
#define GetCalled_doc
#define Dup2_doc
#define OT_retObj_CONSTR(x)
#define Add_doc
#define CTOR_doc
#define Default_doc
#define ClassInit
static char msg[]
#define error
Definition high_lng.h:339
#define MkBufferListCreateTLS_T(name, num)
#define MkErrorStack_0E()
#define MkErrorSetC_1E(message)
#define MkErrorSetV_1E(printfmt,...)
#define MK_ERROR_FORMAT
#define MK_NULL_NO
#define MK_UNUSED
#define MK_DEPRECATED
MkErrorE
MK_OK
MK_PTRB * MK_PTR
const MK_STRB * MK_STRN
MK_PTRB * MK_CCP
int32_t MK_HDL
static bool MkSysStringIsNULL(MK_STRN str)
#define MkThreadLocal
#define MK_RT_ARGS
static MQ_CTX MqCtx(MK_MNG mng)
cast a unknown-object into an MqContextS pointer or NULL if not possible
#define MqSetupDup(...)
#define MqConfigDup(...)
#define MQ_CALLBACK_FACTORY_CTOR_ARGS
the MqFactoryCTorF arguments with default names
#define MqFactoryInstances()
static MQ_FCT MqFactoryPrev(MQ_FCT const fct)
get previous instance from linked-list of MqFactoryS type
#define MqFactoryHandleResolve(...)
static MQ_FCT MqFactoryGetNull(void)
Null-Slot - return a MqFactoryC typed NULL instance …
static MQ_FCT MqFactoryNext(MQ_FCT const fct)
get next instance from linked-list of MqFactoryS type
#define MqFactoryGetCalledL(...)
#define MqFactoryGet(...)
MK_STRN MqFactoryGetOriginalIdent(MQ_FCTN const fct)
helper function to return MqFactoryS::originalIdent
#define MqFactoryGetCalled(...)
#define MqFactoryLogAll(...)
#define MqFactoryInitial(...)
#define MqFactoryDefaultIdent()
#define MqFactoryNew(...)
#define MqFactoryInitialIdent()
#define MqFactoryDefault(...)
#define MqFactoryDup2(...)
#define MqFactoryAdd(...)
@ MQ_FACTORY_NEW_FILTER
create object as a filter
@ MQ_FACTORY_NEW_FORK
create object as a fork process
@ MQ_FACTORY_NEW_THREAD
create object as a thread
@ MQ_FACTORY_NEW_INIT
initial object, nothing else is known
@ MQ_FACTORY_NEW_SLAVE
create object as a slave of an other object
@ MQ_FACTORY_NEW_CHILD
create object as a child of an other object
MK_BFL MqInitGetArg0(void)
get the process startup-prefix argument
#define MQ_STATIC_RT
MK_OBJ const obj
Definition high_lng.h:136
#define OT_CHECK_BFLN(val, nullB)
#define OT_CHECK_CONSTRUCTOR(val)
PUBLIC data structure for the atlmqmsgque-specific-data
data used to define a factory
OT_ENV_T interp