108 lines
1.5 KiB
C++
108 lines
1.5 KiB
C++
#include "Event.h"
|
|
|
|
#include "Log.h"
|
|
|
|
#include <assert.h>
|
|
#include <stdio.h>
|
|
|
|
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;
|
|
}
|