|  |  |  | @ -27,7 +27,7 @@ namespace Bk::Net { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	LinuxSocket::~LinuxSocket() | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		close(id); | 
			
		
	
		
			
				
					|  |  |  |  | 		if(id > 0) close(id); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	bool LinuxSocket::init() | 
			
		
	
	
		
			
				
					|  |  |  | @ -53,10 +53,10 @@ namespace Bk::Net { | 
			
		
	
		
			
				
					|  |  |  |  | 	    return true; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	std::unique_ptr<Socket> LinuxSocket::ack() | 
			
		
	
		
			
				
					|  |  |  |  | 	Socket* LinuxSocket::ack() | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		socklen_t addrlen = sizeof(addr); | 
			
		
	
		
			
				
					|  |  |  |  | 		return std::unique_ptr<Socket>(Socket::create(accept(id, (struct sockaddr*)&addr, &addrlen), ip_addr.version, ip_proto)); | 
			
		
	
		
			
				
					|  |  |  |  | 		return new LinuxSocket(accept(id, (struct sockaddr*)&addr, &addrlen), ip_addr.version, ip_proto); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	bool LinuxSocket::conn() | 
			
		
	
	
		
			
				
					|  |  |  | @ -69,6 +69,14 @@ 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()); | 
			
		
	
	
		
			
				
					|  |  |  | @ -83,13 +91,13 @@ namespace Bk::Net { | 
			
		
	
		
			
				
					|  |  |  |  | 		return buffer; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	
 | 
			
		
	
		
			
				
					|  |  |  |  | 	std::unique_ptr<Socket> Socket::create(IpAddress ip, int port, IpProtocol proto) | 
			
		
	
		
			
				
					|  |  |  |  | 	Socket* Socket::create(IpAddress ip, int port, IpProtocol proto) | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		return std::unique_ptr<Socket>(new LinuxSocket(ip, port, proto)); | 
			
		
	
		
			
				
					|  |  |  |  | 		return new LinuxSocket(ip, port, proto); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	std::unique_ptr<Socket> Socket::create(int id, IpVersion ver, IpProtocol proto) | 
			
		
	
		
			
				
					|  |  |  |  | 	Socket* Socket::create(int id, IpVersion ver, IpProtocol proto) | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		return std::unique_ptr<Socket>(new LinuxSocket(id, ver, proto)); | 
			
		
	
		
			
				
					|  |  |  |  | 		return new LinuxSocket(id, ver, proto); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | } |