1f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat/*
2f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat * Copyright (C) 2008 The Android Open Source Project
3f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat *
4f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat * Licensed under the Apache License, Version 2.0 (the "License");
5f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat * you may not use this file except in compliance with the License.
6f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat * You may obtain a copy of the License at
7f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat *
8f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat *      http://www.apache.org/licenses/LICENSE-2.0
9f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat *
10f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat * Unless required by applicable law or agreed to in writing, software
11f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat * distributed under the License is distributed on an "AS IS" BASIS,
12f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat * See the License for the specific language governing permissions and
14f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat * limitations under the License.
15f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat */
16f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat
17f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat#ifndef _COMMANDLISTENER_H__
18f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat#define _COMMANDLISTENER_H__
19f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat
20f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat#include <sysutils/FrameworkListener.h>
2136801cccf27152c9eca5aab6ba3527221525110fJeff Sharkey#include <utils/Errors.h>
22f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat#include "VoldCommand.h"
23f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat
24f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehatclass CommandListener : public FrameworkListener {
25f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehatpublic:
26f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat    CommandListener();
27f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat    virtual ~CommandListener() {}
28f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat
29f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehatprivate:
30d9a4e358614a0c5f60cc76c0636ee4bb02004a32San Mehat    static void dumpArgs(int argc, char **argv, int argObscure);
3136801cccf27152c9eca5aab6ba3527221525110fJeff Sharkey    static int sendGenericOkFail(SocketClient *cli, int cond);
32d9a4e358614a0c5f60cc76c0636ee4bb02004a32San Mehat
33d9a4e358614a0c5f60cc76c0636ee4bb02004a32San Mehat    class DumpCmd : public VoldCommand {
34d9a4e358614a0c5f60cc76c0636ee4bb02004a32San Mehat    public:
35d9a4e358614a0c5f60cc76c0636ee4bb02004a32San Mehat        DumpCmd();
36d9a4e358614a0c5f60cc76c0636ee4bb02004a32San Mehat        virtual ~DumpCmd() {}
37d9a4e358614a0c5f60cc76c0636ee4bb02004a32San Mehat        int runCommand(SocketClient *c, int argc, char ** argv);
38d9a4e358614a0c5f60cc76c0636ee4bb02004a32San Mehat    };
39f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat
40eba65e9d438a05f1c5dfd0f8d31bc463a5d08eeeSan Mehat    class VolumeCmd : public VoldCommand {
41f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat    public:
42eba65e9d438a05f1c5dfd0f8d31bc463a5d08eeeSan Mehat        VolumeCmd();
43eba65e9d438a05f1c5dfd0f8d31bc463a5d08eeeSan Mehat        virtual ~VolumeCmd() {}
44f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat        int runCommand(SocketClient *c, int argc, char ** argv);
45f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat    };
46f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat
47eba65e9d438a05f1c5dfd0f8d31bc463a5d08eeeSan Mehat    class AsecCmd : public VoldCommand {
48a19b250bd273455933ca3502cf2c2e0a803aff77San Mehat    public:
49eba65e9d438a05f1c5dfd0f8d31bc463a5d08eeeSan Mehat        AsecCmd();
50eba65e9d438a05f1c5dfd0f8d31bc463a5d08eeeSan Mehat        virtual ~AsecCmd() {}
51a19b250bd273455933ca3502cf2c2e0a803aff77San Mehat        int runCommand(SocketClient *c, int argc, char ** argv);
52344ca10856f3d3087a3288ce8f91ad83665d93fbKenny Root    private:
53344ca10856f3d3087a3288ce8f91ad83665d93fbKenny Root        void listAsecsInDirectory(SocketClient *c, const char *directory);
54a19b250bd273455933ca3502cf2c2e0a803aff77San Mehat    };
55a19b250bd273455933ca3502cf2c2e0a803aff77San Mehat
56508c0e1605b795bbb51cb47d955b89f3df26ca94Kenny Root    class ObbCmd : public VoldCommand {
57fb7c4d5a8a1031cf0e493ff182dcf458e5fe8c77Kenny Root    public:
58508c0e1605b795bbb51cb47d955b89f3df26ca94Kenny Root        ObbCmd();
59508c0e1605b795bbb51cb47d955b89f3df26ca94Kenny Root        virtual ~ObbCmd() {}
60fb7c4d5a8a1031cf0e493ff182dcf458e5fe8c77Kenny Root        int runCommand(SocketClient *c, int argc, char ** argv);
61fb7c4d5a8a1031cf0e493ff182dcf458e5fe8c77Kenny Root    };
62fb7c4d5a8a1031cf0e493ff182dcf458e5fe8c77Kenny Root
63586536c60b773e3517531ad8a6cb0de6722c67fcSan Mehat    class StorageCmd : public VoldCommand {
64586536c60b773e3517531ad8a6cb0de6722c67fcSan Mehat    public:
65586536c60b773e3517531ad8a6cb0de6722c67fcSan Mehat        StorageCmd();
66586536c60b773e3517531ad8a6cb0de6722c67fcSan Mehat        virtual ~StorageCmd() {}
67586536c60b773e3517531ad8a6cb0de6722c67fcSan Mehat        int runCommand(SocketClient *c, int argc, char ** argv);
68586536c60b773e3517531ad8a6cb0de6722c67fcSan Mehat    };
692350c44ff39b4cb2940893964a05f778fc80a436San Mehat
70b87937cdea689594a293979b30b13054e7455deeKen Sumrall    class FstrimCmd : public VoldCommand {
71b87937cdea689594a293979b30b13054e7455deeKen Sumrall    public:
72b87937cdea689594a293979b30b13054e7455deeKen Sumrall        FstrimCmd();
73b87937cdea689594a293979b30b13054e7455deeKen Sumrall        virtual ~FstrimCmd() {}
74b87937cdea689594a293979b30b13054e7455deeKen Sumrall        int runCommand(SocketClient *c, int argc, char ** argv);
75b87937cdea689594a293979b30b13054e7455deeKen Sumrall    };
768575a350ff725842f076500eab161b39e8720938Daichi Hirono
778575a350ff725842f076500eab161b39e8720938Daichi Hirono    class AppFuseCmd : public VoldCommand {
788575a350ff725842f076500eab161b39e8720938Daichi Hirono    public:
798575a350ff725842f076500eab161b39e8720938Daichi Hirono        AppFuseCmd();
808575a350ff725842f076500eab161b39e8720938Daichi Hirono        virtual ~AppFuseCmd() {}
818575a350ff725842f076500eab161b39e8720938Daichi Hirono        int runCommand(SocketClient *c, int argc, char ** argv);
828575a350ff725842f076500eab161b39e8720938Daichi Hirono    private:
8310d34887b3e00e603604e0301487f9b8222c66f4Daichi Hirono        android::status_t sendFd(SocketClient *c, int fd);
848575a350ff725842f076500eab161b39e8720938Daichi Hirono    };
85f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat};
86f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat
87f1b736bc5605e92e917ab27f5abf3ba839be2270San Mehat#endif
88