• Skip to content
  • Skip to link menu
KDE 3.5 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

dcop

ICEconn.h

Go to the documentation of this file.
00001 /* $Xorg: ICEconn.h,v 1.4 2000/08/17 19:44:10 cpqbld Exp $ */
00002 /******************************************************************************
00003 
00004 
00005 Copyright 1993, 1998  The Open Group
00006 
00007 All Rights Reserved.
00008 
00009 The above copyright notice and this permission notice shall be included in
00010 all copies or substantial portions of the Software.
00011 
00012 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00013 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00014 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
00015 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
00016 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
00017 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00018 
00019 Except as contained in this notice, the name of The Open Group shall not be
00020 used in advertising or otherwise to promote the sale, use or other dealings
00021 in this Software without prior written authorization from The Open Group.
00022 
00023 Author: Ralph Mor, X Consortium
00024 ******************************************************************************/
00025 
00026 #ifndef _ICECONN_H_
00027 #define _ICECONN_H_
00028 
00029 #include "KDE-ICE/ICElib.h"
00030 
00031 /*
00032  * Data structures for ICE connection object
00033  */
00034 
00035 typedef struct _IceSavedReplyWait {
00036     IceReplyWaitInfo        *reply_wait;
00037     Bool            reply_ready;
00038     struct _IceSavedReplyWait   *next;
00039 } _IceSavedReplyWait;
00040 
00041 typedef struct _IcePingWait {
00042     IcePingReplyProc        ping_reply_proc;
00043     IcePointer          client_data;
00044     struct _IcePingWait     *next;
00045 } _IcePingWait;
00046 
00047 typedef struct {
00048     char        *vendor;
00049     char        *release;
00050     int         version_count;
00051     IcePoVersionRec *version_recs;
00052     int         auth_count;
00053     char        **auth_names;
00054     IcePoAuthProc   *auth_procs;
00055     IceIOErrorProc  io_error_proc;
00056 } _IcePoProtocol;
00057 
00058 typedef struct {
00059     char            *vendor;
00060     char            *release;
00061     int             version_count;
00062     IcePaVersionRec     *version_recs;
00063     IceProtocolSetupProc    protocol_setup_proc;
00064     IceProtocolActivateProc protocol_activate_proc;
00065     int             auth_count;
00066     char            **auth_names;
00067     IcePaAuthProc       *auth_procs;
00068     IceHostBasedAuthProc    host_based_auth_proc;
00069     IceIOErrorProc      io_error_proc;
00070 } _IcePaProtocol;
00071 
00072 typedef struct {
00073     char        *protocol_name;
00074     _IcePoProtocol  *orig_client;
00075     _IcePaProtocol      *accept_client;
00076 } _IceProtocol;
00077 
00078 typedef struct {
00079     Bool            in_use;
00080     int             my_opcode;
00081     _IceProtocol        *protocol;
00082     IcePointer          client_data;
00083     Bool            accept_flag;
00084     union {
00085     IcePaProcessMsgProc accept_client;
00086     IcePoProcessMsgProc orig_client;
00087     } process_msg_proc;
00088 } _IceProcessMsgInfo;
00089 
00090 typedef struct {
00091     int     his_version_index;
00092     int     my_version_index;
00093     char    *his_vendor;
00094     char    *his_release;
00095     char    my_auth_index;
00096     IcePointer  my_auth_state;
00097     Bool    must_authenticate;
00098 } _IceConnectToMeInfo;
00099 
00100 typedef struct {
00101     int     his_opcode;
00102     int     my_opcode;
00103     int     his_version_index;
00104     int     my_version_index;
00105     char    *his_vendor;
00106     char    *his_release;
00107     char    my_auth_index;
00108     IcePointer  my_auth_state;
00109     Bool    must_authenticate;
00110 } _IceProtoSetupToMeInfo;
00111 
00112 typedef struct {
00113     Bool    auth_active;
00114     char    my_auth_index;
00115     IcePointer  my_auth_state;
00116 } _IceConnectToYouInfo;
00117 
00118 typedef struct {
00119     int     my_opcode;
00120     int     my_auth_count;
00121     int     *my_auth_indices;
00122     Bool    auth_active;
00123     char    my_auth_index;
00124     IcePointer  my_auth_state;
00125 } _IceProtoSetupToYouInfo;
00126 
00127 
00128 struct _IceConn {
00129 
00130     unsigned int io_ok : 1;          /* did an IO error occur? */
00131     unsigned int swap : 1;               /* do we need to swap on reads? */
00132     unsigned int waiting_for_byteorder : 1;  /* waiting for a ByteOrder msg? */
00133     unsigned int skip_want_to_close : 1;     /* avoid shutdown negotiation? */
00134     unsigned int want_to_close : 1;      /* did we send a WantToClose? */
00135     unsigned int free_asap : 1;          /* free as soon as possible */
00136     unsigned int unused1 : 2;            /* future use */
00137     unsigned int unused2 : 8;            /* future use */
00138 
00139     IceConnectStatus connection_status; /* pending, accepted, rejected */
00140 
00141     unsigned char my_ice_version_index; /* which version are we using? */
00142 
00143     struct _XtransConnInfo *trans_conn; /* transport connection object */
00144     unsigned long send_sequence;        /* Sequence # of last msg sent */
00145     unsigned long receive_sequence;     /* Sequence # of last msg received */
00146 
00147     char *connection_string;        /* network connection string */
00148     char *vendor;           /* other client's vendor */
00149     char *release;          /* other client's release */
00150 
00151     char *inbuf;            /* Input buffer starting address */
00152     char *inbufptr;         /* Input buffer index pointer */
00153     char *inbufmax;         /* Input buffer maximum+1 address */
00154 
00155     char *outbuf;           /* Output buffer starting address */
00156     char *outbufptr;            /* Output buffer index pointer */
00157     char *outbufmax;            /* Output buffer maximum+1 address */
00158 
00159     char *scratch;          /* scratch buffer */
00160     unsigned long scratch_size;     /* scratch size */
00161 
00162     int dispatch_level;         /* IceProcessMessages dispatch level */
00163 
00164     IcePointer context;         /* context associated with caller
00165                        of IceOpenConnection */
00166 
00167     /*
00168      * Before we read a message, the major opcode of the message must be
00169      * mapped to our corresponding major opcode (the two clients can use
00170      * different opcodes for the same protocol).  In order to save space,
00171      * we keep track of the mininum and maximum major opcodes used by the
00172      * other client.  To get the information on how to process this message,
00173      * we do the following...
00174      *
00175      * processMsgInfo = iceConn->process_msg_info[
00176      *     message->majorOpcode - iceConn->his_min_opcode]
00177      *
00178      * Note that the number of elements in the iceConn->process_msg_info
00179      * array is always (iceConn->his_max_opcode - iceConn->his_min_opcode + 1).
00180      * We check process_msg_info->in_use to see if the opcode is being used.
00181      */
00182 
00183     _IceProcessMsgInfo      *process_msg_info;
00184     char            his_min_opcode;   /* [1..255] */
00185     char            his_max_opcode;   /* [1..255] */
00186 
00187 
00188     /*
00189      * Number of times this iceConn was returned in IceOpenConnection
00190      * or IceAcceptConnection.
00191      */
00192 
00193     unsigned char       open_ref_count;
00194 
00195 
00196     /*
00197      * Number of active protocols.
00198      */
00199 
00200     unsigned char       proto_ref_count;
00201 
00202 
00203     /*
00204      * If this ICE connection was created with IceAcceptConnection,
00205      * the listen_obj field is set to the listen object.  Otherwise,
00206      * the listen_obj field is NULL.
00207      */
00208 
00209     IceListenObj        listen_obj;
00210 
00211 
00212 
00213 
00214     /*
00215      * We need to keep track of all the replies we're waiting for.
00216      * Check the comments in process.c for how this works.
00217      */
00218 
00219     _IceSavedReplyWait      *saved_reply_waits;
00220 
00221 
00222     /*
00223      * We keep track of all Pings sent from the client.  When the Ping reply
00224      * arrives, we remove it from the list.
00225      */
00226 
00227     _IcePingWait        *ping_waits;
00228 
00229 
00230     /*
00231      * Some state for a client doing a Connection/Protocol Setup
00232      */
00233 
00234     _IceConnectToYouInfo    *connect_to_you;
00235     _IceProtoSetupToYouInfo *protosetup_to_you;
00236 
00237 
00238     /*
00239      * Some state for a client receiving a Connection/Protocol Setup
00240      */
00241 
00242     _IceConnectToMeInfo     *connect_to_me;
00243     _IceProtoSetupToMeInfo  *protosetup_to_me;
00244 
00245 };
00246 
00247 #endif /* _ICECONN_H_ */

dcop

Skip menu "dcop"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

API Reference

Skip menu "API Reference"
  • dcop
  • DNSSD
  • interfaces
  • Kate
  • kconf_update
  • KDECore
  • KDED
  • kdefx
  • KDEsu
  • kdeui
  • KDocTools
  • KHTML
  • KImgIO
  • KInit
  • kio
  • kioslave
  • KJS
  • KNewStuff
  • KParts
  • KUtils
Generated for API Reference by doxygen 1.5.9
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal