for my $e ($event->getTypesOrdered) {
my $u = uc $e;
my $c = getTypeComment $event $e;
- gen "\t\t$u,\t/**< $c */\n";
+ gen "\t\t$u = EDG_WLL_EVENT_$u,\t/**< $c */\n";
}
@@@}
- TYPE_MAX /**< Limit for checking type validity. */
+ TYPE_MAX = EDG_WLL_EVENT__LAST /**< Limit for checking type validity. */
};
/** Event attribute symbolic identifier.
*/
enum Attr {
@@@{
+
+ require "../src/EventAttrNames.pl";
+ my %EventAttrNums;
+ my $evno = 0;
+ for (@main::EventAttrNames) {
+ $EventAttrNums{$_} = $evno++;
+ }
+
for (sort {$a cmp $b} getAllFields $event) {
my $u = $_;
# $u =~ s/([a-z])([A-Z])/$1_$2/g;
}
$c .= "\t */\n";
- gen "$c\t\t$u,\n";
+ gen defined($EventAttrNums{$u}) ?
+ "$c\t\t$u = $EventAttrNums{$u},\n" :
+ "#error \"$u not defined in EventAttrNames\"\n";
}
@@@}
ATTR_MAX /**< Limit for checking attribute code
};
for (@{$ff->{codes}}) {
gen qq{
-! $ut$_->{name}, /**< $_->{comment} */
+! $ut$_->{name} = EDG_WLL_$ut$_->{name}, /**< $_->{comment} */
};
}
gen qq{
static const std::string getEventName(Type type);
private:
+ std::string my_name;
static void destroyFlesh(void *);
CountRef<Event> *flesh;
};
EDG_WLL_ERROR_JOBID_FORMAT, /**< Malformed jobid */
EDG_WLL_ERROR_DB_CALL, /**< Failure of underlying database engine.
See errDesc returned by edg_wll_ErrorCode(). */
- EDG_WLL_ERROR_URL_FORMAT, /**< Malformed URL */
EDG_WLL_ERROR_MD5_CLASH, /**< MD5 hash same for different strings. Very unlikely :-). */
EDG_WLL_ERROR_GSS, /**< Generic GSSAPI error. See errDesc returned by edg_wll_Error(). */
EDG_WLL_ERROR_DNS, /**< DNS resolver error. See errDesc returned by edg_wll_Error(). */
EDG_WLL_IL_SYS, /**< Interlogger internal error. */
EDG_WLL_IL_EVENTS_WAITING, /**< Interlogger still has events pending delivery. */
EDG_WLL_ERROR_COMPARE_EVENTS, /**< Two compared events differ. */
- EDG_WLL_ERROR_SQL_PARSE, /**< Error in SQL parsing. */
} edg_wll_ErrorCode;
/**
#include "glite/lb/context.h"
#include "glite/lb/notifid.h"
+#include "glite/lb/padstruct.h"
+
#ifdef __cplusplus
extern "C" {
#endif
/** invalid code, e.g. uninitialized variable */
EDG_WLL_EVENT_UNDEF = 0,
@@@{
+my $flesh = 'gLite'; #XXX
+my $fleshno = 0;
+my $eventno = $fleshno;
for my $e (sort { $event->{order}->{$a} <=> $event->{order}->{$b} }
$event->getTypes) {
my $u = uc $e;
my $c = getTypeComment $event $e;
- gen "\tEDG_WLL_EVENT_$u,\t/**< $c */\n";
+
+ if ($flesh ne $event->{flesh}->{$e}) {
+ $flesh = $event->{flesh}->{$e};
+ gen "/* new flesh $flesh */\n";
+ $fleshno += 100;
+ $eventno = $fleshno;
+ }
+ $eventno++;
+ gen "\tEDG_WLL_EVENT_$u = $eventno,\t/**< $c */\n";
}
@@@}
EDG_WLL_EVENT__LAST, /**< last currently supported event code */
* Predefined ULM key types
*/
typedef enum _edg_wll_KeyNameCode {
- UNDEFINED, /**< undefined */
- EDG_WLL_EVNT, /**< event type */
+ UNDEFINED = 0, /**< undefined */
+ EDG_WLL_EVNT = 1, /**< event type */
@@@{
+my $keyno = 2;
selectType $event '_common_';
for ($event->getFieldsOrdered) {
my $f = selectField $event $_;
my $fnu = uc $fn;
my $c = $f->{comment};
if (hasAlias $f 'ULM') {
- gen "\tULM\_$fnu,\t\t/**< $c */\n";
+ gen "\tULM\_$fnu = $keyno,\t\t/**< $c */\n";
} else {
- gen "\tEDG_WLL\_COMMON\_$fnu,\t\t/**< $c */\n";
+ gen "\tEDG_WLL\_COMMON\_$fnu = $keyno,\t\t/**< $c */\n";
}
+ $keyno++;
}
for my $t (sort { $event->{order}->{$a} <=> $event->{order}->{$b} }
$event->getTypes) {
my $f = selectField $event $_;
my $fnu = uc $f->{name};
my $c = $f->{comment};
- gen "\tEDG_WLL\_$tu\_$fnu,\t/**< $c */\n";
+ gen "\tEDG_WLL\_$tu\_$fnu = $keyno,\t/**< $c */\n";
+ $keyno++;
}
}
@@@}
* \union edg_wll_Event
* \brief All event types union
*/
-typedef union _edg_wll_Event {
+glite_lb_padded_union(_edg_wll_Event,30,
edg_wll_EventCode type; /* it is probably never used */
edg_wll_AnyEvent any;
@@@{
gen $indent."edg_wll_${t}Event\t${tl};\n";
}
@@@}
-} edg_wll_Event;
+)
+typedef union _edg_wll_Event edg_wll_Event;
/**
* Description of the job status.
* Returned by the edg_wll_JobStatus() function
*/
+
+@@@{
+ my $padno = 0;
+ my $padstruct = 'edg_wll_JobStatCode state;'; # XXX
+
+ for my $n (getAllFieldsOrdered $status) {
+ selectField $status $n;
+ my $f = getField $status;
+ my $type = getType $f;
+ my $name = getName $f;
+
+ $padstruct .= "$type $name; ";
+ if ($f->{pad}) {
+ gen "struct _pad_JobStatus_${padno}_dont_use { $padstruct };\n";
+ $padno++;
+ $padstruct = '';
+ }
+ }
+@@@}
+
typedef struct _edg_wll_JobStat {
edg_wll_JobStatCode state; /**< status code */
@@@{
+ $padno = 0;
for my $n (getAllFieldsOrdered $status) {
selectField $status $n;
my $f = getField $status;
gen qq{
! $type $name; /**< $comment */
};
+ if ($f->{pad}) {
+ my $pad = $f->{pad};
+ gen "\n char _pad_${padno}[sizeof(void *) * $pad - sizeof(struct _pad_JobStatus_${padno}_dont_use)];\n\n";
+ $padno++;
+ }
}
@@@}