88 lines
1.8 KiB
C
88 lines
1.8 KiB
C
|
|
||
|
#ifndef TOOLS_SHELL_SHELLSTATE
|
||
|
#define TOOLS_SHELL_SHELLSTATE
|
||
|
|
||
|
class ShellContext;
|
||
|
|
||
|
/*
|
||
|
* Currently, there are four types of state in total
|
||
|
* 1. start state: the first state the program enters
|
||
|
* 2. connecting state: the program try to connnect to a leveldb server, whose
|
||
|
* previous states could be "start" or "connected" states
|
||
|
* 3. connected states: the program has already connected to a server, and is
|
||
|
* processing user commands
|
||
|
* 4. stop state: the last state the program enters, do some cleanning up things
|
||
|
*/
|
||
|
|
||
|
class ShellState {
|
||
|
public:
|
||
|
virtual void run(ShellContext *) = 0;
|
||
|
virtual ~ShellState() {}
|
||
|
};
|
||
|
|
||
|
|
||
|
class ShellStateStart : public ShellState {
|
||
|
public:
|
||
|
static ShellStateStart * getInstance(void) {
|
||
|
static ShellStateStart instance;
|
||
|
return &instance;
|
||
|
}
|
||
|
|
||
|
virtual void run(ShellContext *);
|
||
|
|
||
|
private:
|
||
|
ShellStateStart() {}
|
||
|
virtual ~ShellStateStart() {}
|
||
|
};
|
||
|
|
||
|
class ShellStateStop : public ShellState {
|
||
|
public:
|
||
|
static ShellStateStop * getInstance(void) {
|
||
|
static ShellStateStop instance;
|
||
|
return &instance;
|
||
|
}
|
||
|
|
||
|
virtual void run(ShellContext *);
|
||
|
|
||
|
private:
|
||
|
ShellStateStop() {}
|
||
|
virtual ~ShellStateStop() {}
|
||
|
|
||
|
};
|
||
|
|
||
|
class ShellStateConnecting : public ShellState {
|
||
|
public:
|
||
|
static ShellStateConnecting * getInstance(void) {
|
||
|
static ShellStateConnecting instance;
|
||
|
return &instance;
|
||
|
}
|
||
|
|
||
|
virtual void run(ShellContext *);
|
||
|
|
||
|
private:
|
||
|
ShellStateConnecting() {}
|
||
|
virtual ~ShellStateConnecting() {}
|
||
|
|
||
|
};
|
||
|
|
||
|
class ShellStateConnected : public ShellState {
|
||
|
public:
|
||
|
static ShellStateConnected * getInstance(void) {
|
||
|
static ShellStateConnected instance;
|
||
|
return &instance;
|
||
|
}
|
||
|
|
||
|
virtual void run(ShellContext *);
|
||
|
|
||
|
private:
|
||
|
ShellStateConnected() {}
|
||
|
virtual ~ShellStateConnected() {}
|
||
|
|
||
|
void unknownCmd();
|
||
|
void handleConError(ShellContext *);
|
||
|
void helpMsg();
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|