|
rllib
1
|
00001 /*************************************************************************** 00002 rldataprovider.h - description 00003 ------------------- 00004 begin : Fri Dec 20 2002 00005 copyright : (C) 2002 by Rainer Lehrig 00006 email : lehrig@t-online.de 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This library is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE as * 00013 * published by the Free Software Foundation * 00014 * * 00015 ***************************************************************************/ 00016 #ifndef _RL_DATA_PROVIDER_H_ 00017 #define _RL_DATA_PROVIDER_H_ 00018 00019 #include "rldefine.h" 00020 #include "rlthread.h" 00021 #include "rlsocket.h" 00022 #include "rlinterpreter.h" 00023 00029 class rlDataProvider 00030 { 00031 public: 00032 rlDataProvider(int numInteger, int numFloat=0, int numString=0); 00033 virtual ~rlDataProvider(); 00034 int getInt (int id); 00035 float getFloat (int id); 00036 int getIntArray (int id, int *i, int nmax); 00037 int getFloatArray (int id, float *f, int nmax); 00038 const char *getString(int id); 00039 int setInt (int id, int i); 00040 int setFloat (int id, float f); 00041 int setIntArray (int id, int *i, int num); 00042 int setFloatArray (int id, float *f, int num); 00043 int setString(int id, const char *str); 00044 int getIntAndReset(int id); 00045 int setIntAndWaitForReset(int id, int i); 00046 int setInt0Semaphore(int i); 00047 int getInt0Semaphore(); 00048 int run(rlSocket *socket); 00049 private: 00050 typedef char* CHARPTR; 00051 int *ints; 00052 float *floats; 00053 char **strings; 00054 int num_integer, num_float, num_string; 00055 rlMutex mutex; 00056 rlSemaphore int0semaphore; 00057 }; 00058 00062 class rlDataProviderClient 00063 { 00064 public: 00065 rlDataProviderClient(); 00066 virtual ~rlDataProviderClient(); 00067 int getInt (rlSocket *socket, int id, int *status); 00068 float getFloat (rlSocket *socket, int id, int *status); 00069 int getIntArray (rlSocket *socket, int id, int *array, int nmax); 00070 int getFloatArray (rlSocket *socket, int id, float *array, int nmax); 00071 const char *getString (rlSocket *socket, int id, int *status); 00072 int setInt (rlSocket *socket, int id, int i); 00073 int setFloat (rlSocket *socket, int id, float f); 00074 int setIntArray (rlSocket *socket, int id, int *i, int num); 00075 int setFloatArray (rlSocket *socket, int id, float *f, int num); 00076 int setString (rlSocket *socket, int id, const char *str); 00077 int getIntAndReset (rlSocket *socket, int id, int *status); 00078 int setIntAndWaitForReset(rlSocket *socket, int id, int i); 00079 int getInt0Semaphore (rlSocket *socket, int *status); 00080 private: 00081 rlInterpreter interpreter; 00082 char cret[rl_PRINTF_LENGTH]; 00083 }; 00084 00089 class rlDataProviderThreads 00090 { 00091 public: 00092 rlDataProviderThreads(int Port, rlDataProvider *Provider); 00093 virtual ~rlDataProviderThreads(); 00094 void start(); 00095 rlDataProvider *provider; 00096 rlThread thread; 00097 int port; 00098 }; 00099 00100 #endif
1.7.5.1