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

📄 classcradiusclientstack.html

📁 采用 ACE 开发的 radius 应用
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!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>ace-radius: CRadiusClientStack Class Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.7-20040704 --><div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a></div><h1>CRadiusClientStack Class Reference</h1>Client RADIUS stack implementation.  <a href="#_details">More...</a><p><code>#include &lt;<a class="el" href="CRadiusClientStack_8h-source.html">CRadiusClientStack.h</a>&gt;</code><p><a href="classCRadiusClientStack-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#a0">CRadiusClientStack</a> (ACE_Allocator *p_allocator=NULL)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor.  <a href="#a0"></a><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#a1">sendPacket</a> (<a class="el" href="classCRadiusPacket.html">CRadiusPacket</a> *p_packet)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send packet.  <a href="#a1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#a2">handleResponse</a> (<a class="el" href="classCRadiusPacket.html">CRadiusPacket</a> *p_responsePacket, <a class="el" href="classCRadiusPacket.html">CRadiusPacket</a> *p_requestPacket)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback on response packet receive.  <a href="#a2"></a><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#a3">handleTransmitFailure</a> (<a class="el" href="classCRadiusPacket.html">CRadiusPacket</a> *p_packet)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback on packet transmit failure.  <a href="#a3"></a><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classCRadiusPacket.html">CRadiusPacket</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#a4">seizePacket</a> (unsigned char p_code)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Seize RADIUS packet.  <a href="#a4"></a><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#a5">releasePacket</a> (<a class="el" href="classCRadiusPacket.html">CRadiusPacket</a> *p_packet)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release RADIUS packet.  <a href="#a5"></a><br></td></tr><tr><td colspan=2><br><h2>Private Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#d0">addConnection</a> (<a class="el" href="classCRadiusClientConnection.html">CRadiusClientConnection</a> *p_connection)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add connection.  <a href="#d0"></a><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#d1">transmitFailure</a> (<a class="el" href="classCRadiusClientData.html">CRadiusClientData</a> *p_data)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet transmission failed on specific connection.  <a href="#d1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="d2" doxytag="CRadiusClientStack::seizeData" ></a><a class="el" href="classCRadiusClientData.html">CRadiusClientData</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#d2">seizeData</a> (<a class="el" href="classCRadiusPacket.html">CRadiusPacket</a> *p_packet, <a class="el" href="classCRadiusClientConnection.html">CRadiusClientConnection</a> *p_connection)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Seize transmit data. <br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="d3" doxytag="CRadiusClientStack::releaseData" ></a>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#d3">releaseData</a> (<a class="el" href="classCRadiusClientData.html">CRadiusClientData</a> *p_data)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release transmit data. <br></td></tr><tr><td colspan=2><br><h2>Private Attributes</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="r1" doxytag="CRadiusClientStack::m_connections" ></a>ACE_Unbounded_Queue&lt; <a class="el" href="classCRadiusClientConnection.html">CRadiusClientConnection</a> * &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#r1">m_connections</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Queue of all connections belonging to this stack. <br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="r2" doxytag="CRadiusClientStack::m_activeConnection" ></a><a class="el" href="classCRadiusClientConnection.html">CRadiusClientConnection</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#r2">m_activeConnection</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connection that will be used for transmitting the next packet. <br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="r3" doxytag="CRadiusClientStack::m_nextPacketId" ></a>unsigned char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#r3">m_nextPacketId</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Next packet identifier. <br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="r4" doxytag="CRadiusClientStack::m_allocator" ></a>ACE_Allocator *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCRadiusClientStack.html#r4">m_allocator</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocator strategy. <br></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>Client RADIUS stack implementation. <p>CRadiusClientStack class is typically needed by client devices that need to contact RADIUS servers (e.g. VoIP phones). It provides ability to send packets to one or more RADIUS servers and properly process replies received from them.<p>Each CRadiusClientStack consists of one or more CRadiusClientConnections. Packets are distributed across available CRadiusClientConnections using simple round-robin algorithm. When choosen connection fails to transmit the packet, another connection is attempted. Only when all connections fail to transmit the packet, the stack "gives up" and calls appropriate application callback.<p>Most of the settings (e.g. retransmit settings) are specified on a per-connection basis.<p>Application should create it's own instance of CRadiusClientStack class and implement the following virtual methods: -) handleResponse - for processing response packets -) handleTransmitFailure - for processing failures in packet's transmission <p><hr><h2>Constructor &amp; Destructor Documentation</h2><a class="anchor" name="a0" doxytag="CRadiusClientStack::CRadiusClientStack" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> CRadiusClientStack::CRadiusClientStack           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">ACE_Allocator *&nbsp;</td>          <td class="mdname1" valign="top" nowrap> <em>p_allocator</em> = <code>NULL</code>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Constructor. <p><dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>p_allocator</em>&nbsp;</td><td>- allocator strategy </td></tr>  </table></dl>    </td>  </tr></table><hr><h2>Member Function Documentation</h2><a class="anchor" name="d0" doxytag="CRadiusClientStack::addConnection" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> int CRadiusClientStack::addConnection           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top"><a class="el" href="classCRadiusClientConnection.html">CRadiusClientConnection</a> *&nbsp;</td>          <td class="mdname1" valign="top" nowrap> <em>p_connection</em>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap><code> [private]</code></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Add connection. <p>Add new connection to the RADIUS client stack.<p><dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>p_connection</em>&nbsp;</td><td>- connection to be added to the stack </td></tr>  </table></dl><dl compact><dt><b>Returns:</b></dt><dd>RC_SUCCES or RC_FAIL </dd></dl>    </td>  </tr></table><a class="anchor" name="a2" doxytag="CRadiusClientStack::handleResponse" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> int CRadiusClientStack::handleResponse           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top"><a class="el" href="classCRadiusPacket.html">CRadiusPacket</a> *&nbsp;</td>          <td class="mdname" nowrap> <em>p_responsePacket</em>, </td>        </tr>        <tr>          <td class="md" nowrap align="right"></td>          <td></td>          <td class="md" nowrap><a class="el" href="classCRadiusPacket.html">CRadiusPacket</a> *&nbsp;</td>          <td class="mdname" nowrap> <em>p_requestPacket</em></td>        </tr>        <tr>          <td></td>          <td class="md">)&nbsp;</td>          <td class="md" colspan="2"><code> [virtual]</code></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Callback on response packet receive. <p>This callback may be used by user application to process response packet received from the network. Both response and associated request packets are passed to this callback as parameters.<p><dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>p_responsePacket</em>&nbsp;</td><td>- response packet </td></tr>    <tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>p_requestPacket</em>&nbsp;</td><td>- associated request packet </td></tr>  </table></dl><dl compact><dt><b>Returns:</b></dt><dd>RC_SUCCESS if request packet may be released; RC_FAIL otherwise (in this case application should take responsibility for packet release); note that there is no need to release responsePacket - it's ALWAYS automatically released; if user application needs to store response packet - it should copy it </dd></dl>

⌨️ 快捷键说明

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