⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 w32sock.h

📁 FastDb是高效的内存数据库系统
💻 H
字号:
//-< W32SOCK.H >-----------------------------------------------------*--------*// FastDB                    Version 1.0         (c) 1997  GARRET    *     ?  *// (Main Memory Database Management System)                          *   /\|  *//                                                                   *  /  \  *//                          Created:      8-May-97    K.A. Knizhnik  * / [] \ *//                          Last update:  8-May-97    K.A. Knizhnik  * GARRET *//-------------------------------------------------------------------*--------*// Windows sockets  //-------------------------------------------------------------------*--------*#ifndef __W32SOCK_H__#define __W32SOCK_H__#include "sockio.h"BEGIN_FASTDB_NAMESPACEclass win_socket : public socket_t {   protected:     SOCKET        s;     int           errcode;  // error code of last failed operation     char*         address;  // host address    enum error_codes {         ok = 0,        not_opened = -1,        bad_address = -2,        connection_failed = -3,        broken_pipe = -4,         invalid_access_mode = -5    };  public:     bool      open(int listen_queue_size);    bool      connect(int max_attempts, time_t timeout);    int       read(void* buf, size_t min_size, size_t max_size,time_t timeout);    bool      write(void const* buf, size_t size);    bool      is_ok();     bool      close();     char*     get_peer_name();    bool      shutdown();    void      get_error_text(char* buf, size_t buf_size);    socket_t* accept();    bool      cancel_accept();    int get_handle();    win_socket(const char* address);     win_socket(SOCKET new_sock);    ~win_socket();};#define SOCKET_BUF_SIZE (8*1024) #define ACCEPT_TIMEOUT  (30*1000)class local_win_socket : public socket_t {   protected:     enum error_codes {         ok = 0,        not_opened = -1,        broken_pipe = -2,        timeout_expired = -3    };    enum socket_signals {        RD,  // receive data        RTR, // ready to receive        TD,  // transfer data        RTT  // ready to transfer    };    //------------------------------------------------------    // Mapping between signals at opposite ends of socket:    // TD  ---> RD    // RTR ---> RTT    //------------------------------------------------------    struct socket_buf {         volatile int RcvWaitFlag;        volatile int SndWaitFlag;        volatile int DataEnd;        volatile int DataBeg;        char Data[SOCKET_BUF_SIZE - 4*sizeof(int)];      };    struct accept_data {         HANDLE Signal[4];        HANDLE BufHnd;    };    struct connect_data {         HANDLE Mutex;        int    Pid;    };    socket_buf* RcvBuf;    socket_buf* SndBuf;    HANDLE      Signal[4];             HANDLE      Mutex;    HANDLE      BufHnd;    int         Error;    char*       Name;  public:     bool      open(int listen_queue_size);    bool      connect(int max_attempts, time_t timeout);    int       read(void* buf, size_t min_size, size_t max_size,time_t timeout);    bool      write(void const* buf, size_t size);    char*     get_peer_name();    bool      is_ok();     bool      close();    bool      shutdown();    void      get_error_text(char* buf, size_t buf_size);    socket_t* accept();    bool      cancel_accept();        int       get_handle();    local_win_socket(const char* address);     local_win_socket();     ~local_win_socket();};END_FASTDB_NAMESPACE           #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -