Repository navigation
Expand file tree
/
Copy pathcmd_quit.cpp
More file actions
63 lines (55 loc) · 2.4 KB
/
Copy pathcmd_quit.cpp
File metadata and controls
63 lines (55 loc) · 2.4 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
+----------------------------------------------------------------------+
| HipHop for PHP |
+----------------------------------------------------------------------+
| Copyright (c) 2010-2013 Facebook, Inc. (http://www.facebook.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
*/
#include "hphp/runtime/debugger/cmd/cmd_quit.h"
namespace HPHP { namespace Eval {
///////////////////////////////////////////////////////////////////////////////
TRACE_SET_MOD(debugger);
// The text to display when the debugger client processes "help quit".
void CmdQuit::help(DebuggerClient &client) {
TRACE(2, "CmdQuit::help\n");
client.helpTitle("Quit Command");
client.helpCmds(
"[q]uit", "quits this program",
nullptr
);
client.helpBody(
"After you type this command, you will not see me anymore."
);
}
// Carries out the Quit command by informing the server the client
// is going away and then getting the client to quit.
void CmdQuit::onClient(DebuggerClient &client) {
TRACE(2, "CmdQuit::onClient\n");
if (DebuggerCommand::displayedHelp(client)) return;
if (client.argCount() == 0) {
client.xend<CmdQuit>(this); // Wait for server ack before closing pipe.
client.quit();
} else {
help(client);
}
}
// Sends an acknowledgment back to the client so that
// it can go ahead and terminate. It it were to do so
// before the server has received the command, the pipe
// will be closed and the proxy will carry on as if there
// were a communication failure, which is not as clean
// explicitly quitting.
bool CmdQuit::onServer(DebuggerProxy &proxy) {
TRACE(2, "CmdQuit::onServer\n");
return proxy.sendToClient(this);
}
///////////////////////////////////////////////////////////////////////////////
}}