<refentry id="linc-LINCConnection">
<refmeta>
<refentrytitle>LINCConnection</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>LINC Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>LINCConnection</refname><refpurpose>the basic connection object</refpurpose>
</refnamediv>

<refsynopsisdiv><title>Synopsis</title>

<synopsis>



enum        <link linkend="LINCConnectionStatus">LINCConnectionStatus</link>;
<link linkend="gboolean">gboolean</link>    <link linkend="linc-connection-from-fd">linc_connection_from_fd</link>         (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             int fd,
                                             const <link linkend="LINCProtocolInfo">LINCProtocolInfo</link> *proto,
                                             <link linkend="gchar">gchar</link> *remote_host_info,
                                             <link linkend="gchar">gchar</link> *remote_serv_info,
                                             <link linkend="gboolean">gboolean</link> was_initiated,
                                             <link linkend="LINCConnectionStatus">LINCConnectionStatus</link> status,
                                             <link linkend="LINCConnectionOptions">LINCConnectionOptions</link> options);
<link linkend="gboolean">gboolean</link>    <link linkend="linc-connection-initiate">linc_connection_initiate</link>        (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             const char *proto_name,
                                             const char *remote_host_info,
                                             const char *remote_serv_info,
                                             <link linkend="LINCConnectionOptions">LINCConnectionOptions</link> options);
<link linkend="glong">glong</link>       <link linkend="linc-connection-read">linc_connection_read</link>            (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             <link linkend="guchar">guchar</link> *buf,
                                             int len,
                                             <link linkend="gboolean">gboolean</link> block_for_full_read);
<link linkend="LINCIOStatus">LINCIOStatus</link> <link linkend="linc-connection-write">linc_connection_write</link>          (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             const <link linkend="guchar">guchar</link> *buf,
                                             <link linkend="gulong">gulong</link> len,
                                             const <link linkend="LINCWriteOpts">LINCWriteOpts</link> *opt_write_opts);
<link linkend="LINCIOStatus">LINCIOStatus</link> <link linkend="linc-connection-writev">linc_connection_writev</link>         (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             struct <link linkend="iovec">iovec</link> *vecs,
                                             int nvecs,
                                             const <link linkend="LINCWriteOpts">LINCWriteOpts</link> *opt_write_opts);
void        <link linkend="linc-connection-state-changed">linc_connection_state_changed</link>   (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             <link linkend="LINCConnectionStatus">LINCConnectionStatus</link> status);

</synopsis>
</refsynopsisdiv>







<refsect1>
<title>Description</title>
<para>

</para>
</refsect1>

<refsect1>
<title>Details</title>
<refsect2>
<title><anchor id="LINCConnectionStatus">enum LINCConnectionStatus</title>
<programlisting>typedef enum { LINC_CONNECTING, LINC_CONNECTED, LINC_DISCONNECTED } LINCConnectionStatus;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="linc-connection-from-fd">linc_connection_from_fd ()</title>
<programlisting><link linkend="gboolean">gboolean</link>    linc_connection_from_fd         (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             int fd,
                                             const <link linkend="LINCProtocolInfo">LINCProtocolInfo</link> *proto,
                                             <link linkend="gchar">gchar</link> *remote_host_info,
                                             <link linkend="gchar">gchar</link> *remote_serv_info,
                                             <link linkend="gboolean">gboolean</link> was_initiated,
                                             <link linkend="LINCConnectionStatus">LINCConnectionStatus</link> status,
                                             <link linkend="LINCConnectionOptions">LINCConnectionOptions</link> options);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>cnx</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>fd</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>proto</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>remote_host_info</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>remote_serv_info</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>was_initiated</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>status</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>options</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="linc-connection-initiate">linc_connection_initiate ()</title>
<programlisting><link linkend="gboolean">gboolean</link>    linc_connection_initiate        (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             const char *proto_name,
                                             const char *remote_host_info,
                                             const char *remote_serv_info,
                                             <link linkend="LINCConnectionOptions">LINCConnectionOptions</link> options);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>cnx</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>proto_name</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>remote_host_info</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>remote_serv_info</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>options</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="linc-connection-read">linc_connection_read ()</title>
<programlisting><link linkend="glong">glong</link>       linc_connection_read            (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             <link linkend="guchar">guchar</link> *buf,
                                             int len,
                                             <link linkend="gboolean">gboolean</link> block_for_full_read);</programlisting>
<para>
Warning, block_for_full_read is of limited usefullness.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>cnx</parameter>&nbsp;:</term>
<listitem><simpara> the connection to write to
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>buf</parameter>&nbsp;:</term>
<listitem><simpara> a pointer to the start of an array of bytes to read data into
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>len</parameter>&nbsp;:</term>
<listitem><simpara> the length of the array in bytes to read ingo
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>block_for_full_read</parameter>&nbsp;:</term>
<listitem><simpara> whether to block for a full read
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> number of bytes written on success; negative on error.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="linc-connection-write">linc_connection_write ()</title>
<programlisting><link linkend="LINCIOStatus">LINCIOStatus</link> linc_connection_write          (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             const <link linkend="guchar">guchar</link> *buf,
                                             <link linkend="gulong">gulong</link> len,
                                             const <link linkend="LINCWriteOpts">LINCWriteOpts</link> *opt_write_opts);</programlisting>
<para>
Writes a contiguous block of data to the abstract connection.
</para>
<para>
FIXME: it allows re-enterancy via linc_connection_iterate
       in certain cases.
FIXME: on this basis, the connection can die underneath
       our feet eg. between the main_iteration and the
       g_return_if_fail.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>cnx</parameter>&nbsp;:</term>
<listitem><simpara> the connection to write to
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>buf</parameter>&nbsp;:</term>
<listitem><simpara> a pointer to the start of an array of bytes
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>len</parameter>&nbsp;:</term>
<listitem><simpara> the length of the array in bytes
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>opt_write_opts</parameter>&nbsp;:</term>
<listitem><simpara> optional write options, or NULL
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> 0 on success, non 0 on error.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="linc-connection-writev">linc_connection_writev ()</title>
<programlisting><link linkend="LINCIOStatus">LINCIOStatus</link> linc_connection_writev         (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             struct <link linkend="iovec">iovec</link> *vecs,
                                             int nvecs,
                                             const <link linkend="LINCWriteOpts">LINCWriteOpts</link> *opt_write_opts);</programlisting>
<para>
This routine writes data to the abstract connection.
FIXME: it allows re-enterancy via linc_connection_iterate
       in certain cases.
FIXME: on this basis, the connection can die underneath
       our feet.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>cnx</parameter>&nbsp;:</term>
<listitem><simpara> the connection to write to
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>vecs</parameter>&nbsp;:</term>
<listitem><simpara> a structure of iovecs to write - this is altered.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nvecs</parameter>&nbsp;:</term>
<listitem><simpara> the number of populated iovecs
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>opt_write_opts</parameter>&nbsp;:</term>
<listitem><simpara> optional write options, or NULL
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> 0 on success, non 0 on error.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="linc-connection-state-changed">linc_connection_state_changed ()</title>
<programlisting>void        linc_connection_state_changed   (<link linkend="LINCConnection">LINCConnection</link> *cnx,
                                             <link linkend="LINCConnectionStatus">LINCConnectionStatus</link> status);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>cnx</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>status</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
