#include "dispatchers.h"

#include "logging.h"

Dispatch::Dispatch(Director &dir) : d{dir} {};

// virtuals
/*
void Dispatch::server_line(const std::string &line){};
void Dispatch::server_prompt(const std::string &prompt){};
void Dispatch::client_input(const std::string &input){};
*/

void Dispatch::to_server(const std::string &send) { d.to_server(send); }
void Dispatch::to_client(const std::string &send) { d.to_client(send); }
const std::string &Dispatch::get_prompt(void) { return d.get_prompt(); }

CoreDispatch::CoreDispatch(Director &d) : Dispatch{d} {
    d.set_server_line( [this](const std::string &s){ server_line(s); } );
    d.set_server_prompt( [this](const std::string &s){ server_prompt(s); } );
    d.set_client_input( [this](const std::string &s){ client_input(s); } );
}

void CoreDispatch::server_line(const std::string &line) {}
void CoreDispatch::server_prompt(const std::string &prompt) {}
void CoreDispatch::client_input(const std::string &input) {
    BUGZ_LOG(warning) << "Got: " << input << " prompt=" << get_prompt();
}