rllib  1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
Public Member Functions | Private Attributes | List of all members
rlDataProviderClient Class Reference

#include <rldataprovider.h>

Collaboration diagram for rlDataProviderClient:
Collaboration graph
[legend]

Public Member Functions

 rlDataProviderClient ()
 
virtual ~rlDataProviderClient ()
 
int getInt (rlSocket *socket, int id, int *status)
 
float getFloat (rlSocket *socket, int id, int *status)
 
int getIntArray (rlSocket *socket, int id, int *array, int nmax)
 
int getFloatArray (rlSocket *socket, int id, float *array, int nmax)
 
const char * getString (rlSocket *socket, int id, int *status)
 
int setInt (rlSocket *socket, int id, int i)
 
int setFloat (rlSocket *socket, int id, float f)
 
int setIntArray (rlSocket *socket, int id, int *i, int num)
 
int setFloatArray (rlSocket *socket, int id, float *f, int num)
 
int setString (rlSocket *socket, int id, const char *str)
 
int getIntAndReset (rlSocket *socket, int id, int *status)
 
int setIntAndWaitForReset (rlSocket *socket, int id, int i)
 
int getInt0Semaphore (rlSocket *socket, int *status)
 

Private Attributes

rlInterpreter interpreter
 
char cret [rl_PRINTF_LENGTH]
 

Detailed Description

This class is a client that can access rlDataProvider over TCP.

Definition at line 62 of file rldataprovider.h.

Constructor & Destructor Documentation

rlDataProviderClient::rlDataProviderClient ( )

Definition at line 335 of file rldataprovider.cpp.

{
rlwsa();
}
rlDataProviderClient::~rlDataProviderClient ( )
virtual

Definition at line 340 of file rldataprovider.cpp.

{
}

Member Function Documentation

float rlDataProviderClient::getFloat ( rlSocket socket,
int  id,
int *  status 
)

Definition at line 368 of file rldataprovider.cpp.

{
float ret;
int iret;
*status = -1;
if(socket->isConnected() == 0) return 0.0f;
socket->printf("getFloat(%d)\n",id);
if(iret == 0) // timeout
{
socket->disconnect();
socket->connect();
*status = -2;
return 0;
}
if(interpreter.isCommand("floatResult("))
{
sscanf(interpreter.line,"floatResult(%f)",&ret);
*status = 0;
return ret;
}
return 0.0f;
}
int rlDataProviderClient::getFloatArray ( rlSocket socket,
int  id,
float *  array,
int  nmax 
)

Definition at line 418 of file rldataprovider.cpp.

{
int status,ret;
const char *cptr = getString(socket,id,&status);
if(status != 0) return -1;
ret = 0;
while(1)
{
if(cptr == NULL || *cptr == '\0') break;
if(*cptr != ',' && *cptr != '\"')
{
sscanf(cptr,"%f",&array[ret++]);
cptr = strchr(cptr,',');
if(cptr != NULL) cptr++;
if(ret >= nmax) break;
}
else
{
cptr++;
}
}
return ret;
}
int rlDataProviderClient::getInt ( rlSocket socket,
int  id,
int *  status 
)

Definition at line 344 of file rldataprovider.cpp.

{
int ret;
*status = -1;
if(socket->isConnected() == 0) return 0;
socket->printf("getInt(%d)\n",id);
if(ret == 0) // timeout
{
socket->disconnect();
socket->connect();
*status = -2;
return 0;
}
if(interpreter.isCommand("intResult("))
{
sscanf(interpreter.line,"intResult(%d)",&ret);
*status = 0;
return ret;
}
return 0;
}
int rlDataProviderClient::getInt0Semaphore ( rlSocket socket,
int *  status 
)

Definition at line 555 of file rldataprovider.cpp.

{
int ret;
*status = -1;
if(socket->isConnected() == 0) return 0;
socket->printf("getInt0Semaphore()\n");
ret = socket->readStr(interpreter.line,rl_PRINTF_LENGTH-1,CLIENT_TIMEOUT*60*60); // 1 hour timeout
if(ret == 0) { *status = -2; return 0; } // timeout
if(interpreter.isCommand("intResult("))
{
sscanf(interpreter.line,"intResult(%d)",&ret);
*status = 0;
return ret;
}
return 0;
}
int rlDataProviderClient::getIntAndReset ( rlSocket socket,
int  id,
int *  status 
)

Definition at line 525 of file rldataprovider.cpp.

