B.1 Details of the sample source files
This section gives details of the sample source files.
- Organization of this subsection
(1) Events handled by the sample source files
|
Attribute type |
Item |
Attribute name |
Description |
|---|---|---|---|
|
Basic attribute |
Event ID |
-- |
0x00000001 |
|
Message |
-- |
Starts the SAMPLE application. |
|
|
Extended attributes (common attributes) |
Event level |
SEVERITY |
Notice |
|
User name |
USER_NAME |
Name of the user who executes the application. |
|
|
Product name |
PRODUCT_NAME |
/COMPANY/APP1/SAMPLE_PRODUCT (product name) |
|
|
Object type |
OBJECT_TYPE |
SAMPLE |
|
|
Object name |
OBJECT_NAME |
SAMPLE_NAME |
|
|
Root object type |
ROOT_OBJECT_TYPE |
ROOT_SAMPLE |
|
|
Root object name |
ROOT_OBJECT_NAME |
ROOT_SAMPLE_NAME |
|
|
Object ID |
OBJECT_ID |
SAMPLE_ID |
|
|
Occurrence |
OCCURRENCE |
START |
|
|
Start time |
START_TIME |
Start time of the SAMPLE application. The number of seconds from 00:00:00 UTC on 1970-01-01. |
|
|
Platform |
PLATFORM |
NT |
|
|
Version information |
ACTION_VERSION |
0600 |
|
|
Extended attributes (user-specific attributes) |
SAMPLE common attribute 1 |
COMMON_ATTR1 |
NATIVE |
|
SAMPLE common attribute 2 |
COMMON_ATTR2 |
TRUE |
|
|
SAMPLE start attributes 1 |
START_ATTR1 |
SAMPLE1 |
|
|
SAMPLE start attributes 2 |
START_ATTR2 |
SAMPLE2 |
(2) Coding of sample source files
(a) sender.c code
#include <stdio.h>
#include <time.h>
#include "JevApi.h"
int regist_start_event()
{
int rc; /* Return code */
long status = 0; /* Detailed error code */
const char* server; /* Event server name */
long baseID; /* Event ID */
const char* message; /* Message */
char starttime[32];
const char* extattrs[16]; /* Array for storing extended attributes */
/* Set the destination event server name. */
server = NULL;
/* Set the event ID. */
baseID = 0x00000001;
/* Set the message. */
message = "Starts the SAMPLE application.";
/* Set the extended attributes. */
extattrs[0] = "SEVERITY=Notice";
extattrs[1] = "USER_NAME=SAMPLE_USER";
extattrs[2] = "PRODUCT_NAME=/COMPANY/APP1/SAMPLE_PRODUCT";
extattrs[3] = "OBJECT_TYPE=SAMPLE";
extattrs[4] = "OBJECT_NAME=SAMPLE_NAME";
extattrs[5] = "OBJECT_ROOT_TYPE=ROOT_SAMPLE";
extattrs[6] = "OBJECT_ROOT_NAME=ROOT_SAMPLE_NAME";
extattrs[7] = "OBJECT_ID=SAMPLE_ID";
extattrs[8] = "OCCURRENCE=START";
sprintf(starttime, "START_TIME=%ld", time(NULL));
extattrs[9] = starttime;
extattrs[10] = "PLATFORM=NT";
extattrs[11] = "VERSION=0600";
extattrs[12] = "COMMON_ATTR1=NATIVE";
extattrs[13] = "COMMON_ATTR2=TRUE";
extattrs[14] = "START_ATTR1=SAMPLE1";
extattrs[15] = "START_ATTR2=SAMPLE2";
/* Register the JP1 event. */
rc = JevRegistEvent(&status,
server,
baseID,
message,
extattrs,
16);
if(rc < 0) {
fprintf(stderr,
"JevRegistEvent() failed. status = %ld\n",
status);
return -1;
}
return 0;
}
int main()
{
return regist_start_event();
}(b) receiver.c code
#include <stdio.h>
#include <string.h>
#include "JevApi.h"
int get_start_event()
{
int rc; /* Return code */
long position; /* Sequence number within the event database */
long status; /* Status code address */
char filter[256]; /* Filter statement buffer */
const char *server; /* Event server name */
const char *message; /* Pointer to the message */
const char *name; /* Pointer to the extended attribute name */
const char *value;/* Pointer to the extended attribute value */
JEVGETKEY key; /* Handle for acquiring JP1 events */
JP1EVENT event; /* Handle for accessing JP1 events */
JEVACCESSTYPE access;/* Action when no JP1 event exists */
/* Set the filter statement to acquire JP1 events. */
strcpy(filter, "B.ID IN 00000001\n");
strcat(filter, "E.SEVERITY IN Notice\n");
strcat(filter,
"E.PRODUCT_NAME IN /COMPANY/APP1/SAMPLE_PRODUCT");
/* Connect to the event server of the physical host. */
status = 0;
/* Event server of the physical host to connect to
server = NULL; */
/* Acquisition starts with sequence number 0 within the event database. */
position = 0;
key = JevGetOpen(&status, server, filter, position);
if(key == NULL){
fprintf(stderr,
"JevGetOpen() failed. Status = %ld\n",
status);
return -1;
}
/* Acquire all the JP1 events which match the filter condition. */
while(1) {
status = 0;
/* Error return when no JP1 event matches the filter condition */
access = JEVGET_NOWAIT;
event = JevGetEvent(&status, key, access);
if(event == NULL){
if(status == JEV_S_NO_EVENT) {
/* No more JP1 event matches the filter condition. */
break;
}
else {
/* Error occurred while acquiring JP1 events. */
fprintf(stderr,
"JevGetEvent() failed. Status = %ld\n",
status);
JevGetClose(&status, key);
return -1;
}
}
/* Acquire a message. */
status = 0;
rc = JevGetMessage(&status, event, &message);
if(rc < 0){
fprintf(stderr,
"JevGetMessage() failed. Status = %ld\n",
status);
JevFreeEvent(&status, event);
JevGetClose(&status, key);
return -1;
}
else{
printf("JevGetMessage() message = %s\n", message);
}
/* Acquire the (first) extended attribute. */
status = 0;
rc = JevGetFirstExtAttr(&status, event, &name, &value);
if(rc < 0){
fprintf(stderr,
"JevGetFirstExtAttr() failed. Status = %ld\n",
status);
JevFreeEvent(&status, event);
JevGetClose(&status, key);
return -1;
}
else{
printf("JevGetFirstExtAttr() name = %s\n", name);
printf("JevGetFirstExtAttr() value = %s\n", value);
}
/* Acquire the (subsequent) extended attribute. */
while(1) {
status = 0;
rc = JevGetNextExtAttr(&status, event, &name, &value);
if(rc < 0 ){
if(status == JEV_S_EXTATTR_EOD) {
/* No more extended attribute exists. */
break;
}
else {
/* Error occurred while acquiring extended
attributes. */
fprintf(stderr,
"JevGetNextExtAttr() failed.
Status = %ld\n", status);
JevFreeEvent(&status, event);
JevGetClose(&status, key);
return -1;
}
}
else {
printf("JevGetNextExtAttr() name = %s\n", name);
printf("JevGetNextExtAttr() value = %s\n", value);
}
}
/* Release the memory allocated for the acquired JP1 events. */
rc = JevFreeEvent(&status, event);
if(rc < 0){
fprintf(stderr,
"JevFreeEvent() failed. Status = %ld\n",
status);
JevGetClose(&status, key);
return -1;
}
}
/* Disconnect the event server. */
rc = JevGetClose(&status, key);
if(rc < 0){
fprintf(stderr,
"JevGetClose() failed. Status = %ld\n",
status);
return -1;
}
return 0;
}
int main()
{
return get_start_event();
}