Little corrections

main
anulax1225 ago%!(EXTRA string=2 months)
parent 856273e78f
commit 0f5e3e6d77
  1. 2
      src/bakanet/core/socket.h
  2. 10
      src/bakanet/http/server.cpp
  3. 32
      src/platform/linux/linux_socket.cpp
  4. 4
      src/platform/linux/linux_socket.h
  5. 7
      src/platform/windows/windows_socket.cpp

@ -18,8 +18,6 @@ namespace Bk::Net {
virtual bool start(int cpt_conn) = 0;
virtual Socket* ack() = 0;
virtual bool conn() = 0;
virtual bool hasConnection(int seconds = 0, int microseconds = 0) = 0;
virtual int get_raw_socket() = 0;
virtual const std::string get_ip() = 0;

@ -23,8 +23,8 @@ namespace Bk::Net {
route_request(conn, recv_request(conn));
delete conn;
});
pool.stop();
}
pool.stop();
}
void HttpServer::get(std::string url, RequestHandler req_handler)
@ -32,7 +32,7 @@ namespace Bk::Net {
RadixTree* tree;
Tools::string_trim(url, " /");
auto splits = Tools::string_split(url, "/");
if (tree = radix.get_node(splits->data(), splits->size())) tree->value["GET"] = req_handler;
if ((tree = radix.get_node(splits->data(), splits->size()))) tree->value["GET"] = req_handler;
else radix.add_nodes(splits->data(), splits->size(), HttpMethodArray({{ "GET", req_handler }}));
}
@ -41,7 +41,7 @@ namespace Bk::Net {
RadixTree* tree;
Tools::string_trim(url, " /");
auto splits = Tools::string_split(url, "/");
if (tree = radix.get_node(splits->data(), splits->size())) tree->value["POST"] = req_handler;
if ((tree = radix.get_node(splits->data(), splits->size()))) tree->value["POST"] = req_handler;
else radix.add_nodes(splits->data(), splits->size(), HttpMethodArray({{ "POST", req_handler }}));
}
@ -50,7 +50,7 @@ namespace Bk::Net {
RadixTree* tree;
Tools::string_trim(url, " /");
auto splits = Tools::string_split(url, "/");
if (tree = radix.get_node(splits->data(), splits->size())) tree->value["DELETE"] = req_handler;
if ((tree = radix.get_node(splits->data(), splits->size()))) tree->value["DELETE"] = req_handler;
else radix.add_nodes(splits->data(), splits->size(), HttpMethodArray({{ "DELETE", req_handler }}));
}
@ -59,7 +59,7 @@ namespace Bk::Net {
RadixTree* tree;
Tools::string_trim(url, " /");
auto splits = Tools::string_split(url, "/");
if (tree = radix.get_node(splits->data(), splits->size())) tree->value["PUT"] = req_handler;
if ((tree = radix.get_node(splits->data(), splits->size()))) tree->value["PUT"] = req_handler;
else radix.add_nodes(splits->data(), splits->size(), HttpMethodArray({{ "PUT", req_handler }}));
}

@ -1,14 +1,14 @@
#include "linux_socket.h"
#include <netinet/in.h>
#include <sys/socket.h>
namespace Bk::Net {
LinuxSocket::LinuxSocket(int id, IpVersion ver, IpProtocol proto)
: id(id), ip_proto(proto)
LinuxSocket::LinuxSocket(int id, struct sockaddr_in client_addr, IpVersion ver, IpProtocol proto)
: id(id), ip_proto(proto), addr(client_addr)
{
char myIP[16] = " ";
socklen_t len = sizeof(addr);
getsockname(id, (struct sockaddr*)&addr, &len);
inet_ntop((int)ver, &addr, myIP, sizeof(myIP));
ip_addr = IpAddress(std::string(myIP, 16), ver);
char* myIP = inet_ntoa(addr.sin_addr);
ip_addr = IpAddress(std::string(myIP), ver);
}
LinuxSocket::LinuxSocket(IpAddress ip, int port, IpProtocol proto)
@ -55,8 +55,9 @@ namespace Bk::Net {
Socket* LinuxSocket::ack()
{
socklen_t addrlen = sizeof(addr);
return new LinuxSocket(accept(id, (struct sockaddr*)&addr, &addrlen), ip_addr.version, ip_proto);
struct sockaddr_in client_addr;
socklen_t addrlen = sizeof(client_addr);
return new LinuxSocket(accept(id, (struct sockaddr*)&client_addr, &addrlen), client_addr, ip_addr.version, ip_proto);
}
bool LinuxSocket::conn()
@ -69,14 +70,6 @@ namespace Bk::Net {
return true;
}
bool LinuxSocket::hasConnection(int seconds, int microseconds) {
struct timeval tv = { seconds, microseconds };
fd_set rfds;
FD_ZERO(&rfds);
FD_SET(id, &rfds);
return select(id + 1, &rfds, (fd_set*)0, (fd_set*)0, &tv) > 0;
};
void LinuxSocket::emit(std::vector<char> packet)
{
write(id, packet.data(), packet.size());
@ -95,9 +88,4 @@ namespace Bk::Net {
{
return new LinuxSocket(ip, port, proto);
}
Socket* Socket::create(int id, IpVersion ver, IpProtocol proto)
{
return new LinuxSocket(id, ver, proto);
}
}

@ -8,7 +8,7 @@ namespace Bk::Net {
{
public:
LinuxSocket(IpAddress ip, int port, IpProtocol proto);
LinuxSocket(int id, IpVersion ver, IpProtocol proto);
LinuxSocket(int id, struct sockaddr_in client_addr, IpVersion ver, IpProtocol proto);
virtual ~LinuxSocket();
bool init() override;
@ -16,8 +16,6 @@ namespace Bk::Net {
Socket* ack() override;
bool conn() override;
bool hasConnection(int seconds = 0, int microseconds = 0) override;
int get_raw_socket() override { return id; }
const std::string get_ip() override { return ip_addr.str; }

@ -69,7 +69,7 @@ namespace Bk::Net {
Socket* WindowsSocket::ack()
{
socklen_t addrlen = sizeof(addr);
return WindowsSocket(accept((SOCKET)id, (struct sockaddr*)&addr, &addrlen), ip_addr.version, ip_proto));
return new WindowsSocket(accept((SOCKET)id, (struct sockaddr*)&addr, &addrlen), ip_addr.version, ip_proto));
}
bool WindowsSocket::conn()
@ -104,9 +104,4 @@ namespace Bk::Net {
{
return new WindowsSocket(ip, port, proto);
}
Socket* Socket::create(int id, IpVersion ver, IpProtocol proto)
{
return new WindowsSocket(id, ver, proto);
}
}
Loading…
Cancel
Save