📄 w32sock_8h-source.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>w32sock.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </center>
<hr><h1>w32sock.h</h1><div class="fragment"><pre>00001 <span class="comment">//-< W32SOCK.H >-----------------------------------------------------*--------*</span>
00002 <span class="comment">// FastDB Version 1.0 (c) 1997 GARRET * ? *</span>
00003 <span class="comment">// (Main Memory Database Management System) * /\| *</span>
00004 <span class="comment">// * / \ *</span>
00005 <span class="comment">// Created: 8-May-97 K.A. Knizhnik * / [] \ *</span>
00006 <span class="comment">// Last update: 8-May-97 K.A. Knizhnik * GARRET *</span>
00007 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00008 <span class="comment">// Windows sockets </span>
00009 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00010
00011 <span class="preprocessor">#ifndef __W32SOCK_H__</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#define __W32SOCK_H__</span>
00013 <span class="preprocessor"></span>
00014 <span class="preprocessor">#include "sockio.h"</span>
00015
00016 BEGIN_FASTDB_NAMESPACE
00017
00018 <span class="keyword">class </span>win_socket : <span class="keyword">public</span> socket_t {
00019 <span class="keyword">protected</span>:
00020 SOCKET s;
00021 <span class="keywordtype">int</span> errcode; <span class="comment">// error code of last failed operation </span>
00022 <span class="keywordtype">char</span>* address; <span class="comment">// host address</span>
00023
00024 <span class="keyword">enum</span> error_codes {
00025 ok = 0,
00026 not_opened = -1,
00027 bad_address = -2,
00028 connection_failed = -3,
00029 broken_pipe = -4,
00030 invalid_access_mode = -5
00031 };
00032
00033 <span class="keyword">public</span>:
00034 <span class="keywordtype">bool</span> open(<span class="keywordtype">int</span> listen_queue_size);
00035 <span class="keywordtype">bool</span> connect(<span class="keywordtype">int</span> max_attempts, time_t timeout);
00036
00037 <span class="keywordtype">int</span> read(<span class="keywordtype">void</span>* buf, size_t min_size, size_t max_size, time_t timeout);
00038 <span class="keywordtype">bool</span> write(<span class="keywordtype">void</span> <span class="keyword">const</span>* buf, size_t size, time_t timeout);
00039
00040 <span class="keywordtype">bool</span> is_ok();
00041 <span class="keywordtype">bool</span> close();
00042 <span class="keywordtype">char</span>* get_peer_name();
00043 <span class="keywordtype">bool</span> shutdown();
00044 <span class="keywordtype">void</span> get_error_text(<span class="keywordtype">char</span>* buf, size_t buf_size);
00045
00046 socket_t* accept();
00047 <span class="keywordtype">bool</span> cancel_accept();
00048
00049 <span class="keywordtype">int</span> get_handle();
00050
00051 win_socket(<span class="keyword">const</span> <span class="keywordtype">char</span>* address);
00052 win_socket(SOCKET new_sock);
00053
00054 ~win_socket();
00055 };
00056
00057 <span class="preprocessor">#define SOCKET_BUF_SIZE (8*1024) </span>
00058 <span class="preprocessor"></span><span class="preprocessor">#define ACCEPT_TIMEOUT (30*1000)</span>
00059 <span class="preprocessor"></span>
00060 <span class="keyword">class </span>local_win_socket : <span class="keyword">public</span> socket_t {
00061 <span class="keyword">protected</span>:
00062 <span class="keyword">enum</span> error_codes {
00063 ok = 0,
00064 not_opened = -1,
00065 broken_pipe = -2,
00066 timeout_expired = -3
00067 };
00068 <span class="keyword">enum</span> socket_signals {
00069 RD, <span class="comment">// receive data</span>
00070 RTR, <span class="comment">// ready to receive</span>
00071 TD, <span class="comment">// transfer data</span>
00072 RTT <span class="comment">// ready to transfer</span>
00073 };
00074 <span class="comment">//------------------------------------------------------</span>
00075 <span class="comment">// Mapping between signals at opposite ends of socket:</span>
00076 <span class="comment">// TD ---> RD</span>
00077 <span class="comment">// RTR ---> RTT</span>
00078 <span class="comment">//------------------------------------------------------</span>
00079
00080 <span class="keyword">struct </span>socket_buf {
00081 <span class="keyword">volatile</span> <span class="keywordtype">int</span> RcvWaitFlag;
00082 <span class="keyword">volatile</span> <span class="keywordtype">int</span> SndWaitFlag;
00083 <span class="keyword">volatile</span> <span class="keywordtype">int</span> DataEnd;
00084 <span class="keyword">volatile</span> <span class="keywordtype">int</span> DataBeg;
00085 <span class="keywordtype">char</span> Data[SOCKET_BUF_SIZE - 4*<span class="keyword">sizeof</span>(int)];
00086 };
00087 <span class="keyword">struct </span>accept_data {
00088 HANDLE Signal[4];
00089 HANDLE BufHnd;
00090 };
00091 <span class="keyword">struct </span>connect_data {
00092 HANDLE Mutex;
00093 <span class="keywordtype">int</span> Pid;
00094 };
00095 socket_buf* RcvBuf;
00096 socket_buf* SndBuf;
00097 HANDLE Signal[4];
00098 HANDLE Mutex;
00099 HANDLE BufHnd;
00100 <span class="keywordtype">int</span> Error;
00101 <span class="keywordtype">char</span>* Name;
00102
00103 <span class="keyword">public</span>:
00104 <span class="keywordtype">bool</span> open(<span class="keywordtype">int</span> listen_queue_size);
00105 <span class="keywordtype">bool</span> connect(<span class="keywordtype">int</span> max_attempts, time_t timeout);
00106
00107 <span class="keywordtype">int</span> read(<span class="keywordtype">void</span>* buf, size_t min_size, size_t max_size, time_t timeout);
00108 <span class="keywordtype">bool</span> write(<span class="keywordtype">void</span> <span class="keyword">const</span>* buf, size_t size, time_t timeout);
00109
00110 <span class="keywordtype">char</span>* get_peer_name();
00111 <span class="keywordtype">bool</span> is_ok();
00112 <span class="keywordtype">bool</span> close();
00113 <span class="keywordtype">bool</span> shutdown();
00114 <span class="keywordtype">void</span> get_error_text(<span class="keywordtype">char</span>* buf, size_t buf_size);
00115
00116 socket_t* accept();
00117 <span class="keywordtype">bool</span> cancel_accept();
00118
00119 <span class="keywordtype">int</span> get_handle();
00120
00121 local_win_socket(<span class="keyword">const</span> <span class="keywordtype">char</span>* address);
00122 local_win_socket();
00123
00124 ~local_win_socket();
00125 };
00126
00127 END_FASTDB_NAMESPACE
00128
00129 <span class="preprocessor">#endif</span>
00130 <span class="preprocessor"></span>
00131
00132
00133
00134
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:30 2008 for FastDB by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.2.18 </small></address>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -