10175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn/*
20175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn * Copyright (C) 2012-2014 The Android Open Source Project
30175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn *
40175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn * Licensed under the Apache License, Version 2.0 (the "License");
50175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn * you may not use this file except in compliance with the License.
60175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn * You may obtain a copy of the License at
70175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn *
80175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn *      http://www.apache.org/licenses/LICENSE-2.0
90175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn *
100175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn * Unless required by applicable law or agreed to in writing, software
110175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn * distributed under the License is distributed on an "AS IS" BASIS,
120175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn * See the License for the specific language governing permissions and
140175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn * limitations under the License.
150175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn */
160175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn
170175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn#ifndef _COMMANDLISTENER_H__
180175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn#define _COMMANDLISTENER_H__
190175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn
200175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn#include <sysutils/FrameworkListener.h>
210175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn#include "LogCommand.h"
220175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn#include "LogBuffer.h"
230175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn#include "LogReader.h"
240175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn#include "LogListener.h"
250175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn
260175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzynclass CommandListener : public FrameworkListener {
270175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    LogBuffer &mBuf;
280175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn
290175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzynpublic:
300175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    CommandListener(LogBuffer *buf, LogReader *reader, LogListener *swl);
310175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    virtual ~CommandListener() {}
320175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn
330175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzynprivate:
34dfc47e86858ea67c72f1df2fdb97094b8e8248f2Mark Salyzyn    static int getLogSocket();
35dfc47e86858ea67c72f1df2fdb97094b8e8248f2Mark Salyzyn
360175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    class ShutdownCmd : public LogCommand {
370175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn        LogBuffer &mBuf;
380175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn        LogReader &mReader;
390175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn        LogListener &mSwl;
400175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn
410175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    public:
420175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn        ShutdownCmd(LogBuffer *buf, LogReader *reader, LogListener *swl);
430175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn        virtual ~ShutdownCmd() {}
440175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn        int runCommand(SocketClient *c, int argc, char ** argv);
450175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    };
460175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn
470175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn#define LogBufferCmd(name)                                       \
480175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    class name##Cmd : public LogCommand {                        \
490175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn        LogBuffer &mBuf;                                         \
500175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    public:                                                      \
510175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn        name##Cmd(LogBuffer *buf);                               \
520175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn        virtual ~name##Cmd() {}                                  \
530175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn        int runCommand(SocketClient *c, int argc, char ** argv); \
540175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    };
550175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn
560175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    LogBufferCmd(Clear)
570175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    LogBufferCmd(GetBufSize)
58dfa7a07f5be656cfafdb4e75916bc9dcd9e592e7Mark Salyzyn    LogBufferCmd(SetBufSize)
590175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn    LogBufferCmd(GetBufSizeUsed)
6034facab86b0fe7ec613de92b46b637f864fb0682Mark Salyzyn    LogBufferCmd(GetStatistics)
61dfa7a07f5be656cfafdb4e75916bc9dcd9e592e7Mark Salyzyn    LogBufferCmd(GetPruneList)
62dfa7a07f5be656cfafdb4e75916bc9dcd9e592e7Mark Salyzyn    LogBufferCmd(SetPruneList)
630175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn};
640175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn
650175b0747a1f55329109e84c9a1322dcb95e2848Mark Salyzyn#endif
66