Added none blocking socket obtain

multi_plaform
anulax1225 ago%!(EXTRA string=1 year)
parent fd2ec05b86
commit 0c001ee043
  1. 6
      bakanet/src/bakanet/sock_layer/socket.h
  2. 8
      bakanet/src/platform/linux/linux_socket.cpp
  3. 6
      bakanet/src/platform/linux/linux_socket.h

@ -23,9 +23,9 @@ namespace Bk::Net {
virtual void emit(std::vector<char> packet) = 0;
virtual void emit(Connection socket, std::vector<char> packet) = 0;
virtual std::vector<char> obtain(int size) = 0;
virtual std::vector<char> obtain(Connection socket, int size) = 0;
virtual std::vector<char> obtain() = 0;
virtual std::vector<char> obtain(Connection socket) = 0;
virtual std::vector<char> obtain(Connection conn, int size) = 0;
virtual std::vector<char> nobtain() = 0;
virtual std::vector<char> nobtain(Connection conn) = 0;
template<typename T>
static bool set_option(Socket& socket, int level, int option_name, const T* option_value)

@ -87,11 +87,11 @@ namespace Bk::Net {
return buffer;
}
virtual std::vector<char> obtain()
std::vector<char> LinuxSocket::nobtain()
{
std::vector<char> buffer(0);
int len = 0;
ioctl(sock, FIONREAD, &len);
ioctl(socket_id, FIONREAD, &len);
if (len > 0) {
buffer.resize(len);
len = read(socket_id, buffer.data(), buffer.size() - 1);
@ -99,11 +99,11 @@ namespace Bk::Net {
return buffer;
}
virtual std::vector<char> obtain(Connection socket)
std::vector<char> LinuxSocket::nobtain(Connection conn)
{
std::vector<char> buffer(0);
int len = 0;
ioctl(sock, FIONREAD, &len);
ioctl(socket_id, FIONREAD, &len);
if (len > 0) {
buffer.resize(len);
len = read(conn, buffer.data(), buffer.size() - 1);

@ -19,9 +19,9 @@ namespace Bk::Net {
void emit(std::vector<char> packet) override;
void emit(Connection socket, std::vector<char> packet) override;
std::vector<char> obtain(int size) override;
std::vector<char> obtain(Connection socket, int size) override;
std::vector<char> obtain() override;
std::vector<char> obtain(Connection socket) override;
std::vector<char> obtain(Connection conn, int size) override;
std::vector<char> nobtain() override;
std::vector<char> nobtain(Connection conn) override;
private:
Connection socket_id;

Loading…
Cancel
Save