X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fio%2Fsg_socket.hxx;h=b1965c512fcef9541aeb7c199bc1d7710f7935c5;hb=dc09a50472890ac706d3c76d8af34cc3682ada0c;hp=be8171351a3fe3b5a4632d069abbbf38d62b4361;hpb=bf0d95145d8a49410b6ed5ea6c451ee916b9fc02;p=simgear.git diff --git a/simgear/io/sg_socket.hxx b/simgear/io/sg_socket.hxx index be817135..b1965c51 100644 --- a/simgear/io/sg_socket.hxx +++ b/simgear/io/sg_socket.hxx @@ -5,7 +5,7 @@ // Written by Curtis Olson, started November 1999. // -// Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -39,11 +39,9 @@ #include #include -SG_USING_STD(string); +#include -#if defined(_MSC_VER) -# include -#endif +SG_USING_STD(string); #define SG_MAX_SOCKET_QUEUE 32 @@ -53,13 +51,6 @@ SG_USING_STD(string); */ class SGSocket : public SGIOChannel { public: -#if defined(_MSC_VER) - typedef SOCKET SocketType; -#else - typedef int SocketType; -# define INVALID_SOCKET (-1) -#endif - private: string hostname; string port_str; @@ -67,31 +58,24 @@ private: char save_buf[ 2 * SG_IO_MAX_MSG_SIZE ]; int save_len; - SocketType sock; - SocketType msgsock; - short unsigned int port; - int sock_style; // SOCK_STREAM or SOCK_DGRAM - + netSocket sock; + netSocket* client; + unsigned short port; + bool is_tcp; + bool is_server; bool first_read; + int timeout; + + static bool init; // make a server (master listening) socket - SocketType make_server_socket(); + bool make_server_socket(); // make a client socket - SocketType make_client_socket(); + bool make_client_socket(); - // wrapper functions - size_t readsocket( int fd, void *buf, size_t count ); - size_t writesocket( int fd, const void *buf, size_t count ); -#if !defined(_MSC_VER) - int closesocket(int fd); -#endif - -#if defined(_MSC_VER) - // Ensure winsock has been initialised. - static bool wsock_init; - static bool wsastartup(); -#endif + // Poll for new connections or data to read. + int poll(); public: @@ -167,13 +151,19 @@ public: // close file bool close(); - /** Enable non-blocking mode. */ + /** + * Enable non-blocking mode. + * @return success/failure + */ bool nonblock(); - /** Return the remote host name */ + // set timeout (default: 0) + inline void set_timeout(int i) { timeout = i; } + + /** @return the remote host name */ inline string get_hostname() const { return hostname; } - /** Return the port number (in string form) */ + /** @return the port number (in string form) */ inline string get_port_str() const { return port_str; } };