wip
This commit is contained in:
1 parent
a447fed9cb
commit
db6bf2f062
4 files changed
+71
-16
No files matched your search
+49
-4
@@ -1,11 +1,19 @@
|
||||
#include "Server.hpp"
|
||||
#include <fstream>
|
||||
//Testing:
|
||||
#include "Message.hpp"
|
||||
#include <fstream>
|
||||
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <ctime>
|
||||
|
||||
|
||||
namespace Plains {
|
||||
namespace Resolver {
|
||||
|
||||
using asio::ip::udp;
|
||||
|
||||
static char* byteToHex(char c) {
|
||||
static char* out = new char[3];
|
||||
out[2] = 0x0; //Terminate string
|
||||
@@ -31,7 +39,10 @@ static char* intToHex(unsigned byteCount, int c) {
|
||||
return out;
|
||||
}
|
||||
|
||||
Server::Server(Logger& logger, EventBus& eventBus) : logger(logger), eventBus(eventBus) {
|
||||
Server::Server(Logger& logger, EventBus& eventBus)
|
||||
: logger(logger),
|
||||
eventBus(eventBus)
|
||||
{
|
||||
logger.debug << "Testing some stuff..." << Logger::commit;
|
||||
logger.debug << "Message header overall size: " << sizeof(Message::Header) << Logger::commit;
|
||||
// logger.debug << "Message::Header size:" << sizeof(Message::Header) << endl;
|
||||
@@ -62,14 +73,48 @@ Server::Server(Logger& logger, EventBus& eventBus) : logger(logger), eventBus(ev
|
||||
"Answer Record Count: " << intToHex(2, header->anCount) << Logger::commit <<
|
||||
"Authority Record Count: " << intToHex(2, header->nsCount) << Logger::commit <<
|
||||
"Additional Record Count: " << intToHex(2, header->arCount) << Logger::commit;
|
||||
|
||||
myfile.close();
|
||||
//Testing over
|
||||
|
||||
socket_ = new udp::socket(io_context, udp::endpoint(udp::v4(), 8853));
|
||||
}
|
||||
|
||||
Server::~Server() {
|
||||
|
||||
}
|
||||
|
||||
void Server::run() {
|
||||
io_context.run();
|
||||
do_receive();
|
||||
}
|
||||
|
||||
void Server::do_receive()
|
||||
{
|
||||
socket_->async_receive_from(
|
||||
asio::buffer(data_, 1024), sender_endpoint_,
|
||||
[this](std::error_code ec, std::size_t bytes_recvd)
|
||||
{
|
||||
if (!ec && bytes_recvd > 0)
|
||||
{
|
||||
do_send(bytes_recvd);
|
||||
}
|
||||
else
|
||||
{
|
||||
do_receive();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void Server::do_send(std::size_t length)
|
||||
{
|
||||
socket_->async_send_to(
|
||||
asio::buffer(data_, length), sender_endpoint_,
|
||||
[this](std::error_code /*ec*/, std::size_t /*bytes_sent*/)
|
||||
{
|
||||
do_receive();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
}}
|
||||
Reference in new issue
Block a user