Commit 3577f3cb authored by jan.koester's avatar jan.koester
Browse files

Merge branch 'main' of git.tuxist.de:jan.koester/libnetplus

parents 776c385d 50fe4286
Loading
Loading
Loading
Loading
+31 −39
Original line number Diff line number Diff line
@@ -172,7 +172,7 @@ namespace netplus {
            }

            _ServerSocket->accept(ccon->csock);
            ccon->csock->setFlag(O_NONBLOCK);
            ccon->csock->setFlag(O_NONBLOCK,1);


            std::string ip;
@@ -329,7 +329,7 @@ namespace netplus {
        EventWorker(int tid,ULONG_PTR args,EventWorkerArgs* eargs) {
            poll pollptr(eargs->ssocket, eargs->event, eargs->pollfd, eargs->timeout);
            int wait=0;
EVENTLOOP:
            for(;;){
                try {
                    wait=pollptr.waitEventHandler(eargs->timeout);
                    for(int i =0; i<wait; ++i){
@@ -351,26 +351,18 @@ EVENTLOOP:
                            }
                        }catch(NetException& e){
                            switch(e.getErrorType()){
                            case NetException::Critical:
                                throw e;
                                case NetException::Note:
                                    continue;
                                default:
                                std::cerr << e.what() << std::endl;
                                    pollptr.CloseEventHandler(i,tid,args);
                                continue;
                                    throw e;
                            }
                        }
                    }

                }catch (NetException& e) {
                if (e.getErrorType() == NetException::Critical) {
                    throw e;
                }else if(e.getErrorType() != NetException::Note){
                    std::cerr << e.what() << std::endl;
                }
            }
            goto EVENTLOOP;
        }
    };

@@ -407,7 +399,7 @@ EVENTLOOP:
        _Timeout=timeout;
        _ServerSocket=serversocket;
        _ServerSocket->bind();
        _ServerSocket->setFlag(O_NONBLOCK);
        _ServerSocket->setFlag(O_NONBLOCK,1);
        _ServerSocket->listen();
        threads=sysconf(_SC_NPROCESSORS_ONLN);
    }
+40 −39
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <unistd.h>
#include <signal.h>
#include <sys/event.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdint.h>
#include <mutex>
@@ -170,7 +171,7 @@ namespace netplus {
            }

            _ServerSocket->accept(ccon->csock);
            ccon->csock->setnonblocking();
            ccon->csock->setFlag(O_NONBLOCK,1);

            std::string ip;
            ccon->csock->getAddress(ip);
@@ -335,7 +336,7 @@ namespace netplus {
        EventWorker(int tid,ULONG_PTR args,EventWorkerArgs* eargs) {
            poll pollptr(eargs->ssocket,eargs->event,eargs->pollfd,eargs->timeout);

EVENTLOOP:
            for(;;){
                try {
                    int wait=pollptr.waitEventHandler();
                    for(int i =0; i<wait; ++i){
@@ -376,7 +377,7 @@ EVENTLOOP:
                        std::cerr << e.what() << std::endl;
                    }
                }
            goto EVENTLOOP;
            }
        }
    };

@@ -413,7 +414,7 @@ EVENTLOOP:
        _Timeout=timeout;
        _ServerSocket=serversocket;
        _ServerSocket->bind();
        _ServerSocket->setnonblocking();
        _ServerSocket->setFlag(O_NONBLOCK,1);
        _ServerSocket->listen();
        threads=sysconf(_SC_NPROCESSORS_ONLN);
    }
+9 −5
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ netplus::tcp::tcp(const char* uxsocket,int maxconnections,int sockopts) : socket
    setsockopt(_Socket,SOL_SOCKET,sockopts,&optval, sizeof(optval));
    _Type=sockettype::TCP;
}
#include <iostream>

netplus::tcp::tcp(const char* addr, int port,int maxconnections,int sockopts) : socket() {
    NetException exception;
    _Maxconnections=maxconnections;
@@ -110,6 +110,8 @@ netplus::tcp::tcp(const char* addr, int port,int maxconnections,int sockopts) :
    _SocketInfoLen = sizeof(hints);
    ::freeaddrinfo(result);

    int optval = 1;
    setsockopt(_Socket, SOL_SOCKET, sockopts,&optval,sizeof(optval));
    _Type=sockettype::TCP;
}

@@ -253,8 +255,10 @@ void netplus::tcp::connect(socket *ssock){
void netplus::tcp::getAddress(std::string &addr){
    char buf[512];

    if(getpeername(_Socket,((struct addrinfo*)_SocketInfo)->ai_addr,&((struct addrinfo*)_SocketInfo)->ai_addrlen)==0){
        addr = inet_ntop(((struct addrinfo*)_SocketInfo)->ai_family,
        &((struct addrinfo*)_SocketInfo)->ai_addr->sa_data + sizeof(struct sockaddr_storage), buf,
            &((struct addrinfo*)_SocketInfo)->ai_addr, buf,
            ((struct addrinfo*)_SocketInfo)->ai_addrlen
        );
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -256,7 +256,7 @@ void netplus::udp::getAddress(std::string &addr){
    char buf[512];

    addr = inet_ntop(((struct addrinfo*)_SocketInfo)->ai_family,
        &((struct addrinfo*)_SocketInfo)->ai_addr->sa_data + sizeof(struct sockaddr_storage), buf,
        &((struct addrinfo*)_SocketInfo)->ai_addr, buf,
        ((struct addrinfo*)_SocketInfo)->ai_addrlen
    );
}