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