AcePerl
view release on metacpan or search on metacpan
#ifdef __cplusplus
extern "C" {
#endif
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#ifdef __cplusplus
}
#endif
#include "aceclient.h"
#include "RPC.h"
#define CHUNKSIZE 10
static int
not_here(s)
char *s;
{
croak("%s not implemented on this architecture", s);
return -1;
}
static double
constant(name, arg)
char *name;
int arg;
{
errno = 0;
switch (*name) {
case 'A':
if (strEQ(name, "ACE_INVALID"))
#ifdef ACE_INVALID
return ACE_INVALID;
#else
goto not_there;
#endif
if (strEQ(name, "ACE_OUTOFCONTEXT"))
#ifdef ACE_OUTOFCONTEXT
return ACE_OUTOFCONTEXT;
#else
goto not_there;
#endif
if (strEQ(name, "ACE_SYNTAXERROR"))
#ifdef ACE_SYNTAXERROR
return ACE_SYNTAXERROR;
#else
goto not_there;
#endif
if (strEQ(name, "ACE_UNRECOGNIZED"))
#ifdef ACE_UNRECOGNIZED
return ACE_UNRECOGNIZED;
#else
goto not_there;
#endif
if (strEQ(name, "ACE_PARSE"))
#ifdef ACE_PARSE
return ACE_PARSE;
#else
goto not_there;
#endif
break;
case 'B':
break;
case 'C':
break;
case 'D':
if (strEQ(name, "DEFAULT_PORT"))
#ifdef DEFAULT_PORT
return DEFAULT_PORT;
#else
goto not_there;
#endif
if (strEQ(name, "DROP_ENCORE"))
#ifdef DROP_ENCORE
return DROP_ENCORE;
#else
goto not_there;
#endif
break;
case 'E':
break;
case 'F':
break;
case 'G':
break;
case 'H':
if (strEQ(name, "HAVE_ENCORE"))
#ifdef HAVE_ENCORE
return HAVE_ENCORE;
#else
goto not_there;
#endif
break;
case 'I':
break;
case 'J':
break;
case 'K':
break;
case 'L':
break;
case 'M':
break;
case 'N':
break;
case 'O':
break;
case 'P':
break;
case 'Q':
break;
case 'R':
break;
case 'S':
if (strEQ(name, "STATUS_WAITING"))
#ifdef STATUS_WAITING
return STATUS_WAITING;
#else
goto not_there;
#endif
if (strEQ(name, "STATUS_PENDING"))
#ifdef STATUS_PENDING
return STATUS_PENDING;
#else
goto not_there;
#endif
if (strEQ(name, "STATUS_ERROR"))
#ifdef STATUS_ERROR
return STATUS_ERROR;
#else
goto not_there;
#endif
break;
case 'T':
break;
case 'U':
break;
case 'V':
break;
case 'W':
if (strEQ(name, "WANT_ENCORE"))
#ifdef WANT_ENCORE
return WANT_ENCORE;
#else
goto not_there;
#endif
break;
case 'X':
break;
case 'Y':
break;
case 'Z':
break;
case '_':
if (strEQ(name, "_ACECLIENT_"))
#ifdef _ACECLIENT_
return _ACECLIENT_;
#else
goto not_there;
#endif
break;
}
errno = EINVAL;
return 0;
not_there:
errno = ENOENT;
return 0;
}
MODULE = Ace::RPC PACKAGE = Ace::RPC
double
constant(name,arg)
char * name
int arg
AceDB*
connect(CLASS, host, rpc_port, timeOut=120, ...)
char* CLASS
char* host
unsigned long rpc_port
int timeOut
PREINIT:
ace_handle* ace;
CODE:
RETVAL = (AceDB*) safemalloc(sizeof(AceDB));
if (RETVAL == NULL) XSRETURN_UNDEF;
RETVAL->encoring = FALSE;
RETVAL->status = STATUS_WAITING;
RETVAL->answer = NULL;
RETVAL->errcode = 0;
ace = openServer(host,rpc_port,timeOut);
if (ace == NULL) {
safefree(RETVAL);
XSRETURN_UNDEF;
} else {
RETVAL->database = ace;
}
OUTPUT:
RETVAL
void
DESTROY(self)
AceDB* self
CODE:
if (self->answer != NULL)
free((void*) self->answer);
if (self->database != NULL)
closeServer(self->database);
safefree((char*)self);
ace_handle*
handle(self)
AceDB* self
CODE:
RETVAL = self->database;
OUTPUT:
RETVAL
int
encore(self)
AceDB* self
CODE:
RETVAL = self->encoring;
OUTPUT:
( run in 1.808 second using v1.01-cache-2.11-cpan-9581c071862 )