Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05494a55 authored by Yifan Hong's avatar Yifan Hong
Browse files

lshal: table columns affected by arg order.

Test: lshal
Test: lshal -pita

Bug: 35389839
Change-Id: I845a13b8d7cdf483f4d269e5c33626f6013b42d7
parent 1bc1e9ff
Loading
Loading
Loading
Loading
+42 −32
Original line number Diff line number Diff line
@@ -213,30 +213,38 @@ void ListCommand::addLine(TextTable *textTable, const std::string &interfaceName
                          const std::string &serverCmdline, const std::string &address,
                          const std::string &clients, const std::string &clientCmdlines) const {
    std::vector<std::string> columns;
    if (mSelectedColumns & ENABLE_INTERFACE_NAME)
    for (TableColumnType type : mSelectedColumns) {
        switch (type) {
            case TableColumnType::INTERFACE_NAME: {
                columns.push_back(interfaceName);
    if (mSelectedColumns & ENABLE_TRANSPORT)
            } break;
            case TableColumnType::TRANSPORT: {
                columns.push_back(transport);
    if (mSelectedColumns & ENABLE_ARCH)
            } break;
            case TableColumnType::ARCH: {
                columns.push_back(arch);
    if (mSelectedColumns & ENABLE_THREADS) {
            } break;
            case TableColumnType::THREADS: {
                columns.push_back(threadUsage);
    }
    if (mSelectedColumns & ENABLE_SERVER_PID) {
            } break;
            case TableColumnType::SERVER_ADDR: {
                columns.push_back(address);
            } break;
            case TableColumnType::SERVER_PID: {
                if (mEnableCmdlines) {
                    columns.push_back(serverCmdline);
                } else {
                    columns.push_back(server);
                }
    }
    if (mSelectedColumns & ENABLE_SERVER_ADDR)
        columns.push_back(address);
    if (mSelectedColumns & ENABLE_CLIENT_PIDS) {
            } break;
            case TableColumnType::CLIENT_PIDS: {
                if (mEnableCmdlines) {
                    columns.push_back(clientCmdlines);
                } else {
                    columns.push_back(clients);
                }
            } break;
        }
    }
    textTable->add(std::move(columns));
}
@@ -720,31 +728,31 @@ Status ListCommand::parseArgs(const std::string &command, const Arg &arg) {
            mVintf = true;
        }
        case 'i': {
            mSelectedColumns |= ENABLE_INTERFACE_NAME;
            mSelectedColumns.push_back(TableColumnType::INTERFACE_NAME);
            break;
        }
        case 't': {
            mSelectedColumns |= ENABLE_TRANSPORT;
            mSelectedColumns.push_back(TableColumnType::TRANSPORT);
            break;
        }
        case 'r': {
            mSelectedColumns |= ENABLE_ARCH;
            mSelectedColumns.push_back(TableColumnType::ARCH);
            break;
        }
        case 'p': {
            mSelectedColumns |= ENABLE_SERVER_PID;
            mSelectedColumns.push_back(TableColumnType::SERVER_PID);
            break;
        }
        case 'a': {
            mSelectedColumns |= ENABLE_SERVER_ADDR;
            mSelectedColumns.push_back(TableColumnType::SERVER_ADDR);
            break;
        }
        case 'c': {
            mSelectedColumns |= ENABLE_CLIENT_PIDS;
            mSelectedColumns.push_back(TableColumnType::CLIENT_PIDS);
            break;
        }
        case 'e': {
            mSelectedColumns |= ENABLE_THREADS;
            mSelectedColumns.push_back(TableColumnType::THREADS);
            break;
        }
        case 'm': {
@@ -788,8 +796,9 @@ Status ListCommand::parseArgs(const std::string &command, const Arg &arg) {
        return USAGE;
    }

    if (mSelectedColumns == 0) {
        mSelectedColumns = ENABLE_INTERFACE_NAME | ENABLE_SERVER_PID | ENABLE_CLIENT_PIDS | ENABLE_THREADS;
    if (mSelectedColumns.empty()) {
        mSelectedColumns = {TableColumnType::INTERFACE_NAME, TableColumnType::THREADS,
                            TableColumnType::SERVER_PID, TableColumnType::CLIENT_PIDS};
    }
    return OK;
}
@@ -807,3 +816,4 @@ Status ListCommand::main(const std::string &command, const Arg &arg) {

}  // namespace lshal
}  // namespace android
+1 −1
Original line number Diff line number Diff line
@@ -82,7 +82,7 @@ private:
    NullableOStream<std::ostream> mOut;
    NullableOStream<std::ofstream> mFileOutput = nullptr;
    TableEntryCompare mSortColumn = nullptr;
    TableEntrySelect mSelectedColumns = 0;
    std::vector<TableColumnType> mSelectedColumns;
    // If true, cmdlines will be printed instead of pid.
    bool mEnableCmdlines = false;

+8 −10
Original line number Diff line number Diff line
@@ -84,18 +84,16 @@ struct Table {

using TableEntryCompare = std::function<bool(const TableEntry &, const TableEntry &)>;

enum : unsigned int {
    ENABLE_INTERFACE_NAME = 1 << 0,
    ENABLE_TRANSPORT      = 1 << 1,
    ENABLE_SERVER_PID     = 1 << 2,
    ENABLE_SERVER_ADDR    = 1 << 3,
    ENABLE_CLIENT_PIDS    = 1 << 4,
    ENABLE_ARCH           = 1 << 5,
    ENABLE_THREADS        = 1 << 6,
enum class TableColumnType : unsigned int {
    INTERFACE_NAME,
    TRANSPORT,
    SERVER_PID,
    SERVER_ADDR,
    CLIENT_PIDS,
    ARCH,
    THREADS,
};

using TableEntrySelect = unsigned int;

enum {
    NO_PID = -1,
    NO_PTR = 0