Added more features needed for more complexe portocols

unix_test
anulax1225 ago%!(EXTRA string=1 year)
parent 7a0ef3aca8
commit 0ad9bedec5
  1. 13
      bakanet/src/bakanet/packet.h
  2. 16
      bakanet/src/bakanet/socket.cpp
  3. 4
      bakanet/src/bakanet/socket.h

@ -26,7 +26,7 @@ namespace Bk::Net {
template <typename T>
void push(const T* data, int size)
{
for(int i = 0; i <= size; i++) push<T>(data[i]);
for(int i = 0; i < size; i++) push<T>(data[i]);
}
template <typename T>
@ -44,9 +44,18 @@ namespace Bk::Net {
std::unique_ptr<T[]> pull(int size)
{
std::unique_ptr<T[]> data(new T[size]);
for(int i = size; i >= 0; i--) data[i] = pull<T>();
for(int i = size - 1; i >= 0; i--) data[i] = pull<T>();
return data;
}
bool append_data(std::vector<char> data)
{
if (!data.size()) return false;
size_t i = payload.size();
payload.resize(i + data.size());
std::memcpy(payload.data() + i, data.data(), sizeof(char) * data.size());
return true;
}
std::vector<char> payload;
};

@ -24,8 +24,10 @@ namespace Bk::Net {
bool Socket::init()
{
//Binding step
if (bind(socket_id, (struct sockaddr*)&addr, sizeof(addr)) < 0)
int status;
if ((status = bind(socket_id, (struct sockaddr*)&addr, sizeof(addr)) < 0))
{
perror("bind failed");
return false;
}
return true;
@ -57,14 +59,14 @@ namespace Bk::Net {
return true;
}
void Socket::write(std::vector<char> packet)
void Socket::send(std::vector<char> packet)
{
send(socket_id, packet.data(), packet.size(), 0);
write(socket_id, packet.data(), packet.size());
}
void Socket::write(Connection conn, std::vector<char> packet)
void Socket::send(Connection conn, std::vector<char> packet)
{
send(conn, packet.data(), packet.size(), 0);
write(conn, packet.data(), packet.size());
}
std::vector<char> Socket::recv(int size)
@ -72,7 +74,7 @@ namespace Bk::Net {
std::vector<char> buffer;
buffer.resize(size);
int status = read(socket_id, buffer.data(), buffer.size() - 1);
return status ? buffer : std::vector<char>(0);
return status > 0 ? buffer : std::vector<char>();
}
std::vector<char> Socket::recv(Connection conn, int size)
@ -80,6 +82,6 @@ namespace Bk::Net {
std::vector<char> buffer;
buffer.resize(size);
int status = read(conn, buffer.data(), buffer.size() - 1);
return status ? buffer : std::vector<char>(0);
return status > 0 ? buffer : std::vector<char>();
}
}

@ -28,8 +28,8 @@ namespace Bk::Net {
bool start(int cpt_conn);
Connection ack();
bool conn();
void write(std::vector<char> packet);
void write(Connection socket, std::vector<char> packet);
void send(std::vector<char> packet);
void send(Connection socket, std::vector<char> packet);
std::vector<char> recv(int size);
std::vector<char> recv(Connection socket, int size);

Loading…
Cancel
Save