Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

dataclient.h

Go to the documentation of this file.
00001 //**************************************************************************
00002 #ifndef _DATACLIENT_H_
00003 #define _DATACLIENT_H_
00004 //**************************************************************************
00005 #include "remotesocket.h"
00006 #include "keyinfo.h"
00007 #include "misc.h"
00008 #include <string>
00009 #include "errcode.h"
00010 //**************************************************************************
00011 class DataClient : private RemoteSocket
00012 {
00013 private:
00014         KeyTable *keytable;
00015         int portnum;
00016         char servername[100];
00017         bool connected;
00018         int SendClientName();
00019         bool SendKeyForDataSend(int handle);
00020         bool SendKeyForDataSend(char *keyword);
00021         bool SendKeyword(char *keyword);
00022         int QueryKeyword(char *keyword)
00023                 { SendLine(keyword); return RecvVar<int>(); }
00024         int RecvDummyBytes(int size);
00025         int Release() { return SendKeyword("_q_private"); }
00026         bool isWritable(int handle);
00027         bool VerifyElementSize(int handle, int elem_size);
00028         bool isVariable(int handle);
00029         bool isStaticArray(int handle)
00030                 { return keytable->isStaticArray(handle); }
00031         bool isStaticArray(char *keyword)
00032                 { return keytable->isStaticArray(keyword); }
00033         bool isDynamicArray(int handle, int dim);
00034 
00035 public:
00037         DataClient();
00038 
00040         DataClient(char *host, int port = 4096);
00041 
00043         ~DataClient();
00044 
00047         int Connect(char *host, int port = 4096);
00048 
00050         int Disconnect();
00051 
00053         char *ServerName() { return (char *) servername; }
00054 
00056         int Port() { return portnum; }
00057 
00059         bool isBigEndian();
00060 
00063         bool isValidKeyword(char *keyword, int *handle = NULL);
00064 
00066         int SetPrintFlag(int flag) { return RemoteSocket::SetPrintFlag(flag); }
00067 
00069         KeyTable *GetTable();
00070 
00072         bool isWritable(char *keyword);
00073 
00076         int RecvKeyTable(KeyTable *K = NULL);
00077 
00080         VariableType VarType(char *keyword);
00081 
00083         char *RecvValue(char *keyword);
00084 
00086         int SendValue(char *keyword, char *value);
00087 
00089         void ListKeywords();
00090 
00092         void ListValues();
00093 
00095         template <class Etype>
00096                 int SendVariable(char *keyword, Etype a);
00097 
00099         template <class Etype>
00100                 int RecvVariable(char *keyword, Etype *a);
00101 
00103         template <class Etype>
00104                 Etype RecvVariable(char *keyword);
00105 
00107         int SendArray(char *keyword, void *a);
00108 
00110         int RecvArray(char *keyword, void *a);
00111 
00114         int getArrayDim(char *keyword, int dim);
00115 
00117         template <class Etype>
00118                 int SendArray1D(char *keyword, Etype *a);
00119 
00121         template <class Etype>
00122                 int RecvArray1D(char *keyword, Etype *a);
00123 
00128         template <class Etype>
00129                 int RecvArray1D(char *keyword, Etype **ptr);
00130 
00132         template <class Etype>
00133                 int SendArray2D(char *keyword, Etype **a);
00134 
00136         template <class Etype>
00137                 int RecvArray2D(char *keyword, Etype **a);
00138 
00143         template <class Etype>
00144                 int RecvArray2D(char *keyword, Etype ***ptr);
00145 
00147         template <class Etype>
00148                 int SendArray3D(char *keyword, Etype ***a);
00149 
00151         template <class Etype>
00152                 int RecvArray3D(char *keyword, Etype ***a);
00153 
00158         template <class Etype>
00159                 int RecvArray3D(char *keyword, Etype ****ptr);
00160 
00162         template <class Etype>
00163                 int SendArray4D(char *keyword, Etype ****a);
00164 
00166         template <class Etype>
00167                 int RecvArray4D(char *keyword, Etype ****a);
00168 
00173         template <class Etype>
00174                 int RecvArray4D(char *keyword, Etype *****ptr);
00175 
00178         template <class myStruct>
00179                 int SendStruct(char *keyword, myStruct *S, Semaphore *sem=NULL);
00180 
00183         template <class myStruct>
00184                 double RecvStruct(char *keyword, myStruct *S, Semaphore *sem = NULL);
00185 
00189         int SendFile(char *filename, char *destfile = NULL);
00190 
00194         int RecvFile(char *filename, char *destfile = NULL);
00195 
00197         double BytesSent() { return TCPSocket::BytesSent(); }
00198 
00200         double BytesRecd() { return TCPSocket::BytesRecd(); }
00201 
00203         int SendTime() { return TCPSocket::SendTime(); }
00204 
00206         int RecvTime() { return TCPSocket::RecvTime(); }
00207 
00209         double SendRate() { return 8.0*BytesSent()/(1000.0*SendTime()); }
00210 
00212         double RecvRate() { return 8.0*BytesRecd()/(1000.0*RecvTime()); }
00213 
00214 };
00215 //**************************************************************************
00216 #include "dataclientsend.h"
00217 #include "dataclientrecv.h"
00218 //**************************************************************************
00219 #endif  // _DATACLIENT_H_
00220 //**************************************************************************

Generated on Sun Jun 16 17:36:49 2002 for POSSE: Portable Object-oriented Scientific Steering Environment by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001