📄 wwwapi_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>wwwapi.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>wwwapi.h</h1><div class="fragment"><pre>00001 <span class="comment">//-< WWWAPI.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: 27-Mar-99 K.A. Knizhnik * / [] \ *</span>
00006 <span class="comment">// Last update: 1-Jul-99 K.A. Knizhnik * GARRET *</span>
00007 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00008 <span class="comment">// API for creating Internet applications </span>
00009 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00010
00011 <span class="preprocessor">#ifndef __WWWAPI_H__</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#define __WWWAPI_H__</span>
00013 <span class="preprocessor"></span>
00014 <span class="preprocessor">#include "stdtp.h"</span>
00015 <span class="preprocessor">#include "sync.h"</span>
00016 <span class="preprocessor">#include "sockio.h"</span>
00017 <span class="preprocessor">#include "database.h"</span>
00018
00019 BEGIN_FASTDB_NAMESPACE
00020
00021 <span class="keyword">enum</span> WWWencodingType {
00022 TAG = 0, <span class="comment">// HTML tags (no conversion)</span>
00023 HTML = 1, <span class="comment">// replace ('<','>','"','&') with (&lt; &gt; &amp; &qout;)</span>
00024 URL = 2 <span class="comment">// replace spaces with '+', and other special characters with %XX</span>
00025 };
00026 <span class="comment">//</span>
00027 <span class="comment">// Automatic state shifts after each append operation:</span>
00028 <span class="comment">// TAG->HTML</span>
00029 <span class="comment">// HTML->TAG</span>
00030 <span class="comment">// URL->TAG</span>
00031 <span class="comment">//</span>
00032
00033 <span class="keyword">class </span>FASTDB_DLL_ENTRY WWWconnection {
00034 <span class="keyword">friend</span> <span class="keyword">class </span>WWWapi;
00035 <span class="keyword">friend</span> <span class="keyword">class </span>CGIapi;
00036 <span class="keyword">friend</span> <span class="keyword">class </span>QueueManager;
00037 <span class="keyword">friend</span> <span class="keyword">class </span>HTTPapi;
00038
00039 <span class="keyword">public</span>:
00040
00041 <span class="keyword">typedef</span> void (*UserDataDestructor)(<span class="keywordtype">void</span>* userData);
00042 <span class="keyword">typedef</span> bool (*handler)(WWWconnection& con);
00043
00044 <span class="keywordtype">void</span>* userData;
00045 UserDataDestructor userDataDestructor;
00046
00047 <span class="keywordtype">void</span> setUserData(<span class="keywordtype">void</span>* data, UserDataDestructor destructor = NULL) {
00048 userData = data;
00049 userDataDestructor = destructor;
00050 }
00051
00052 <span class="comment">//</span>
00053 <span class="comment">// Append string to reply buffer</span>
00054 <span class="comment">//</span>
00055 WWWconnection& append(<span class="keywordtype">char</span> <span class="keyword">const</span>* str);
00056 <span class="comment">//</span>
00057 <span class="comment">// Append binary data</span>
00058 <span class="comment">// </span>
00059 WWWconnection& append(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf, <span class="keywordtype">int</span> len);
00060
00061 WWWconnection& operator << (<span class="keywordtype">char</span> <span class="keyword">const</span>* str) {
00062 <span class="keywordflow">return</span> append(str);
00063 }
00064
00065 <span class="keywordtype">void</span> setEncoding(WWWencodingType type) { encoding = type; }
00066
00067 WWWconnection& operator << (WWWencodingType type) {
00068 setEncoding(type);
00069 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00070 }
00071 WWWconnection& operator << (<span class="keywordtype">int</span> value) {
00072 <span class="keywordtype">char</span> buf[32];
00073 sprintf(buf, <span class="stringliteral">"%d"</span>, value);
00074 <span class="keywordflow">return</span> append(buf);
00075 }
00076 WWWconnection& operator << (<span class="keywordtype">double</span> value) {
00077 <span class="keywordtype">char</span> buf[32];
00078 sprintf(buf, <span class="stringliteral">"%f"</span>, value);
00079 <span class="keywordflow">return</span> append(buf);
00080 }
00081
00082 WWWconnection& operator << (db_int8 value) {
00083 <span class="keywordtype">char</span> buf[32];
00084 sprintf(buf, INT8_FORMAT, value);
00085 <span class="keywordflow">return</span> append(buf);
00086 }
00087
00088 WWWconnection& operator << (oid_t value) {
00089 <span class="keywordtype">char</span> buf[32];
00090 sprintf(buf, <span class="stringliteral">"%ld"</span>, (<span class="keywordtype">long</span>)value);
00091 <span class="keywordflow">return</span> append(buf);
00092 }
00093
00094 <span class="keywordtype">char</span>* getStub() { <span class="keywordflow">return</span> stub; }
00095
00096 <span class="keywordtype">char</span>* getAddress() { <span class="keywordflow">return</span> address; }
00097
00098 <span class="keywordtype">char</span>* getPeer() { <span class="keywordflow">return</span> peer; }
00099
00100 <span class="comment">//</span>
00101 <span class="comment">// Compare content of the string with the end of the reply buffer</span>
00102 <span class="comment">//</span>
00103 <span class="keywordtype">bool</span> terminatedBy(<span class="keywordtype">char</span> <span class="keyword">const</span>* str) <span class="keyword">const</span>;
00104
00105 <span class="comment">//</span>
00106 <span class="comment">// Get value of variable from request string. If name is not present in </span>
00107 <span class="comment">// string NULL is returned. Parameter 'n' can be used to get n-th</span>
00108 <span class="comment">// value of variable for multiple selection slot. Zero value of n </span>
00109 <span class="comment">// corresponds to the first variable's value, 1 - to the second,...</span>
00110 <span class="comment">// When no more values are available NULL is returned.</span>
00111 <span class="comment">//</span>
00112 <span class="keywordtype">char</span>* get(<span class="keywordtype">char</span> <span class="keyword">const</span>* name, <span class="keywordtype">int</span> n = 0);
00113
00114 <span class="comment">//</span>
00115 <span class="comment">// Associatte value with name</span>
00116 <span class="comment">//</span>
00117 <span class="keywordtype">void</span> addPair(<span class="keywordtype">char</span> <span class="keyword">const</span>* name, <span class="keywordtype">char</span> <span class="keyword">const</span>* value);
00118
00119 WWWconnection();
00120 ~WWWconnection();
00121
00122 <span class="keyword">protected</span>:
00123 <span class="keyword">enum</span> { hash_table_size = 1013 };
00124 socket_t* sock;
00125 <span class="keywordtype">char</span>* reply_buf;
00126 size_t reply_buf_size;
00127 size_t reply_buf_used;
00128 <span class="keywordtype">char</span>* stub;
00129 <span class="keywordtype">char</span>* address;
00130 <span class="keywordtype">char</span>* peer;
00131 WWWconnection* next;
00132 WWWencodingType encoding;
00133
00134
00135 <span class="keyword">struct </span>name_value_pair {
00136 name_value_pair* next;
00137 <span class="keywordtype">char</span> <span class="keyword">const</span>* name;
00138 <span class="keywordtype">char</span> <span class="keyword">const</span>* value;
00139 <span class="keywordtype">unsigned</span> hash_code;
00140 };
00141
00142 name_value_pair* hash_table[hash_table_size];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -