//
// Copyright © 2019 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
#pragma once

#include <string>

namespace armnn
{

namespace gatordmock
{

/// Use Boost program options to process the command line.
/// -h or --help to print the options.
/// -n or --namespace to specify the UDS namespace that the server will be listening on.
/// -e or --echo print all sent and received packets to stdout.
/// -f or --file The path to the file that contains instructions for the mock gatord.
class CommandLineProcessor
{
public:
    bool ProcessCommandLine(int argc, char* argv[]);
    bool IsEchoEnabled()
    {
        return m_Echo;
    }

    std::string GetUdsNamespace()
    {
        return m_UdsNamespace;
    }
    std::string GetCommandFile()
    {
        return m_File;
    }

private:
    std::string m_UdsNamespace;
    std::string m_File;

    bool m_Echo;
};

}    // namespace gatordmock

}    // namespace armnn
