00001
00032 #include "tape_odbc.h"
00033 #include "TapeStream.h"
00034 #include "ODBCTapeStream.h"
00035
00036 EXPORT CALLBACKS *callback = NULL;
00037
00038 int open_player(struct player *my, char *fname, char *flags){
00039
00040 my->tsp = ODBCTapeStream::OpenStream(my, fname, flags);
00041 if(NULL == my->tsp){
00042 gl_error("player DB %s: unable to connect.", fname);
00043 my->status=TS_DONE;
00044 return 0;
00045 }
00046 my->loopnum=my->loop;
00047 my->status=TS_OPEN;
00048 my->type=FT_ODBC;
00049 return 1;
00050 }
00051
00052 char *read_player(struct player *my, char *buffer, unsigned int size){
00053 return ((ODBCTapeStream *)(my->tsp))->ReadLine(buffer, size);
00054 }
00055
00056 int rewind_player(struct player *my){
00057 return ((ODBCTapeStream *)(my->tsp))->Rewind();
00058 }
00059
00060 void close_player(struct player *my){
00061 ODBCTapeStream::CloseStream(my);
00062 }
00063
00064
00065 int open_shaper(struct shaper *my, char *fname, char *flags){
00066
00067
00068 gl_error("ODBC does not support shapers (yet!)");
00069 return 0;
00070 }
00071
00072 char *read_shaper(struct shaper *my,char *buffer,unsigned int size){
00073 return ((ODBCTapeStream *)(my->tsp))->ReadLine(buffer, size);
00074 }
00075
00076 int rewind_shaper(struct shaper *my){
00077 return ((ODBCTapeStream *)(my->tsp))->Rewind();
00078 }
00079
00080 void close_shaper(struct shaper *my){
00081 ODBCTapeStream::CloseStream(my);
00082 }
00083
00084
00085 int open_recorder(struct recorder *my, char *fname, char *flags){
00086 char buff[128];
00087 time_t now=time(NULL);
00088 OBJECT *obj=OBJECTHDR(my);
00089
00090 my->tsp=ODBCTapeStream::OpenStream(my, fname, flags);
00091 if(NULL == my->tsp){
00092 gl_error("recorder DB %s: unable to connect.", fname);
00093 my->status=TS_DONE;
00094 return 0;
00095 }
00096 my->status=TS_OPEN;
00097 my->type=FT_ODBC;
00098 my->samples=0;
00099 sprintf(buff, "%s %d", obj->parent->oclass->name, obj->id);
00100 #ifdef WIN32
00101 ((ODBCTapeStream *)(my->tsp))->PrintHeader(asctime(localtime(&now)), getenv("USERNAME"), getenv("MACHINENAME"),
00102 buff, my->property, my->trigger[0]=='\0'?"(none)":my->trigger,
00103 (long)my->interval, my->limit);
00104 #else
00105 my->tsp->PrintHeader(asctime(localtime(&now)), getenv("USER"),
00106 getenv("HOST"), buff, my->property, my->trigger[0]=='\0'?"(none)":my->trigger,
00107 my->interval, my->limit);
00108 #endif
00109 return 1;
00110 }
00111
00112 int write_recorder(struct recorder *my, char *timestamp, char *value){
00113 return ((ODBCTapeStream *)(my->tsp))->Write(timestamp, value);
00114 }
00115
00116 void close_recorder(struct recorder *my){
00117
00118 ODBCTapeStream::CloseStream(my);
00119 }
00120
00121
00122
00123 int open_collector(struct collector *my, char *fname, char *flags){
00124 time_t now=time(NULL);
00125 OBJECT *obj=OBJECTHDR(my);
00126
00127 my->tsp=ODBCTapeStream::OpenStream(my, fname, flags);
00128 if(NULL == my->tsp){
00129 gl_error("collector DB %s: unable to connect.", fname);
00130 my->status=TS_DONE;
00131 return 0;
00132 }
00133 my->status=TS_OPEN;
00134 my->type=FT_ODBC;
00135 my->samples=0;
00136 #ifdef WIN32
00137 ((ODBCTapeStream *)(my->tsp))->PrintHeader(asctime(localtime(&now)), getenv("USERNAME"), getenv("MACHINENAME"),
00138 my->group, my->property, my->trigger[0]=='\0'?"(none)":my->trigger,
00139 (long)my->interval, my->limit);
00140 #else
00141 my->tsp->PrintHeader(asctime(localtime(&now)), getenv("USER"),
00142 getenv("HOST"), my->group, my->property, my->trigger[0]=='\0'?"(none)":my->trigger,
00143 my->interval, my->limit);
00144 #endif
00145 return 1;
00146 }
00147
00148 int write_collector(struct collector *my, char *timestamp, char *value){
00149 return ((ODBCTapeStream *)(my->tsp))->Write(timestamp, value);
00150 }
00151
00152 void close_collector(struct collector *my){
00153
00154 ODBCTapeStream::CloseStream(my);
00155 }
00156
00157