|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>OpenClient++: D:/OpenClient++/Command.h Source File</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.9.1 -->
<div class="qindex"> <form class="search" action="../../search.php" method="get">
<a class="qindex" href="../../index.html">Main Page</a> | <a class="qindex" href="../../classes.html">Alphabetical List</a> | <a class="qindex" href="../../annotated.html">Class List</a> | <a class="qindex" href="../../dirs.html">Directories</a> | <a class="qindex" href="../../files.html">File List</a> | <a class="qindex" href="../../functions.html">Class Members</a> | <a class="qindex" href="../../globals.html">File Members</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
<div class="nav">
<a class="el" href="../../dir_000000.html">D:</a> / <a class="el" href="../../dir_000001.html">OpenClient++</a></div>
<h1>Command.h</h1><a href="../../d6/d37/_command_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="preprocessor">#ifndef _COMMAND_H_</span>
00002 <span class="preprocessor"></span><span class="preprocessor">#define _COMMAND_H_</span>
00003 <span class="preprocessor"></span>
00004 <span class="comment">// Query.h</span>
00005 <span class="comment">// 09/17/2004</span>
00006 <span class="comment">// Rohit Joshi</span>
00007 <span class="comment">// Query class </span>
00009 <span class="comment"></span><span class="preprocessor">#include "<a class="code" href="../../d9/dc1/_utils_8h.html">Utils.h</a>"</span>
00010 <span class="preprocessor">#include "<a class="code" href="../../d8/d26/_connection_8h.html">Connection.h</a>"</span>
00011
00012 <span class="comment">// CommandException class</span>
<a name="l00013"></a><a class="code" href="../../d2/d69/class_command_exception.html">00013</a> <span class="keyword">class </span><a class="code" href="../../d2/d69/class_command_exception.html">CommandException</a> : <span class="keyword">public</span> exception
00014 {
00015 <span class="keyword">private</span>:
<a name="l00016"></a><a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptionr0">00016</a> string message;
00017 <span class="keyword">public</span>:
00018 <span class="comment">// constructor</span>
<a name="l00019"></a><a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptiona0">00019</a> <span class="keyword">explicit</span> <a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptiona0">CommandException</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...): <a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptionr0">message</a> (<span class="stringliteral">"Error: "</span>)
00020 {
00021 va_list args;
00022 <span class="keywordtype">char</span> buffer [BUFSIZ ];
00023 memset (buffer, <span class="charliteral">'\0'</span>, <span class="keyword">sizeof</span> (buffer));
00024 va_start (args, format);
00025 vsnprintf (buffer, <span class="keyword">sizeof</span> (buffer), format, args);
00026 va_end (args);
00027 <a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptionr0">message</a> += buffer;
00028 <a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptionr0">message</a> += <span class="charliteral">'\n'</span>;
00029 }
00030 <span class="comment">// destructor</span>
<a name="l00031"></a><a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptiona1">00031</a> <a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptiona1">~CommandException</a> () throw (){}
00032 <span class="comment">// what</span>
<a name="l00033"></a><a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptiona2">00033</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptiona2">what</a> (<span class="keywordtype">void</span>) const throw ()
00034 {
00035 <span class="keywordflow">return</span> <a class="code" href="../../d2/d69/class_command_exception.html#_command_exceptionr0">message</a>.c_str ();
00036 }
00037 };
00038
00039 <span class="comment">//class command</span>
<a name="l00040"></a><a class="code" href="../../d5/d6a/class_command.html">00040</a> <span class="keyword">class </span><a class="code" href="../../d5/d6a/class_command.html">Command</a>
00041 {
00042 <span class="keyword">public</span>:
00043 <span class="comment">// type of commands</span>
<a name="l00044"></a><a class="code" href="../../d5/d6a/class_command.html#_commandw4">00044</a> <span class="keyword">enum</span> CommandType
00045 {
00046 LANG_CMD, <span class="comment">//CS_LANG_CMD,</span>
00047 RPC_CMD, <span class="comment">//CS_RPC_CMD,</span>
00048 SEND_DATA_CMD, <span class="comment">//CS_SEND_DATA_CMD,</span>
00049 SEND_BULK_CMD <span class="comment">//CS_SEND_BULK_CMD</span>
00050 };
00051 <span class="keyword">private</span>:
<a name="l00052"></a><a class="code" href="../../d5/d6a/class_command.html#_commandr0">00052</a> CS_COMMAND *m_pCmd;
<a name="l00053"></a><a class="code" href="../../d5/d6a/class_command.html#_commandr1">00053</a> <a class="code" href="../../dd/d10/class_connection.html">Connection</a> *m_pConn;
<a name="l00054"></a><a class="code" href="../../d5/d6a/class_command.html#_commandr2">00054</a> string m_sCmdStr;
<a name="l00055"></a><a class="code" href="../../d5/d6a/class_command.html#_commandr3">00055</a> CommandType m_eType;
<a name="l00056"></a><a class="code" href="../../d5/d6a/class_command.html#_commandr4">00056</a> <span class="keywordtype">bool</span> m_bThrowException;
00057
00058 <span class="keyword">public</span>:
00059
00060 <span class="comment">// constructor</span>
<a name="l00061"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda0">00061</a> <a class="code" href="../../d5/d6a/class_command.html">Command</a>():m_pConn(0),m_pCmd(0),m_sCmdStr(<span class="stringliteral">""</span>),m_eType(LANG_CMD) {
00062 m_bThrowException = <a class="code" href="../../d5/de2/class_context.html#_contexte2">Context::IsThrowException</a>();
00063 }
00064
00065 <span class="comment">//constructor</span>
<a name="l00066"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda1">00066</a> <a class="code" href="../../d5/d6a/class_command.html">Command</a>(<a class="code" href="../../dd/d10/class_connection.html">Connection</a> *pConn):m_pConn(pConn),m_pCmd(0),m_sCmdStr(<span class="stringliteral">""</span>),
00067 m_eType(LANG_CMD) {
00068 <span class="keywordflow">if</span>(m_pConn)
00069 m_bThrowException = m_pConn-><a class="code" href="../../dd/d10/class_connection.html#_connectiona18">IsThrowException</a>();
00070 <span class="keywordflow">else</span>
00071 m_bThrowException = <a class="code" href="../../d5/de2/class_context.html#_contexte2">Context::IsThrowException</a>();
00072 }
00073
00074 <span class="comment">// constructor</span>
<a name="l00075"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda2">00075</a> <a class="code" href="../../d5/d6a/class_command.html">Command</a>(<a class="code" href="../../dd/d10/class_connection.html">Connection</a> *pConn, <span class="keyword">const</span> string &sCmdStr,
00076 CommandType eType = LANG_CMD, <span class="keywordtype">bool</span> bThrowException = <span class="keyword">false</span> ): m_pCmd(0),
00077 m_pConn(pConn), m_sCmdStr(sCmdStr), m_eType(eType),
00078 m_bThrowException(bThrowException) {
00079 AllocCmd_();
00080 }
00081
00082 <span class="comment">// destructor</span>
<a name="l00083"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda3">00083</a> <span class="keyword">virtual</span> ~<a class="code" href="../../d5/d6a/class_command.html">Command</a>() {
00084 FreeCmd_();
00085 m_pConn = 0;
00086 }
00087
00088 <span class="comment">// reset the command</span>
<a name="l00089"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda4">00089</a> <span class="keywordtype">void</span> Reset() {
00090 FreeCmd_();
00091 m_sCmdStr = <span class="stringliteral">""</span>;
00092 m_eType = LANG_CMD;
00093 <span class="keywordflow">if</span>(m_pConn)
00094 m_bThrowException = m_pConn-><a class="code" href="../../dd/d10/class_connection.html#_connectiona18">IsThrowException</a>();
00095 <span class="keywordflow">else</span>
00096 m_bThrowException = <a class="code" href="../../d5/de2/class_context.html#_contexte2">Context::IsThrowException</a>();
00097
00098 }
00099
00100 <span class="comment">// copy constrcutor</span>
<a name="l00101"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda5">00101</a> <a class="code" href="../../d5/d6a/class_command.html">Command</a>(<span class="keyword">const</span> <a class="code" href="../../d5/d6a/class_command.html">Command</a> &oCmd) {
00102 m_sCmdStr = oCmd.<a class="code" href="../../d5/d6a/class_command.html#_commandr2">m_sCmdStr</a>;
00103 m_eType = oCmd.<a class="code" href="../../d5/d6a/class_command.html#_commandr3">m_eType</a>;
00104 m_pConn = oCmd.<a class="code" href="../../d5/d6a/class_command.html#_commandr1">m_pConn</a>;
00105 m_bThrowException = oCmd.<a class="code" href="../../d5/d6a/class_command.html#_commandr4">m_bThrowException</a>;
00106 <span class="keywordflow">if</span>(!m_pCmd)
00107 AllocCmd_();
00108 }
00109
00110 <span class="comment">// = opeator</span>
<a name="l00111"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda6">00111</a> <a class="code" href="../../d5/d6a/class_command.html">Command</a>& operator=(<span class="keyword">const</span> <a class="code" href="../../d5/d6a/class_command.html">Command</a>& oCmd) {
00112 m_sCmdStr = oCmd.<a class="code" href="../../d5/d6a/class_command.html#_commandr2">m_sCmdStr</a>;
00113 m_eType = oCmd.<a class="code" href="../../d5/d6a/class_command.html#_commandr3">m_eType</a>;
00114 m_pConn = oCmd.<a class="code" href="../../d5/d6a/class_command.html#_commandr1">m_pConn</a>;
00115 m_bThrowException = oCmd.<a class="code" href="../../d5/d6a/class_command.html#_commandr4">m_bThrowException</a>;
00116 <span class="keywordflow">if</span>(!m_pCmd) {
00117 AllocCmd_();
00118 }
00119 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00120 }
00121
00122 <span class="comment">// get CSComand structure</span>
<a name="l00123"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda7">00123</a> CS_COMMAND* GetCSCommand()<span class="keyword">const </span>{
00124 <span class="keywordflow">return</span> m_pCmd;
00125 }
00126
00127 <span class="comment">// set connection</span>
<a name="l00128"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda8">00128</a> <span class="keywordtype">void</span> SetConn(<a class="code" href="../../dd/d10/class_connection.html">Connection</a> *pConn) {
00129 m_pConn = pConn;
00130 }
00131 <span class="comment">// set connection</span>
<a name="l00132"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda9">00132</a> <a class="code" href="../../dd/d10/class_connection.html">Connection</a>* GetConn() {
00133 <span class="keywordflow">return</span> m_pConn;
00134 }
00135
00136 <span class="comment">// Set comand string</span>
<a name="l00137"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda10">00137</a> <span class="keywordtype">void</span> SetCmdStr(<span class="keyword">const</span> string &sCmd) {
00138 m_sCmdStr = sCmd;
00139 }
00140 <span class="comment">// Set comand string</span>
<a name="l00141"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda11">00141</a> <span class="keyword">const</span> string& GetCmdStr() {
00142 <span class="keywordflow">return</span> m_sCmdStr;
00143 }
00144
00145 <span class="comment">// set the command type</span>
<a name="l00146"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda12">00146</a> <span class="keywordtype">void</span> SetCmdType(CommandType eType) {
00147 m_eType = eType;
00148 }
00149 <span class="comment">// set the command type</span>
<a name="l00150"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda13">00150</a> CommandType GetCmdType() {
00151 <span class="keywordflow">return</span> m_eType;
00152 }
00153
00154 <span class="comment">// get/set throw exception</span>
<a name="l00155"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda14">00155</a> <span class="keywordtype">bool</span> IsThrowException() {
00156 <span class="keywordflow">return</span> m_bThrowException;
00157 }
<a name="l00158"></a><a class="code" href="../../d5/d6a/class_command.html#_commanda15">00158</a> <span class="keywordtype">void</span> SetThrowException(<span class="keywordtype">bool</span> bThrowException) {
00159 m_bThrowException = bThrowException;
00160 }
00161
00162
00163 <span class="comment">//Execute()</span>
00164 <span class="keywordtype">bool</span> Execute(<span class="keyword">const</span> string &sCmdStr, CommandType eType = LANG_CMD)
00165 <span class="keywordflow">throw</span> (<a class="code" href="../../d2/d69/class_command_exception.html">CommandException</a>);
00166
00167 <span class="comment">//Execute()</span>
00168 <span class="keywordtype">bool</span> Execute() throw (<a class="code" href="../../d2/d69/class_command_exception.html">CommandException</a>);
00169
00170 private:
00171
00172 <span class="comment">//Execute_()</span>
00173 <span class="keywordtype">bool</span> Execute_();
00174
00175 <span class="comment">//Allocate</span>
00176 <span class="keywordtype">bool</span> AllocCmd_();
00177
00178 <span class="comment">//Free</span>
00179 <span class="keywordtype">void</span> FreeCmd_();
00180 };
00181
00182
00183
00184 #endif <span class="comment">//_COMMAND_H_</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Nov 16 23:19:59 2004 for OpenClient++ by
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address>
</body>
</html>
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Rohit Joshi is a software engineer working for a telecom company in USA. He has development expirience using C, C++ ,C#, VoiceXML, ASR, IMAP, LDAP, HTTP, SIP, H323 on unix/linux and platforms.