diff --git a/CommandListener.cpp b/CommandListener.cpp index 0207245..f15d44a 100644 --- a/CommandListener.cpp +++ b/CommandListener.cpp @@ -45,6 +45,7 @@ CommandListener::CommandListener() : registerCmd(new FinalizeAsecCmd()); registerCmd(new DestroyAsecCmd()); registerCmd(new MountAsecCmd()); + registerCmd(new UnmountAsecCmd()); registerCmd(new ListAsecCmd()); registerCmd(new AsecPathCmd()); } @@ -254,6 +255,26 @@ int CommandListener::MountAsecCmd::runCommand(SocketClient *cli, return 0; } +CommandListener::UnmountAsecCmd::UnmountAsecCmd() : + VoldCommand("unmount_asec") { +} + +int CommandListener::UnmountAsecCmd::runCommand(SocketClient *cli, + int argc, char **argv) { + if (argc != 2) { + cli->sendMsg(ResponseCode::CommandSyntaxError, + "Usage: unmount_asec ", false); + return 0; + } + + if (VolumeManager::Instance()->unmountAsec(argv[1])) { + cli->sendMsg(ResponseCode::OperationFailed, "Unmount failed", true); + } else { + cli->sendMsg(ResponseCode::CommandOkay, "Unmount succeeded", false); + } + return 0; +} + CommandListener::ListAsecCmd::ListAsecCmd() : VoldCommand("list_asec") { diff --git a/CommandListener.h b/CommandListener.h index cc078da..64ff31f 100644 --- a/CommandListener.h +++ b/CommandListener.h @@ -111,6 +111,13 @@ private: int runCommand(SocketClient *c, int argc, char ** argv); }; + class UnmountAsecCmd : public VoldCommand { + public: + UnmountAsecCmd(); + virtual ~UnmountAsecCmd() {} + int runCommand(SocketClient *c, int argc, char ** argv); + }; + class ListAsecCmd : public VoldCommand { public: ListAsecCmd();