diff options
Diffstat (limited to 'dom/system/gonk/VolumeCommand.cpp')
-rw-r--r-- | dom/system/gonk/VolumeCommand.cpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/dom/system/gonk/VolumeCommand.cpp b/dom/system/gonk/VolumeCommand.cpp new file mode 100644 index 000000000..8095956a7 --- /dev/null +++ b/dom/system/gonk/VolumeCommand.cpp @@ -0,0 +1,85 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsString.h" +#include "nsWhitespaceTokenizer.h" + +#include "Volume.h" +#include "VolumeCommand.h" +#include "VolumeManager.h" +#include "VolumeManagerLog.h" + +namespace mozilla { +namespace system { + +/*************************************************************************** +* +* The VolumeActionCommand class is used to send commands which apply +* to a particular volume. +* +* The following commands would fit into this category: +* +* volume mount <volname> +* volume unmount <volname> [force] +* volume format <volname> +* volume share <volname> <method> +* volume unshare <volname> <method> +* volume shared <volname> <method> +* +* A typical response looks like: +* +* # vdc volume unshare sdcard ums +* 605 Volume sdcard /mnt/sdcard state changed from 7 (Shared-Unmounted) to 1 (Idle-Unmounted) +* 200 volume operation succeeded +* +* Note that the 600 series of responses are considered unsolicited and +* are dealt with directly by the VolumeManager. This command will only +* see the terminating response code (200 in the example above). +* +***************************************************************************/ + +VolumeActionCommand::VolumeActionCommand(Volume* aVolume, + const char* aAction, + const char* aExtraArgs, + VolumeResponseCallback* aCallback) + : VolumeCommand(aCallback), + mVolume(aVolume) +{ + nsAutoCString cmd; + + cmd = "volume "; + cmd += aAction; + cmd += " "; + cmd += aVolume->Name().get(); + + // vold doesn't like trailing white space, so only add it if we really need to. + if (aExtraArgs && (*aExtraArgs != '\0')) { + cmd += " "; + cmd += aExtraArgs; + } + SetCmd(cmd); +} + +/*************************************************************************** +* +* The VolumeListCommand class is used to send the "volume list" command to +* vold. +* +* A typical response looks like: +* +* # vdc volume list +* 110 sdcard /mnt/sdcard 4 +* 110 sdcard1 /mnt/sdcard/external_sd 4 +* 200 Volumes listed. +* +***************************************************************************/ + +VolumeListCommand::VolumeListCommand(VolumeResponseCallback* aCallback) + : VolumeCommand(NS_LITERAL_CSTRING("volume list"), aCallback) +{ +} + +} // system +} // mozilla + |