sockio_8h-source.html
来自「最新版本!fastdb是高效的内存数据库系统」· HTML 代码 · 共 142 行
HTML
142 行
<!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>sockio.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>sockio.h</h1><div class="fragment"><pre>00001 <span class="comment">//-< SOCKIO.H >------------------------------------------------------*--------*</span>
00002 <span class="comment">// FastDB Version 1.0 (c) 1999 GARRET * ? *</span>
00003 <span class="comment">// (Main Memory Database Management System) * /\| *</span>
00004 <span class="comment">// * / \ *</span>
00005 <span class="comment">// Created: 7-Jan-97 K.A. Knizhnik * / [] \ *</span>
00006 <span class="comment">// Last update: 23-Apr-97 K.A. Knizhnik * GARRET *</span>
00007 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00008 <span class="comment">// Socket abstraction</span>
00009 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00010
00011 <span class="preprocessor">#ifndef __SOCKIO_H__</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#define __SOCKIO_H__</span>
00013 <span class="preprocessor"></span>
00014 <span class="preprocessor">#include "stdtp.h"</span>
00015
00016 BEGIN_FASTDB_NAMESPACE
00017
00018 <span class="preprocessor">#define DEFAULT_CONNECT_MAX_ATTEMPTS 100</span>
00019 <span class="preprocessor"></span><span class="preprocessor">#define DEFAULT_RECONNECT_TIMEOUT 1</span>
00020 <span class="preprocessor"></span><span class="preprocessor">#define DEFAULT_LISTEN_QUEUE_SIZE 5</span>
00021 <span class="preprocessor"></span><span class="preprocessor">#define WAIT_FOREVER ((time_t)-1)</span>
00022 <span class="preprocessor"></span>
00023 <span class="preprocessor">#ifndef LINGER_TIME</span>
00024 <span class="preprocessor"></span><span class="preprocessor">#define LINGER_TIME 10</span>
00025 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00026 <span class="preprocessor"></span>
00027 <span class="preprocessor">#ifndef SOCK_NO_DELAY </span>
00028 <span class="preprocessor"></span><span class="preprocessor">#ifndef REPLICATION_SUPPORT</span>
00029 <span class="preprocessor"></span><span class="preprocessor">#define SOCK_NO_DELAY 1</span>
00030 <span class="preprocessor"></span><span class="preprocessor">#else</span>
00031 <span class="preprocessor"></span><span class="preprocessor">#define SOCK_NO_DELAY 0</span>
00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00033 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00034 <span class="preprocessor"></span>
00035 <span class="preprocessor">#ifndef SOCK_SNDBUF_SIZE</span>
00036 <span class="preprocessor"></span><span class="preprocessor">#define SOCK_SNDBUF_SIZE 0</span>
00037 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00038 <span class="preprocessor"></span>
00039 <span class="preprocessor">#ifndef SOCK_LINGER</span>
00040 <span class="preprocessor"></span><span class="preprocessor">#define SOCK_LINGER 0</span>
00041 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00042 <span class="preprocessor"></span>
00043
00044 <span class="comment">//</span>
00045 <span class="comment">// Abstract socket interface</span>
00046 <span class="comment">//</span>
00047 <span class="keyword">class </span>FASTDB_DLL_ENTRY socket_t {
00048 <span class="keyword">public</span>:
00049 <span class="keywordtype">bool</span> read(<span class="keywordtype">void</span>* buf, size_t size) {
00050 <span class="keywordflow">return</span> read(buf, size, size) == (int)size;
00051 }
00052 <span class="keyword">virtual</span> <span class="keywordtype">int</span> read(<span class="keywordtype">void</span>* buf, size_t min_size, size_t max_size, time_t timeout = WAIT_FOREVER) = 0;
00053 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> write(<span class="keywordtype">void</span> <span class="keyword">const</span>* buf, size_t size, time_t timeout = WAIT_FOREVER) = 0;
00054
00055 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> is_ok() = 0;
00056 <span class="keyword">virtual</span> <span class="keywordtype">void</span> get_error_text(<span class="keywordtype">char</span>* buf, size_t buf_size) = 0;
00057
00058 <span class="comment">//</span>
00059 <span class="comment">// This method is called by server to accept client connection</span>
00060 <span class="comment">//</span>
00061 <span class="keyword">virtual</span> socket_t* accept() = 0;
00062
00063 <span class="comment">//</span>
00064 <span class="comment">// Cancel accept operation and close socket</span>
00065 <span class="comment">//</span>
00066 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> cancel_accept() = 0;
00067
00068 <span class="comment">//</span>
00069 <span class="comment">// Shutdown socket: prohibite write and read operations on socket</span>
00070 <span class="comment">//</span>
00071 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> shutdown() = 0;
00072
00073 <span class="comment">//</span>
00074 <span class="comment">// Close socket</span>
00075 <span class="comment">//</span>
00076 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> close() = 0;
00077
00078 <span class="comment">//</span>
00079 <span class="comment">// Get socket peer name.</span>
00080 <span class="comment">// name is created using new char[]. If perr name can not be obtained NULL</span>
00081 <span class="comment">// is returned and errcode is set.</span>
00082 <span class="comment">//</span>
00083 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* get_peer_name() = 0;
00084
00085 <span class="comment">//</span>
00086 <span class="comment">// Create client socket connected to local or global server socket</span>
00087 <span class="comment">//</span>
00088 <span class="keyword">enum</span> socket_domain {
00089 sock_any_domain, <span class="comment">// domain is chosen automatically</span>
00090 sock_local_domain, <span class="comment">// local domain (i.e. Unix domain socket) </span>
00091 sock_global_domain <span class="comment">// global domain (i.e. INET sockets) </span>
00092 };
00093
00094 <span class="keyword">static</span> socket_t* connect(<span class="keywordtype">char</span> <span class="keyword">const</span>* address,
00095 socket_domain domain = sock_any_domain,
00096 <span class="keywordtype">int</span> max_attempts = DEFAULT_CONNECT_MAX_ATTEMPTS,
00097 time_t timeout = DEFAULT_RECONNECT_TIMEOUT);
00098
00099 <span class="comment">//</span>
00100 <span class="comment">// Create local domain socket</span>
00101 <span class="comment">//</span>
00102 <span class="keyword">static</span> socket_t* create_local(<span class="keywordtype">char</span> <span class="keyword">const</span>* address,
00103 <span class="keywordtype">int</span> listen_queue_size =
00104 DEFAULT_LISTEN_QUEUE_SIZE);
00105
00106 <span class="comment">//</span>
00107 <span class="comment">// Create global domain socket </span>
00108 <span class="comment">//</span>
00109 <span class="keyword">static</span> socket_t* create_global(<span class="keywordtype">char</span> <span class="keyword">const</span>* address,
00110 <span class="keywordtype">int</span> listen_queue_size =
00111 DEFAULT_LISTEN_QUEUE_SIZE);
00112
00113 <span class="keyword">virtual</span> <span class="keywordtype">int</span> get_handle() = 0;
00114
00115 <span class="keyword">virtual</span> ~socket_t() {}
00116 socket_t() { state = ss_close; }
00117
00118 <span class="keyword">protected</span>:
00119 <span class="keyword">enum</span> { ss_open, ss_shutdown, ss_close } state;
00120 };
00121
00122 END_FASTDB_NAMESPACE
00123
00124 <span class="preprocessor">#endif</span>
00125 <span class="preprocessor"></span>
00126
00127
</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 + =
减小字号Ctrl + -
显示快捷键?