{
int ret;
*status = -1;
if(socket->isConnected() == 0) return 0;
socket->printf("getIntAndReset(%d)\n",id);
if(ret == 0) // timeout
{
socket->disconnect();
socket->connect();
*status = -2;
return 0;
}
if(interpreter.isCommand("intResult("))
{
sscanf(interpreter.line,"intResult(%d)",&ret);
*status = 0;
return ret;
}
return 0;
}
int rlDataProviderClient::getIntArray ( rlSocket socket,
int  id,
int *  array,
int  nmax 
)

Definition at line 393 of file rldataprovider.cpp.

{
int status,ret;
const char *cptr = getString(socket,id,&status);
if(status != 0) return -1;
ret = 0;
while(1)
{
if(cptr == NULL || *cptr == '\0') break;
if(*cptr != ',' && *cptr != '\"')
{
sscanf(cptr,"%d",&array[ret++]);
cptr = strchr(cptr,',');
if(cptr != NULL) cptr++;
if(ret >= nmax) break;
}
else
{
cptr++;
}
}
return ret;
}
const char * rlDataProviderClient::getString ( rlSocket socket,
int  id,
int *  status 
)

Definition at line 443 of file rldataprovider.cpp.

{
int ret;
*status = -1;
if(socket->isConnected() == 0) return NULL;
socket->printf("getString(%d)\n",id);
if(ret == 0) // timeout
{
socket->disconnect();
socket->connect();
*status = -2;
return 0;
}
if(interpreter.isCommand("stringResult("))
{
*status = 0;
return cret;
}
return NULL;
}
int rlDataProviderClient::setFloat ( rlSocket socket,
int  id,
float  f 
)

Definition at line 473 of file rldataprovider.cpp.

{
if(socket->isConnected() == 0) return -1;
return socket->printf("float(%d,%d)\n",id,f);
}
int rlDataProviderClient::setFloatArray ( rlSocket socket,
int  id,
float *  f,
int  num 
)

Definition at line 499 of file rldataprovider.cpp.

{
char buf[rl_PRINTF_LENGTH],val[100];
int nmax,ipos,ind;
if(num <= 0) return -1;
nmax = rl_PRINTF_LENGTH - strlen("\")\n") - 1;
sprintf(buf,"string(%d,\"",id);
ipos = strlen(buf);
for(ind=0; ind<num; ind++)
{
sprintf(val,"%f,",f[ind]);
if(ipos+(int)strlen(val) >= nmax) return -1;
strcat(buf,val);
ipos = strlen(buf);
}
strcat(buf,"\"\n");
return socket->printf(buf);
}
int rlDataProviderClient::setInt ( rlSocket socket,
int  id,
int  i 
)

Definition at line 467 of file rldataprovider.cpp.

{
if(socket->isConnected() == 0) return -1;
return socket->printf("int(%d,%d)\n",id,i);
}
int rlDataProviderClient::setIntAndWaitForReset ( rlSocket socket,
int  id,
int  i 
)

Definition at line 549 of file rldataprovider.cpp.

{
if(socket->isConnected() == 0) return -1;
return socket->printf("intAndReset(%d,%d)\n",id,i);
}
int rlDataProviderClient::setIntArray ( rlSocket socket,
int  id,
int *  i,
int  num 
)

Definition at line 479 of file rldataprovider.cpp.

{
char buf[rl_PRINTF_LENGTH],val[100];
int nmax,ipos,ind;
if(num <= 0) return -1;
nmax = rl_PRINTF_LENGTH - strlen("\")\n") - 1;
sprintf(buf,"string(%d,\"",id);
ipos = strlen(buf);
for(ind=0; ind<num; ind++)
{
sprintf(val,"%d,",i[ind]);
if(ipos+(int)strlen(val) >= nmax) return -1;
strcat(buf,val);
ipos = strlen(buf);
}
strcat(buf,"\"\n");
return socket->printf(buf);
}
int rlDataProviderClient::setString ( rlSocket socket,
int  id,
const char *  str 
)

Definition at line 519 of file rldataprovider.cpp.

{
if(socket->isConnected() == 0) return -1;
return socket->printf("string(%d,\"%d\")\n",id,str);
}

Member Data Documentation

char rlDataProviderClient::cret[rl_PRINTF_LENGTH]
private

Definition at line 82 of file rldataprovider.h.

rlInterpreter rlDataProviderClient::interpreter
private

Definition at line 81 of file rldataprovider.h.


The documentation for this class was generated from the following files: