1 --- /home/data/midas-1.9.3/examples/eventbuilder/mevb.c 2002-10-07 19:04:01.000000000 +0200
2 +++ mevb.cpp 2005-06-18 01:55:31.000000000 +0200
4 Created
by: Pierre-Andre Amaudruz
6 Contents: Main Event builder task.
9 +
Revision 1.1 2003/07/17 18:52:54 fegray
10 +Converted eventbuilder to C++.
12 +
Revision 1.4 2003/05/27 16:26:20 mucap
13 +Update to CVS version of MIDAS.
15 +
Revision 1.3 2003/05/13 19:27:04 mucap
16 +Fixes to allow a subset of the crates to participate in an
event. Also,
17 +
this pulls in Pierre
's CVS changes to the generic eventbuilder code.
19 Revision 1.9 2002/10/07 17:04:01 pierre
23 INT eb_end_of_run(INT, char *);
24 INT eb_user(INT, EBUILDER_CHANNEL *, EVENT_HEADER *, void *, INT *);
26 -extern INT ybos_event_swap (DWORD * pevt);
28 + extern INT ybos_event_swap (DWORD * pevt);
31 /*--------------------------------------------------------------------*/
32 /* eb_mfragment_add_()
35 printf("Hand flushing system buffer... \n");
36 for (i=0;i<nfragment;i++) {
38 + if (ebch[i].set.emask) do {
39 size = max_event_size;
40 status = bm_receive_event(ebch[i].hBuf, ebch[i].pfragment, &size, ASYNC);
45 /*--------------------------------------------------------------------*/
46 -INT source_unbooking(nfrag)
47 +INT source_unbooking(INT nfrag)
51 /* Skip unbooking if already done */
53 if (ebch[0].pfragment == NULL)
57 /* unbook all source channels */
58 for (i=nfrag-1; i>=0 ; i--)
62 + if (ebch[i].set.emask)
64 /* Remove event ID registration */
65 status = bm_delete_request(ebch[i].req_id);
73 /* release local event buffer memory */
74 free_event_buffer(nfrag);
76 BOOL found, event_mismatch;
81 /* Scan all channels at least once */
82 for(i=0 ; i<nfragment ; i++) {
83 /* Check if current channel needs to be received */
85 sprintf (strsub, "Ser[%d]:%d ", j, ebch[j].serial);
89 + printf("%s\n", str);
92 else { /* serial number match */
95 /* Allow bypass of fragment assembly if user wants to do it on its own */
96 if (!ebset.user_build) {
97 for (j=0 ; j<nfragment ; j++) {
98 + if (ebch[j].set.emask) {
99 status = meb_fragment_add(dest_event, ebch[j].pfragment, &act_size);
100 if (status != EB_SUCCESS) {
101 cm_msg(MERROR,"source_scan","compose fragment:%d current size:%d (%d)"
107 } /* skip user_build */
109 /* Overall event to be sent */
111 memset (&ebch[0], 0, sizeof(ebch));
114 - cm_get_environment (host_name, expt_name);
115 + cm_get_environment (host_name, sizeof(host_name),
116 + expt_name, sizeof(expt_name));
119 for (i=1 ; i<argc ; i++)
123 /* Register transition for reset counters */
124 - if (cm_register_transition(TR_PRESTART, tr_prestart) != CM_SUCCESS)
125 + if (cm_register_transition(TR_START, tr_prestart, 300) != CM_SUCCESS)
127 - if (cm_register_transition(TR_STOP, tr_stop) != CM_SUCCESS)
128 + if (cm_register_transition(TR_STOP, tr_stop, 700) != CM_SUCCESS)