/**
 * OutputAnalyzer.hpp
 *
 *  Created on: Jan 22, 2019
 *      Author: vadims
 Abstract class, used to analyze ouput of the simulation software

 */

#pragma once

#include <queue>
#include "../misc/messagedata.hpp"
#include "../misc/messageQueue.hpp"
#include "nlohmann/json.hpp"

class OutputAnalyzer
{
public:
    OutputAnalyzer(MessageQueue_ messageQueue_);
    ~OutputAnalyzer();

    virtual messagedata Analyze(std::string) = 0;
    virtual messagedata AddToBuffer(char*) = 0;
    

protected:
    MessageQueue_ messageQueue;
    json regexJson;
    std::string bufferedString;
};

typedef std::shared_ptr<OutputAnalyzer> OutputAnalyzer_;
