#include "Event.h" #include "Log.h" #include #include Event::Event(char opcode) { switch (opcode) { case 'e': case 'F': case 'D': which = Created; break; case 'c': int never_use_c = 0; assert(never_use_c); break; case 'C': which = Changed; break; case 'A': case 'n': which = Deleted; break; case 'x': case 'X': which = Executing; break; case 'q': case 'Q': which = Exited; break; case 'P': which = EndExist; break; case 'G': which = Acknowledge; break; default: Log::error("unrecognized event opcode '%c' ('\0%o')", opcode, opcode & 0377); } } const char * Event::name() const { static char buf[40]; switch (which) { case Changed: sprintf(buf, "Changed (%s)", flags.value()); return buf; case Deleted: return "Deleted"; case Executing: return "Executing"; case Exited: return "Exited"; case Created: return "Created"; case Moved: return "Moved"; case Acknowledge: return "Acknowledge"; case Exists: return "Exists"; case EndExist: return "EndExist"; default: sprintf(buf, "UNKNOWN EVENT %d", which); return buf; } } char Event::code() const { // Map event to letter. static const char codeletters[] = "?cAXQFMGeP"; assert(which < sizeof codeletters - 1); char code = codeletters[which]; assert(code != '?'); assert((code == 'c') || !flags); return code; }