<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Rampart/C: Replay Detector</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.5 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Replay Detector<br>
<small>
[<a class="el" href="group__rampart__utils.html">Rampart Utilities</a>]</small>
</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><b>rampart_replay_detector_ops</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><b>rampart_replay_detector</b></td></tr>

<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gaf06439254790a17acbfabb39da9761d"></a><!-- doxytag: member="rampart_replay_detector::RAMPART_REPLAY_DETECTOR_IS_REPLAYED" ref="gaf06439254790a17acbfabb39da9761d" args="(replay_detector, env, msg_ctx, rampart_context)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>RAMPART_REPLAY_DETECTOR_IS_REPLAYED</b>(replay_detector, env, msg_ctx, rampart_context)&nbsp;&nbsp;&nbsp;((replay_detector)-&gt;ops-&gt;is_replayed(replay_detector, env, msg_ctx, rampart_context))</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gde4ac5370a834241709af1857747c1a2"></a><!-- doxytag: member="rampart_replay_detector::RAMPART_REPLAY_DETECTOR_FREE" ref="gde4ac5370a834241709af1857747c1a2" args="(replay_detector, env)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>RAMPART_REPLAY_DETECTOR_FREE</b>(replay_detector, env)&nbsp;&nbsp;&nbsp;((replay_detector)-&gt;ops-&gt;free(replay_detector, env))</td></tr>

<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gce8d7436b80be65d615c4b41a8f64c8d"></a><!-- doxytag: member="rampart_replay_detector::rampart_replay_detector_ops_t" ref="gce8d7436b80be65d615c4b41a8f64c8d" args="" -->
typedef struct <br>
rampart_replay_detector_ops&nbsp;</td><td class="memItemRight" valign="bottom"><b>rampart_replay_detector_ops_t</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd5e7997bfd2ebfbbe40c94da2218edcf"></a><!-- doxytag: member="rampart_replay_detector::rampart_replay_detector_t" ref="gd5e7997bfd2ebfbbe40c94da2218edcf" args="" -->
typedef struct <br>
rampart_replay_detector&nbsp;</td><td class="memItemRight" valign="bottom"><b>rampart_replay_detector_t</b></td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">AXIS2_EXTERN axis2_status_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rampart__replay__detector.html#g4756e582a1bde89023b0e7ac63ee4d38">rampart_replay_detector_default</a> (const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, void *user_params)</td></tr>

</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g4756e582a1bde89023b0e7ac63ee4d38"></a><!-- doxytag: member="rampart_replay_detector.h::rampart_replay_detector_default" ref="g4756e582a1bde89023b0e7ac63ee4d38" args="(const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx, rampart_context_t *rampart_context, void *user_params)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t rampart_replay_detector_default           </td>
          <td>(</td>
          <td class="paramtype">const axutil_env_t *&nbsp;</td>
          <td class="paramname"> <em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axis2_msg_ctx_t *&nbsp;</td>
          <td class="paramname"> <em>msg_ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">rampart_context_t *&nbsp;</td>
          <td class="paramname"> <em>rampart_context</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_params</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
A linked list based implementation for replay detection. This doesnt require addressing headers to be present. If the user doesn't give any replay detection function, then this will be used. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>pointer to environment struct,Must not be NULL. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>msg_ctx</em>&nbsp;</td><td>message context structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rampart_context</em>&nbsp;</td><td>rampart context structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_params</em>&nbsp;</td><td>parameters given by user. (Not used in this method) </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error </dd></dl>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 13 10:52:55 2009 for Rampart/C by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>
</html>
