|
|
|
#ifdef HAVE_CONFIG_H
|
|
# include <config.h>
|
|
#endif
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <gwenhyfwar/gwenhyfwar.h>
|
|
#include <gwenhyfwar/debug.h>
|
|
#include <gwenhyfwar/db.h>
|
|
#include <gwenhyfwar/xml.h>
|
|
#include <gwenhyfwar/msgengine.h>
|
|
#include <gwenhyfwar/text.h>
|
|
#include <gwenhyfwar/cmdlayer.h>
|
|
|
|
|
|
int testDB(int argc, char **argv) {
|
|
GWEN_DB_NODE *cfg;
|
|
int rv;
|
|
const char *p;
|
|
|
|
fprintf(stderr,"Creating DB\n");
|
|
cfg=GWEN_DB_Group_new("Config");
|
|
|
|
fprintf(stderr, "Setting char values\n");
|
|
rv=GWEN_DB_SetCharValue(cfg,
|
|
GWEN_DB_FLAGS_OVERWRITE_VARS,
|
|
"testgroup/charvar",
|
|
"charvalue1");
|
|
rv=GWEN_DB_SetCharValue(cfg,
|
|
0,
|
|
"testgroup/charvar",
|
|
"charvalue2");
|
|
|
|
fprintf(stderr, "Retrieving char values\n");
|
|
p=GWEN_DB_GetCharValue(cfg,
|
|
"testgroup/charvar", 0,
|
|
"defaultValue");
|
|
fprintf(stderr," Retrieved value 1 is: %s\n", p);
|
|
|
|
p=GWEN_DB_GetCharValue(cfg,
|
|
"testgroup/charvar", 1,
|
|
"defaultValue");
|
|
fprintf(stderr," Retrieved value 2 is: %s\n", p);
|
|
|
|
fprintf(stderr, "Setting int values\n");
|
|
rv=GWEN_DB_SetIntValue(cfg,
|
|
GWEN_DB_FLAGS_OVERWRITE_VARS,
|
|
"testgroup/intvar",
|
|
11);
|
|
|
|
rv=GWEN_DB_SetIntValue(cfg,
|
|
0,
|
|
"testgroup/intvar",
|
|
22);
|
|
fprintf(stderr, "Retrieving int values\n");
|
|
rv=GWEN_DB_GetIntValue(cfg,
|
|
"testgroup/intvar", 0,
|
|
-1);
|
|
fprintf(stderr," Retrieved int value 1 is: %d\n", rv);
|
|
|
|
rv=GWEN_DB_GetIntValue(cfg,
|
|
"testgroup/intvar", 1,
|
|
-1);
|
|
fprintf(stderr," Retrieved int value 2 is: %d\n", rv);
|
|
|
|
|
|
fprintf(stderr,"Releasing DB\n");
|
|
GWEN_DB_Group_free(cfg);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int testXML(int argc, char **argv) {
|
|
GWEN_XMLNODE *n;
|
|
|
|
n=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag,"root");
|
|
if (GWEN_XML_ReadFile(n, "test.xml")) {
|
|
fprintf(stderr, "Error reading XML file.\n");
|
|
return 1;
|
|
}
|
|
fprintf(stderr, "XML file:\n");
|
|
GWEN_XMLNode_Dump(n, stderr, 2);
|
|
GWEN_XMLNode_free(n);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int testMsg(int argc, char **argv) {
|
|
GWEN_XMLNODE *n;
|
|
GWEN_MSGENGINE *e;
|
|
GWEN_XMLNODE *sn;
|
|
GWEN_DB_NODE *da;
|
|
GWEN_DB_NODE *din;
|
|
GWEN_BUFFER *gbuf;
|
|
|
|
e=GWEN_MsgEngine_new();
|
|
n=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag,"root");
|
|
da=GWEN_DB_Group_new("Data");
|
|
din=GWEN_DB_Group_new("ParsedData");
|
|
gbuf=GWEN_Buffer_new(0, 1024,0,1);
|
|
|
|
if (GWEN_XML_ReadFile(n, "test.xml")) {
|
|
fprintf(stderr, "Error reading XML file.\n");
|
|
return 1;
|
|
}
|
|
|
|
GWEN_MsgEngine_SetDefinitions(e, n);
|
|
sn=GWEN_MsgEngine_FindNodeByProperty(e,
|
|
"SEG",
|
|
"code",
|
|
1,
|
|
"PING");
|
|
if (!sn) {
|
|
fprintf(stderr, "Segment not found.\n");
|
|
return 2;
|
|
}
|
|
|
|
fprintf(stderr, "Node:\n");
|
|
GWEN_XMLNode_Dump(sn, stderr, 2);
|
|
|
|
GWEN_DB_SetCharValue(da,
|
|
GWEN_DB_FLAGS_OVERWRITE_VARS,
|
|
"name",
|
|
"Gwenhyfwar-Test");
|
|
GWEN_DB_SetCharValue(da,
|
|
GWEN_DB_FLAGS_OVERWRITE_VARS,
|
|
"version",
|
|
"0.0.1");
|
|
|
|
if (GWEN_MsgEngine_CreateMessageFromNode(e,
|
|
sn,
|
|
gbuf,
|
|
da)) {
|
|
fprintf(stderr, "Error creating message.\n");
|
|
return 3;
|
|
}
|
|
|
|
GWEN_Text_DumpString(GWEN_Buffer_GetStart(gbuf),
|
|
GWEN_Buffer_GetUsedBytes(gbuf));
|
|
|
|
GWEN_Buffer_SetPos(gbuf, 0);
|
|
if (GWEN_MsgEngine_ParseMessage(e,
|
|
sn,
|
|
gbuf,
|
|
din)) {
|
|
fprintf(stderr, "Error parsing message.\n");
|
|
return 3;
|
|
}
|
|
|
|
GWEN_Buffer_free(gbuf);
|
|
GWEN_MsgEngine_free(e);
|
|
GWEN_DB_Group_free(da);
|
|
GWEN_DB_Group_free(din);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
int testService(int argc, char **argv) {
|
|
GWEN_IPCSERVICECMD *s;
|
|
GWEN_ERRORCODE err;
|
|
unsigned int connId;
|
|
int i;
|
|
|
|
fprintf(stderr, "Initializing service\n");
|
|
s=GWEN_IPCServiceCmd_new();
|
|
err=GWEN_IPCServiceCmd_Init(s, "test.xml");
|
|
if (!GWEN_Error_IsOk(err)) {
|
|
DBG_ERROR_ERR(0, err);
|
|
return 1;
|
|
}
|
|
fprintf(stderr, "Initializing service: done\n");
|
|
|
|
|
|
fprintf(stderr, "Adding listener\n");
|
|
connId=GWEN_IPCServiceCmd_AddListener(s, "127.0.0.1", 44444, 1);
|
|
if (connId==0) {
|
|
fprintf(stderr, "Could not add listener\n");
|
|
return 2;
|
|
}
|
|
fprintf(stderr, "New listener added (id=%d)\n", connId);
|
|
|
|
for (i=0; i< 10; i++) {
|
|
fprintf(stderr, "\n\nWorking (loop %d)...\n\n", i);
|
|
err=GWEN_IPCServiceCmd_Work(s, 60*1000);
|
|
if (!GWEN_Error_IsOk(err)) {
|
|
DBG_ERROR_ERR(0, err);
|
|
return 1;
|
|
}
|
|
fprintf(stderr, "Working done\n");
|
|
}
|
|
|
|
fprintf(stderr, "Deinitializing service\n");
|
|
err=GWEN_IPCServiceCmd_Fini(s);
|
|
if (!GWEN_Error_IsOk(err)) {
|
|
DBG_ERROR_ERR(0, err);
|
|
return 1;
|
|
}
|
|
GWEN_IPCServiceCmd_free(s);
|
|
fprintf(stderr, "Deinitializing service: done\n");
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int main(int argc, char **argv) {
|
|
GWEN_ERRORCODE err;
|
|
int rv;
|
|
|
|
fprintf(stderr, "Initializing Gwenhywfar\n");
|
|
err=GWEN_Init();
|
|
if (!GWEN_Error_IsOk(err)) {
|
|
DBG_ERROR_ERR(0, err);
|
|
return 1;
|
|
}
|
|
fprintf(stderr, "Gwenhywfar initialized\n");
|
|
|
|
//rv=testDB(argc, argv);
|
|
//rv=testXML(argc, argv);
|
|
//rv=testMsg(argc, argv);
|
|
rv=testService(argc, argv);
|
|
|
|
fprintf(stderr, "Deinitializing Gwenhywfar\n");
|
|
err=GWEN_Fini();
|
|
if (!GWEN_Error_IsOk(err)) {
|
|
DBG_ERROR_ERR(0, err);
|
|
return 1;
|
|
}
|
|
fprintf(stderr, "Gwenhywfar deinitialized\n");
|
|
return rv;
|
|
}
|
|
|