Browse Source

More header fixes

pull/31/head
Xadhoom 7 years ago
parent
commit
5407370e71
  1. 2
      SourceX/dvlnet/abstract_net.h
  2. 38
      SourceX/dvlnet/base.cpp
  3. 2
      SourceX/dvlnet/base.h
  4. 4
      SourceX/dvlnet/frame_queue.cpp
  5. 7
      SourceX/dvlnet/packet.cpp
  6. 9
      SourceX/dvlnet/tcp_client.cpp
  7. 76
      SourceX/dvlnet/tcp_server.cpp
  8. 4
      SourceX/dvlnet/udp_p2p.cpp

2
SourceX/dvlnet/abstract_net.h

@ -2,6 +2,8 @@
#include <vector>
#include <memory>
#include <string>
#include <exception>
#include "devilution.h"

38
SourceX/dvlnet/base.cpp

@ -18,7 +18,7 @@ void base::setup_password(std::string pw)
void base::run_event_handler(_SNETEVENT& ev)
{
auto f = registered_handlers[static_cast<event_type>(ev.eventid)];
if(f) {
if (f) {
f(&ev);
}
}
@ -56,7 +56,7 @@ void base::clear_msg(plr_t plr)
void base::recv_local(packet& pkt)
{
if(pkt.src() < MAX_PLRS) {
if (pkt.src() < MAX_PLRS) {
connected_table[pkt.src()] = true;
}
switch (pkt.type()) {
@ -74,7 +74,7 @@ void base::recv_local(packet& pkt)
break;
case PT_DISCONNECT:
if (pkt.newplr() != plr_self) {
if(connected_table[pkt.newplr()]) {
if (connected_table[pkt.newplr()]) {
auto leaveinfo = pkt.leaveinfo();
_SNETEVENT ev;
ev.eventid = EVENT_TYPE_PLAYER_LEAVE_GAME;
@ -123,7 +123,7 @@ bool base::SNetSendMessage(int playerID, void* data, unsigned int size)
dest = PLR_BROADCAST;
else
dest = playerID;
if(dest != plr_self) {
if (dest != plr_self) {
auto pkt = pktfty->make_packet<PT_MESSAGE>(plr_self, dest, message);
send(*pkt);
}
@ -134,17 +134,17 @@ bool base::SNetReceiveTurns(char** data, unsigned int* size, DWORD* status)
{
poll();
bool all_turns_arrived = true;
for(auto i = 0; i < MAX_PLRS; ++i) {
for (auto i = 0; i < MAX_PLRS; ++i) {
status[i] = 0;
if(connected_table[i]) {
if (connected_table[i]) {
status[i] |= PS_CONNECTED;
if(turn_queue[i].empty())
if (turn_queue[i].empty())
all_turns_arrived = false;
}
}
if(all_turns_arrived) {
if (all_turns_arrived) {
for (auto i = 0; i < MAX_PLRS; ++i) {
if(connected_table[i]) {
if (connected_table[i]) {
size[i] = sizeof(turn_t);
status[i] |= PS_ACTIVE;
status[i] |= PS_TURN_ARRIVED;
@ -156,8 +156,8 @@ bool base::SNetReceiveTurns(char** data, unsigned int* size, DWORD* status)
return true;
} else {
for (auto i = 0; i < MAX_PLRS; ++i) {
if(connected_table[i]) {
if(!turn_queue[i].empty()) {
if (connected_table[i]) {
if (!turn_queue[i].empty()) {
status[i] |= PS_ACTIVE;
}
}
@ -202,12 +202,12 @@ void* base::SNetUnregisterEventHandler(event_type evtype, snet_event_func func)
void* base::SNetRegisterEventHandler(event_type evtype, snet_event_func func)
{
/*
engine registers handler for:
EVENT_TYPE_PLAYER_LEAVE_GAME
EVENT_TYPE_PLAYER_CREATE_GAME (should be raised during SNetCreateGame
for non-creating player)
EVENT_TYPE_PLAYER_MESSAGE (for bnet? not implemented)
(engine uses same function for all three)
engine registers handler for:
EVENT_TYPE_PLAYER_LEAVE_GAME
EVENT_TYPE_PLAYER_CREATE_GAME (should be raised during SNetCreateGame
for non-creating player)
EVENT_TYPE_PLAYER_MESSAGE (for bnet? not implemented)
(engine uses same function for all three)
*/
registered_handlers[evtype] = func;
return (void*)func;
@ -234,8 +234,8 @@ bool base::SNetDropPlayer(int playerid, DWORD flags)
plr_t base::get_owner()
{
for(auto i = 0; i < MAX_PLRS; ++i) {
if(connected_table[i]) {
for (auto i = 0; i < MAX_PLRS; ++i) {
if (connected_table[i]) {
return i;
}
}

2
SourceX/dvlnet/base.h

@ -51,7 +51,7 @@ namespace dvlnet {
int sender; // change int to something else in devilution code later
buffer_t payload;
message_t() : sender(-1), payload({}) {}
message_t(int s, buffer_t p) : sender(s), payload(p) {}
message_t(int s, buffer_t p) : sender(s), payload(p) {}
};
message_t message_last;

4
SourceX/dvlnet/frame_queue.cpp

@ -14,7 +14,7 @@ buffer_t frame_queue::read(size_t s)
if(current_size < s)
throw frame_queue_exception();
buffer_t ret;
while(s > 0 && s >= buffer_deque.front().size()) {
while (s > 0 && s >= buffer_deque.front().size()) {
s -= buffer_deque.front().size();
current_size -= buffer_deque.front().size();
ret.insert(ret.end(),
@ -50,7 +50,7 @@ bool frame_queue::packet_ready()
throw frame_queue_exception();
}
if(size() >= nextsize)
return true;
return true;
else
return false;
}

7
SourceX/dvlnet/packet.cpp

@ -102,8 +102,9 @@ void packet_in::decrypt()
if (have_decrypted)
return;
if (!disable_encryption) {
if (encrypted_buffer.size() < crypto_secretbox_NONCEBYTES +
crypto_secretbox_MACBYTES + sizeof(packet_type) + 2 * sizeof(plr_t))
if (encrypted_buffer.size() < crypto_secretbox_NONCEBYTES
+ crypto_secretbox_MACBYTES
+ sizeof(packet_type) + 2*sizeof(plr_t))
throw packet_exception();
auto pktlen = (encrypted_buffer.size()
- crypto_secretbox_NONCEBYTES
@ -118,7 +119,7 @@ void packet_in::decrypt()
key.data()))
throw packet_exception();
} else {
if (encrypted_buffer.size() < sizeof(packet_type) + 2 * sizeof(plr_t))
if (encrypted_buffer.size() < sizeof(packet_type) + 2*sizeof(plr_t))
throw packet_exception();
decrypted_buffer = encrypted_buffer;
}

9
SourceX/dvlnet/tcp_client.cpp

@ -2,7 +2,10 @@
#include <functional>
#include <thread>
#include <chrono>
#include <exception>
#include <system_error>
#include <stdexcept>
#include <sodium.h>
using namespace dvlnet;
@ -61,19 +64,19 @@ void tcp_client::poll()
void tcp_client::handle_recv(const asio::error_code& error, size_t bytes_read)
{
if(error) {
if (error) {
// error in recv from server
// returning and doing nothing should be the same
// as if all connections to other clients were lost
return;
}
if(bytes_read == 0) {
if (bytes_read == 0) {
throw std::runtime_error("error: read 0 bytes from server");
}
recv_buffer.resize(bytes_read);
recv_queue.write(std::move(recv_buffer));
recv_buffer.resize(frame_queue::max_frame_size);
while(recv_queue.packet_ready()) {
while (recv_queue.packet_ready()) {
auto pkt = pktfty->make_packet(recv_queue.read_packet());
recv_local(*pkt);
}

76
SourceX/dvlnet/tcp_server.cpp

@ -1,5 +1,7 @@
#include "dvlnet/tcp_server.h"
#include <functional>
#include <chrono>
#include "dvlnet/base.h"
@ -18,10 +20,10 @@ tcp_server::tcp_server(asio::io_context& ioc, std::string bindaddr,
std::string tcp_server::localhost_self()
{
auto addr = acceptor->local_endpoint().address();
if(addr.is_unspecified()) {
if(addr.is_v4()) {
if (addr.is_unspecified()) {
if (addr.is_v4()) {
return asio::ip::address_v4::loopback().to_string();
} else if(addr.is_v6()) {
} else if (addr.is_v6()) {
return asio::ip::address_v6::loopback().to_string();
} else {
ABORT();
@ -38,16 +40,16 @@ tcp_server::scc tcp_server::make_connection()
plr_t tcp_server::next_free()
{
for(plr_t i = 0; i < MAX_PLRS; ++i)
if(!connections[i])
for (plr_t i = 0; i < MAX_PLRS; ++i)
if (!connections[i])
return i;
return PLR_BROADCAST;
}
bool tcp_server::empty()
{
for(plr_t i = 0; i < MAX_PLRS; ++i)
if(connections[i])
for (plr_t i = 0; i < MAX_PLRS; ++i)
if (connections[i])
return false;
return true;
}
@ -63,28 +65,28 @@ void tcp_server::start_recv(scc con)
void tcp_server::handle_recv(scc con, const asio::error_code& ec,
size_t bytes_read)
{
if(ec || bytes_read == 0) {
if (ec || bytes_read == 0) {
drop_connection(con);
return;
}
con->recv_buffer.resize(bytes_read);
con->recv_queue.write(std::move(con->recv_buffer));
con->recv_buffer.resize(frame_queue::max_frame_size);
while(con->recv_queue.packet_ready()) {
try {
auto pkt = pktfty.make_packet(con->recv_queue.read_packet());
if(con->plr == PLR_BROADCAST) {
handle_recv_newplr(con, *pkt);
} else {
con->timeout = timeout_active;
handle_recv_packet(*pkt);
}
} catch (dvlnet_exception e) {
drop_connection(con);
return;
}
}
start_recv(con);
con->recv_buffer.resize(frame_queue::max_frame_size);
while (con->recv_queue.packet_ready()) {
try {
auto pkt = pktfty.make_packet(con->recv_queue.read_packet());
if (con->plr == PLR_BROADCAST) {
handle_recv_newplr(con, *pkt);
} else {
con->timeout = timeout_active;
handle_recv_packet(*pkt);
}
} catch (dvlnet_exception e) {
drop_connection(con);
return;
}
}
start_recv(con);
}
void tcp_server::send_connect(scc con)
@ -97,9 +99,9 @@ void tcp_server::send_connect(scc con)
void tcp_server::handle_recv_newplr(scc con, packet& pkt)
{
auto newplr = next_free();
if(newplr == PLR_BROADCAST)
if (newplr == PLR_BROADCAST)
throw server_exception();
if(empty())
if (empty())
game_init_info = pkt.info();
auto reply = pktfty.make_packet<PT_JOIN_ACCEPT>(PLR_MASTER, PLR_BROADCAST,
pkt.cookie(), newplr,
@ -118,14 +120,14 @@ void tcp_server::handle_recv_packet(packet& pkt)
void tcp_server::send_packet(packet& pkt)
{
if(pkt.dest() == PLR_BROADCAST) {
for(auto i = 0; i < MAX_PLRS; ++i)
if(i != pkt.src() && connections[i])
if (pkt.dest() == PLR_BROADCAST) {
for (auto i = 0; i < MAX_PLRS; ++i)
if (i != pkt.src() && connections[i])
start_send(connections[i], pkt);
} else {
if(pkt.dest() >= MAX_PLRS)
if (pkt.dest() >= MAX_PLRS)
throw server_exception();
if((pkt.dest() != pkt.src()) && connections[pkt.dest()])
if ((pkt.dest() != pkt.src()) && connections[pkt.dest()])
start_send(connections[pkt.dest()], pkt);
}
}
@ -156,7 +158,7 @@ void tcp_server::start_accept()
void tcp_server::handle_accept(scc con, const asio::error_code& ec)
{
if(next_free() == PLR_BROADCAST) {
if (next_free() == PLR_BROADCAST) {
drop_connection(con);
} else {
asio::ip::tcp::no_delay option(true);
@ -177,15 +179,15 @@ void tcp_server::start_timeout(scc con)
void tcp_server::handle_timeout(scc con, const asio::error_code& ec)
{
if(ec) {
if (ec) {
drop_connection(con);
return;
}
if(con->timeout > 0)
if (con->timeout > 0)
con->timeout -= 1;
if(con->timeout < 0)
if (con->timeout < 0)
con->timeout = 0;
if(!con->timeout) {
if (!con->timeout) {
drop_connection(con);
return;
}
@ -194,7 +196,7 @@ void tcp_server::handle_timeout(scc con, const asio::error_code& ec)
void tcp_server::drop_connection(scc con)
{
if(con->plr != PLR_BROADCAST) {
if (con->plr != PLR_BROADCAST) {
auto pkt = pktfty.make_packet<PT_DISCONNECT>(PLR_MASTER, PLR_BROADCAST,
con->plr, LEAVE_DROP);
connections[con->plr] = nullptr;

4
SourceX/dvlnet/udp_p2p.cpp

@ -16,7 +16,7 @@ int udp_p2p::create(std::string addrstr, std::string passwd)
sock.non_blocking(true);
unsigned short port = default_port;
/*
while(port <= default_port+try_ports) {
while (port <= default_port+try_ports) {
try {
sock.bind(asio::ip::udp::endpoint(asio::ip::address_v6(), port));
} catch (std::exception e) {
@ -50,7 +50,7 @@ int udp_p2p::join(std::string addrstr, std::string passwd)
master = themaster;
{ // hack: try to join for 5 seconds
randombytes_buf(reinterpret_cast<unsigned char *>(&cookie_self),
sizeof(cookie_t));
sizeof(cookie_t));
auto pkt = pktfty->make_packet<PT_JOIN_REQUEST>(PLR_BROADCAST,
PLR_MASTER, cookie_self,
game_init_info);

Loading…
Cancel
Save