#ifndef VRPN_LOG_H
#define VRPN_LOG_H
class vrpn_Log {
public:
vrpn_Log (vrpn_TranslationTable * senders,
vrpn_TranslationTable * types);
~vrpn_Log (void);
// ACCESSORS
// MANIPULATORS
int open (void);
int close (void);
int saveLogSoFar(void);
int logIncomingMessage (vrpn_int32 payloadLen, struct timeval time,
vrpn_int32 type, vrpn_int32 sender, const char * buffer);
int logOutgoingMessage (vrpn_int32 payloadLen, struct timeval time,
vrpn_int32 type, vrpn_int32 sender, const char * buffer);
int logMessage (vrpn_int32 payloadLen, struct timeval time,
vrpn_int32 type, vrpn_int32 sender, const char * buffer,
vrpn_bool isRemote = VRPN_FALSE);
int setCookie (const char * cookieBuffer);
int setCompoundName (const char * name, int index);
int setName (const char * name);
int setName (const char * name, int len);
long & logMode (void);
int addFilter (vrpn_LOGFILTER filter, void * userdata);
timeval lastLogTime ();
protected:
int checkFilters (vrpn_int32 payloadLen, struct timeval time,
vrpn_int32 type, vrpn_int32 sender, const char * buffer);
char * d_logFileName;
long d_logmode;
vrpn_LOGLIST * d_logTail;
vrpn_LOGLIST * d_firstEntry;
FILE * d_file;
char * d_magicCookie;
vrpn_bool d_wroteMagicCookie;
vrpnLogFilterEntry * d_filters;
vrpn_TranslationTable * d_senders;
vrpn_TranslationTable * d_types;
timeval d_lastLogTime;
};
#endif // VRPN_LOG_H