mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
69 lines
1.3 KiB
C++
69 lines
1.3 KiB
C++
#include "network/manager.h"
|
|
#include "network/tcp.h"
|
|
#include "simulation.h"
|
|
|
|
network::manager::manager()
|
|
{
|
|
}
|
|
|
|
void network::manager::create_server()
|
|
{
|
|
server = std::make_shared<tcp_server>(io_context);
|
|
}
|
|
|
|
void network::manager::poll()
|
|
{
|
|
io_context.poll();
|
|
}
|
|
|
|
void network::manager::connect()
|
|
{
|
|
client = std::make_shared<tcp_client>(io_context);
|
|
}
|
|
|
|
std::tuple<double, double, command_queue::commands_map> network::manager::get_next_delta()
|
|
{
|
|
return client->get_next_delta();
|
|
}
|
|
|
|
void network::manager::push_delta(double delta, double sync, command_queue::commands_map commands)
|
|
{
|
|
server->push_delta(delta, sync, commands);
|
|
}
|
|
|
|
command_queue::commands_map network::manager::pop_commands()
|
|
{
|
|
return server->pop_commands();
|
|
}
|
|
|
|
void network::manager::send_commands(command_queue::commands_map commands)
|
|
{
|
|
client->send_commands(commands);
|
|
}
|
|
|
|
void network::manager::request_train(std::string name)
|
|
{
|
|
if (server) {
|
|
TTrain *train = simulation::Trains.find(name);
|
|
if (train)
|
|
return;
|
|
|
|
TDynamicObject *dynobj = simulation::Vehicles.find(name);
|
|
if (!dynobj)
|
|
return;
|
|
|
|
train = new TTrain();
|
|
if (train->Init(dynobj)) {
|
|
simulation::Trains.insert(train, name);
|
|
server->notify_train(name);
|
|
}
|
|
else {
|
|
delete train;
|
|
train = nullptr;
|
|
}
|
|
}
|
|
if (client) {
|
|
client->request_train(name);
|
|
}
|
|
}
|