1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#pragma once
#include "Compiler/Thread.h"
#include "Connection.h"
namespace storm {
namespace server {
STORM_PKG(core.lang.server);
/**
* Handles all state and communication related to the 'test'-messages.
*/
class Test : public ObjectOn<Compiler> {
STORM_CLASS;
public:
// Create.
STORM_CTOR Test(Connection *c);
// Handle a test message. Returns a reply to be sent or null.
MAYBE(SExpr *) STORM_FN onMessage(SExpr *expr);
private:
// Keep track of some symbols we use.
Symbol *start;
Symbol *stop;
Symbol *sum;
Symbol *send;
Symbol *echo;
// Send this sum when 'stop' is called.
Nat sumResult;
// Connection.
Connection *conn;
// Clear all state.
void clear();
// Handle messages.
MAYBE(SExpr *) STORM_FN onStop(SExpr *msg);
MAYBE(SExpr *) STORM_FN onSum(SExpr *msg);
MAYBE(SExpr *) STORM_FN onSend(SExpr *msg);
MAYBE(SExpr *) STORM_FN onEcho(SExpr *msg);
};
}
}
|