libdb/docs/api_reference/C/repmgr_msg_dispatch.html
2012-11-14 16:35:20 -05:00

256 lines
10 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>DB_ENV-&gt;repmgr_msg_dispatch()</title>
<link rel="stylesheet" href="apiReference.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
<link rel="start" href="index.html" title="Berkeley DB C API Reference" />
<link rel="up" href="rep.html" title="Chapter 10.  Replication Methods" />
<link rel="prev" href="repmgrget_ack_policy.html" title="DB_ENV-&gt;repmgr_get_ack_policy()" />
<link rel="next" href="repmgrset_ack_policy.html" title="DB_ENV-&gt;repmgr_set_ack_policy()" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 11.2.5.3</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">DB_ENV-&gt;repmgr_msg_dispatch()</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="repmgrget_ack_policy.html">Prev</a> </td>
<th width="60%" align="center">Chapter 10. 
Replication Methods
</th>
<td width="20%" align="right"> <a accesskey="n" href="repmgrset_ack_policy.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="repmgr_msg_dispatch"></a>DB_ENV-&gt;repmgr_msg_dispatch()</h2>
</div>
</div>
</div>
<pre class="programlisting">#include &lt;db.h&gt;
int
DB_ENV-&gt;repmgr_msg_dispatch(DB_ENV *env,
void (*msg_dispatch_fcn) (DB_ENV *env, DB_CHANNEL *channel,
DBT *request, u_int32_t nrequest,
u_int32_t cb_flags),
u_int32_t flags); </pre>
<p>
Sets the message dispatch function. This function is responsible
for receiving messages sent from remote sites using either the
<a class="xref" href="dbchannel_send_msg.html" title="DB_CHANNEL-&gt;send_msg()">DB_CHANNEL-&gt;send_msg()</a>
or
<a class="xref" href="dbchannel_send_request.html" title="DB_CHANNEL-&gt;send_request()">DB_CHANNEL-&gt;send_request()</a>
methods. If the message received by this function was sent using the
<a class="xref" href="dbchannel_send_msg.html" title="DB_CHANNEL-&gt;send_msg()">DB_CHANNEL-&gt;send_msg()</a>
method then no response is required. If the message was sent using the
<a class="xref" href="dbchannel_send_request.html" title="DB_CHANNEL-&gt;send_request()">DB_CHANNEL-&gt;send_request()</a>
method, then this function must send a response using the
<a class="xref" href="dbchannel_send_msg.html" title="DB_CHANNEL-&gt;send_msg()">DB_CHANNEL-&gt;send_msg()</a>
method.
</p>
<p>
For best results, the
<code class="methodname">DB_ENV-&gt;repmgr_msg_dispatch()</code> method should
be called before the Replication Manager has been started.
</p>
<p>
The <code class="methodname">DB_ENV-&gt;repmgr_msg_dispatch()</code> <span>
<span>
method returns a non-zero error value on failure and 0 on success.
</span>
</span>
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp62351336"></a>Parameters</h3>
</div>
</div>
</div>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="idp62350688"></a>msg_dispatch_fcn</h4>
</div>
</div>
</div>
<p>
This parameter is the application-specific function used
to handle messages sent over Replication Manager message
channels. It takes four parameters:
</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p>
<code class="literal">channel</code>
</p>
<p>
Provides the DB_CHANNEL to be used to send
a response back to the originator of the message.
If the message was sent by the remote site using
<a class="xref" href="dbchannel_send_request.html" title="DB_CHANNEL-&gt;send_request()">DB_CHANNEL-&gt;send_request()</a>
then this function should send a response back to
the originator using the channel provided on this
parameter. The message should be sent by calling
<a class="xref" href="dbchannel_send_msg.html" title="DB_CHANNEL-&gt;send_msg()">DB_CHANNEL-&gt;send_msg()</a>
exactly once.
</p>
<p>
This channel is valid only during the current
invocation of the dispatch function; it is
destroyed when the dispatch function returns. The
application may not save a copy of the pointer and
use it later elsewhere. Methods that do not make
sense in the context of a message dispatch
function (such as
<a class="xref" href="dbchannel_send_request.html" title="DB_CHANNEL-&gt;send_request()">DB_CHANNEL-&gt;send_request()</a>
and
<a class="xref" href="dbchannel_close.html" title="DB_CHANNEL-&gt;close()">DB_CHANNEL-&gt;close()</a>)
will be rejected with <code class="literal">EINVAL</code>.
</p>
</li>
<li>
<p>
<code class="literal">request</code>
</p>
<p>
Array of DBTs containing the message
received from the remote site.
</p>
</li>
<li>
<p>
<code class="literal">nrequest</code>
</p>
<p>
Specifies the number of elements in the
<code class="literal">request</code> array.
</p>
</li>
<li>
<p>
<code class="literal">cb_flags</code>
</p>
<p>
This flag is
<code class="literal">DB_REPMGR_NEED_RESPONSE</code> if the
message requires a response. Otherwise, it is
<code class="literal">0</code>.
</p>
</li>
</ul>
</div>
<p>
This function does not return a value. If the function
encounters an error, you can reflect the error back to
the originator of the message by formatting an error
message of your own design into the response.
</p>
</div>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="idp62363264"></a>flags</h4>
</div>
</div>
</div>
<p>
This parameter is currently unused, and must be
set to 0.
</p>
</div>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp62357656"></a>Errors</h3>
</div>
</div>
</div>
<p>
The <code class="methodname">DB_ENV-&gt;repmgr_msg_dispatch()</code>
<span>
<span>
method may fail and return one of the following non-zero errors:
</span>
</span>
</p>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="idp62368144"></a>EINVAL</h4>
</div>
</div>
</div>
<p>
If this method is called from a Base API application,
or if an invalid flag value or parameter was specified.
</p>
</div>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp62367064"></a>Class</h3>
</div>
</div>
</div>
<p>
<a class="link" href="env.html" title="Chapter 5.  The DB_ENV Handle">DB_ENV</a>
</p>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp62363912"></a>See Also</h3>
</div>
</div>
</div>
<p>
<a class="xref" href="rep.html#replist" title="Replication and Related Methods">Replication and Related Methods</a>
</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="repmgrget_ack_policy.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="rep.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="repmgrset_ack_policy.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">DB_ENV-&gt;repmgr_get_ack_policy() </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> DB_ENV-&gt;repmgr_set_ack_policy()</td>
</tr>
</table>
</div>
</body>
</html>