]> rtime.felk.cvut.cz Git - orte.git/blobdiff - orte/include/protos.h
Document gAVL, linked list and queue declaration
[orte.git] / orte / include / protos.h
index ba9dbe45d8deddf45fb8ee03ea06a00530a95b70..c6b1aeb4de8e6159c0ae31c7070368aa72439045 100644 (file)
@@ -1,9 +1,18 @@
 /*
  *  $Id: protos.h,v 0.0.0.1             2003/08/21 
  *
- *  AUTHOR: Petr Smolik                 petr.smolik@wo.cz
- *
- *  ORTE - OCERA Real-Time Ethernet     http://www.ocera.org/
+ *  -------------------------------------------------------------------  
+ *                                ORTE                                 
+ *                      Open Real-Time Ethernet                       
+ *                                                                    
+ *                      Copyright (C) 2001-2006                       
+ *  Department of Control Engineering FEE CTU Prague, Czech Republic  
+ *                      http://dce.felk.cvut.cz                       
+ *                      http://www.ocera.org                          
+ *                                                                    
+ *  Author:             Petr Smolik    petr.smolik@wo.cz             
+ *  Advisor:            Pavel Pisa                                   
+ *  Project Responsible: Zdenek Hanzalek                              
  *  --------------------------------------------------------------------
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -36,48 +45,42 @@ sock_init_udp(sock_t *sock);
 extern void
 sock_cleanup(sock_t *sock);
 extern int
-sock_setsockopt(sock_t *sock,int optname,const char *optval, int optlen);
+sock_setsockopt(sock_t *sock,int level,int optname,const char *optval, int optlen);
 extern int
-sock_getsockopt(sock_t *sock,int optname,char *optval, int *optlen);
+sock_getsockopt(sock_t *sock,int level,int optname,char *optval, int *optlen);
 extern int
-sock_bind(sock_t *sock,u_int16_t port);
+sock_bind(sock_t *sock,uint16_t port, IPAddress listen);
 extern int
 sock_recvfrom(sock_t *sock, void *buf, int max_len,struct sockaddr_in *des,int des_len);
 extern int
 sock_sendto(sock_t *sock, void *buf, int len,struct sockaddr_in *des,int des_len);
 extern int
-sock_ioctl(sock_t *sock, int cmd, int *arg);
+sock_ioctl(sock_t *sock, long cmd, unsigned long *arg);
 extern int
 sock_get_local_interfaces(sock_t *sock,ORTEIFProp *IFProp,char *IFCount);
 
 ///////////////////////////////////////////////////////////////////////////////
 // conv.c
-extern void 
-conv_u16(u_int16_t *x,char ef);
-extern void 
-conv_u32(u_int32_t *x,char ef);
-extern void 
-conv_sn(SequenceNumber *sn,char ef);
-extern void 
-conv_ntp(NtpTime *ntp,char ef);
+extern int
+getStringPart(char *string,char divChar,int *iterator,char *buff);
 
 ///////////////////////////////////////////////////////////////////////////////
 // htimerNtp.c
 // htimerRoot
-UL_HTIMER_DEC(htimerRoot, \
-      ObjectEntry, \
-      HTimFncRootNode, \
-      htimRoot, \
-      htim) 
+UL_HTIMER_DEC(htimerRoot,          /* prefix */
+             ObjectEntry,          /* queue_t */
+             HTimFncRootNode,      /* timer_t */
+             htimRoot,             /* queue_field */
+             htim)                 /* timer_field */
 extern void
 htimerRoot_run_expired(ORTEDomain *d, 
       ul_htim_time_t *pact_time);
 // htimerUnicastCommon
-UL_HTIMER_DEC(htimerUnicastCommon, \
-      ObjectEntryAID, \
-      HTimFncUserNode, \
-      htimUnicast.common, \
-      htim) 
+UL_HTIMER_DEC(htimerUnicastCommon,  /* prefix */
+             ObjectEntryAID,       /* queue_t */
+             HTimFncUserNode,      /* timer_t */
+             htimUnicast.common,   /* queue_field */
+             htim)                 /* timer_field */
 extern void
 htimerUnicastCommon_update_root_timer(ObjectEntry *objectEntry,
       ObjectEntryAID *objectEntryAID);
@@ -86,11 +89,11 @@ htimerUnicastCommon_run_expired(ORTEDomain *d,
       ObjectEntryAID *objectEntryAID, 
       ul_htim_time_t *pact_time);
 // htimerUnicastSendMetatraffic
-UL_HTIMER_DEC(htimerUnicastSendMetatraffic, \
-      ObjectEntryAID, \
-      HTimFncUserNode, \
-      htimUnicast.sendMetatraffic, \
-      htim) 
+UL_HTIMER_DEC(htimerUnicastSendMetatraffic,  /* prefix */
+             ObjectEntryAID,                /* queue_t */
+             HTimFncUserNode,               /* timer_t */
+             htimUnicast.sendMetatraffic,   /* queue_field */
+             htim)                          /* timer_field */
 extern void
 htimerUnicastSendMetatraffic_update_root_timer(ObjectEntry *objectEntry,
       ObjectEntryAID *objectEntryAID);
@@ -99,11 +102,11 @@ htimerUnicastSendMetatraffic_run_expired(ORTEDomain *d,
       ObjectEntryAID *objectEntryAID, 
       ul_htim_time_t *pact_time);
 // htimerUnicastSendUserData
-UL_HTIMER_DEC(htimerUnicastSendUserData, \
-      ObjectEntryAID, \
-      HTimFncUserNode, \
-      htimUnicast.sendUserData, \
-      htim) 
+UL_HTIMER_DEC(htimerUnicastSendUserData,     /* prefix */
+             ObjectEntryAID,                /* queue_t */
+             HTimFncUserNode,               /* timer_t */
+             htimUnicast.sendUserData,      /* queue_field */
+             htim)                          /* timer_field */
 extern void
 htimerUnicastSendUserData_update_root_timer(ObjectEntry *objectEntry,
       ObjectEntryAID *objectEntryAID);
@@ -139,12 +142,39 @@ fnmatch(const char *__pattern,const char *__string,int __flags);
 
 ///////////////////////////////////////////////////////////////////////////////
 // objectEntry.c
-GAVL_CUST_NODE_INT_DEC(ObjectEntryHID, ObjectEntry, ObjectEntryHID, HostId,
-    objRoot, hidNode, hid, gavl_cmp_int)
-GAVL_CUST_NODE_INT_DEC(ObjectEntryAID, ObjectEntryHID, ObjectEntryAID, AppId,
-    aidRoot, aidNode, aid, gavl_cmp_int)
-GAVL_CUST_NODE_INT_DEC(ObjectEntryOID, ObjectEntryAID, ObjectEntryOID, ObjectId,
-    oidRoot, oidNode, oid, gavl_cmp_int)
+UL_LIST_CUST_DEC(ObjectEntryMulticast,   /* prefix */
+                ObjectEntryOID,          /* head_t */
+                CSTRemoteReader,         /* item_t */
+                multicastRemoteReaders,  /* head_field */
+                multicastNode);          /* node_field */
+
+GAVL_CUST_NODE_INT_DEC(ObjectEntryHID,   /* prefix */
+                      ObjectEntry,       /* root_t */
+                      ObjectEntryHID,    /* item_t */
+                      HostId,            /* key_t */
+                      objRoot,           /* root_node */
+                      hidNode,           /* item_node */
+                      hid,               /* item_key */
+                      gavl_cmp_int)      /* cmp_fnc */
+
+GAVL_CUST_NODE_INT_DEC(ObjectEntryAID,   /* prefix */
+                      ObjectEntryHID,    /* root_t */
+                      ObjectEntryAID,    /* item_t */
+                      AppId,             /* key_t */
+                      aidRoot,           /* root_node */
+                      aidNode,           /* item_node */
+                      aid,               /* item_key */
+                      gavl_cmp_int)      /* cmp_fnc */
+
+GAVL_CUST_NODE_INT_DEC(ObjectEntryOID,   /* prefix */
+                      ObjectEntryAID,    /* root_t */
+                      ObjectEntryOID,    /* item_t */
+                      ObjectId,          /* key_t */
+                      oidRoot,           /* root_node */
+                      oidNode,           /* item_node */
+                      oid,               /* item_key */
+                      gavl_cmp_int)      /* cmp_fnc */
+
 extern void
 objectEntryRefreshApp(ORTEDomain *d,ObjectEntryOID *objectEntryOID);
 extern ObjectEntryOID *
@@ -152,7 +182,7 @@ objectEntryFind(ORTEDomain *d,GUID_RTPS *guid);
 extern ObjectEntryOID *
 objectEntryAdd(ORTEDomain *d,GUID_RTPS *guid,void *params);
 extern int
-objectEntryDelete(ORTEDomain *d,ObjectEntryOID *objectEntryOID);
+objectEntryDelete(ORTEDomain *d,ObjectEntryOID *objectEntryOID,Boolean destroy);
 extern void
 objectEntryDeleteAll(ORTEDomain *d,ObjectEntry *objectEntry);
 extern void
@@ -173,7 +203,16 @@ generateEvent(ORTEDomain *d,GUID_RTPS *guid,void *params,Boolean live);
 extern Boolean
 getTypeApp(ORTEDomain *d,AppParams *ap,IPAddress senderIPAddress);
 extern void 
-appSelfParamChanged(ORTEDomain *d,Boolean lock,Boolean unlock,Boolean forWM);
+appSelfParamChanged(ORTEDomain *d,Boolean lock,Boolean unlock,
+   Boolean forWM,Boolean alive);
+extern Boolean
+matchMulticastAddresses(ObjectEntryOID *o1,ObjectEntryOID *o2);
+extern ObjectEntryOID *
+getAppO2SRemoteReader(ORTEDomain *d,ObjectEntryOID *objectEntryOID,
+    AppParams *ap);
+extern ObjectEntryOID *
+getSubsO2SRemoteReader(ORTEDomain *d,ObjectEntryOID *objectEntryOID,
+    ORTESubsProp *sp);
 
 ///////////////////////////////////////////////////////////////////////////////
 // event.c
@@ -189,17 +228,19 @@ eventDetach(ORTEDomain *d,
 
 ///////////////////////////////////////////////////////////////////////////////
 // parameter.c
-UL_LIST_CUST_DEC(CSChangeAttributes,
-                 CSChange,ParameterSequence,
-                 attributes,node);
+UL_LIST_CUST_DEC(CSChangeAttributes,     /* prefix */
+                CSChange,                /* head_t */
+                ParameterSequence,       /* item_t */
+                attributes,              /* head_field */
+                node);                   /* node_field */
+extern int
+parameterGetDataLength(CSChange *csChange);
 extern int
 parameterDelete(CSChange *csChange);
 extern int
-parameterCodeStreamFromCSChange(CSChange *csChange,
-    u_int8_t *rtps_msg,u_int32_t max_msg_len);
+parameterCodeCodecFromCSChange(CSChange *csChange,CDR_Codec *cdrCodec);
 extern int
-parameterDecodeStreamToCSChange(CSChange *csChange,u_int8_t *rtps_msg,
-    u_int16_t submsg_len,u_int8_t needByteSwap);
+parameterDecodeCodecToCSChange(CSChange *csChange,CDR_Codec *cdrCodec);
 extern int
 parameterUpdateCSChange(
      CSChange *csChange,AppParams *ap,Boolean Manager);
@@ -223,136 +264,168 @@ objectEntryExpirationTimer(ORTEDomain *d,void *vobjectEntryOID);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTETypeRegister.c
-GAVL_CUST_NODE_INT_DEC(ORTEType, TypeEntry, TypeNode, char *,
-    types, node, typeRegister.typeName, gavl_cmp_str)
+GAVL_CUST_NODE_INT_DEC(ORTEType,             /* prefix */
+                      TypeEntry,             /* root_t */
+                      TypeNode,              /* item_t */
+                      const char *,          /* key_t */
+                      types,                 /* root_node */
+                      node,                  /* item_node */
+                      typeRegister.typeName, /* item_key */
+                      gavl_cmp_str)          /* cmp_fnc */
 
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTEThreadUtils.c
 extern void
-ORTEDomainWakeUpReceivingThread(ORTEDomain *d,sock_t *sock,u_int16_t port);
+ORTEDomainWakeUpReceivingThread(ORTEDomain *d,sock_t *sock,uint16_t port);
 extern void
 ORTEDomainWakeUpSendingThread(ObjectEntry *objectEntry);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTEAppRecvMetatrafficThread.c
 extern void 
-ORTEAppRecvMetatrafficThread(ORTEDomain *d);
+ORTEAppRecvThread(TaskProp *tp);
 
-///////////////////////////////////////////////////////////////////////////////
-// ORTEAppRecvUserdataThread.c
-extern void 
-ORTEAppRecvUserdataThread(ORTEDomain *d);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTEAppSendThread.c
 extern void 
 ORTESendData(ORTEDomain *d,ObjectEntryAID *objectEntryAID,Boolean meta);
+extern void 
+ORTEAppSendThread(TaskProp *tp);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSHeader.c
-extern int16_t 
-RTPSHeaderCreate(u_int8_t *msg,HostId hid,AppId aid);
-extern int16_t 
-RTPSHeaderCheck(u_int8_t *msg,int32_t len,MessageInterpret *mi);
+extern int
+RTPSHeaderCreate(CDR_Codec *cdrCodec,HostId hid,AppId aid);
+extern int 
+RTPSHeaderCheck(CDR_Codec *cdrCodec,int32_t len,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSPad.c
 extern void 
-RTPSPad(u_int8_t *rtps_msg,MessageInterpret *mi);
+RTPSPad(CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSInfoDST.c
 extern void 
-RTPSInfoDST(u_int8_t *rtps_msg,MessageInterpret *mi);
+RTPSInfoDST(CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSInfoREPLY.c
-extern void 
-RTPSInfoREPLY(u_int8_t *rtps_msg,MessageInterpret *mi);
+extern int 
+RTPSInfoREPLYCreate(CDR_Codec *cdrCodec,IPAddress ipaddress,Port port);
+void 
+RTPSInfoREPLY(CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
-// RTPSInfoREPLY.c
-extern int32_t 
-RTPSInfoREPLYCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,
-    IPAddress ipaddress,Port port);
+// RTPSInfoSRC.c
 extern void 
-RTPSInfoSRC(u_int8_t *rtps_msg,MessageInterpret *mi);
+RTPSInfoSRC(CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSInfoTS.c
-extern int32_t 
-RTPSInfoTSCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,NtpTime time);
+extern int
+RTPSInfoTSCreate(CDR_Codec *cdrCodec,NtpTime time);
 extern void 
-RTPSInfoTS(u_int8_t *rtps_msg,MessageInterpret *mi);
+RTPSInfoTS(CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSVar.c
+extern int 
+RTPSVarCreate(CDR_Codec *cdrCodec,ObjectId roid,ObjectId woid,CSChange *csChange);
 extern void 
-RTPSVar(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
+RTPSVar(ORTEDomain *d,CDR_Codec *cdrCodec,MessageInterpret *mi,IPAddress senderIPAddress);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSAck.c
-extern int32_t 
-RTPSAckCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,
+extern int
+RTPSAckCreate(CDR_Codec *cdrCodec,
     SequenceNumber *seqNumber,
     ObjectId roid,ObjectId woid,Boolean f_bit);
 extern void 
-RTPSAck(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
+RTPSAck(ORTEDomain *d,CDR_Codec *cdrCodec,MessageInterpret *mi,IPAddress senderIPAddress);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSHeardBeat.c
 extern int 
-RTPSHeardBeatCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,
-    SequenceNumber *firstSeqNumber,SequenceNumber *lastSeqNumber,
-    ObjectId woid,ObjectId roid,Boolean f_bit);
+RTPSHeartBeatCreate(CDR_Codec *cdrCodec,
+    SequenceNumber *fsn,SequenceNumber *lsn,
+    ObjectId roid,ObjectId woid,Boolean f_bit);
 extern void 
-RTPSHeardBeat(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi);
+RTPSHeartBeat(ORTEDomain *d,CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSGap.c
-extern void 
-RTPSGap(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
+extern int 
+RTPSGapCreate(CDR_Codec *cdrCodec,ObjectId roid,ObjectId woid,CSChange *csChange);
+void 
+RTPSGap(ORTEDomain *d,CDR_Codec *cdrCodec,MessageInterpret *mi,IPAddress senderIPAddress);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSIssue.c
-extern int32_t
-RTPSIssueCreateHeader(u_int8_t *rtps_msg,u_int32_t max_msg_len,u_int32_t length,
+extern int
+RTPSIssueCreateHeader(CDR_Codec *cdrCodec,uint32_t length,
     ObjectId roid,ObjectId woid,SequenceNumber sn);
 extern void 
-RTPSIssue(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
+RTPSIssue(ORTEDomain *d,CDR_Codec *cdrCodec,MessageInterpret *mi,IPAddress senderIPAddress);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSUtils.c
 extern int gavl_cmp_ntp_time(const NtpTime *a,const NtpTime *b);
 extern int gavl_cmp_sn(const SequenceNumber *a, const SequenceNumber *b); 
 extern int gavl_cmp_guid(const GUID_RTPS *a, const GUID_RTPS *b); 
-extern int gavl_cmp_str(char *const *a,char *const *b);
-extern int getMaxMessageLength(ORTEDomain *d);
+extern int gavl_cmp_str(const char *const *a,const char *const *b);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSCSTWriter.c
-UL_LIST_CUST_DEC(CSTWriterCSChange,
-                 CSTWriter,CSChange,
-                 csChanges,nodeList);
-GAVL_CUST_NODE_INT_DEC(CSTWriter, 
-                       CSTPublications, CSTWriter, GUID_RTPS,
-                       cstWriter, node, guid, gavl_cmp_guid);
-GAVL_CUST_NODE_INT_DEC(CSTRemoteReader, 
-                       CSTWriter, CSTRemoteReader, GUID_RTPS,
-                       cstRemoteReader, node, guid, gavl_cmp_guid);
-GAVL_CUST_NODE_INT_DEC(CSChangeForReader,
-                       CSTRemoteReader, CSChangeForReader, SequenceNumber,
-                       csChangeForReader, node, csChange->sn, gavl_cmp_sn);
+UL_LIST_CUST_DEC(CSTWriterCSChange,      /* prefix */
+                CSTWriter,               /* head_t */
+                CSChange,                /* item_t */
+                csChanges,               /* head_field */
+                nodeList);               /* node_field */
+
+UL_LIST_CUST_DEC(CSChangeParticipant,    /* prefix */
+                CSChange,                /* head_t */
+                CSChangeForReader,       /* item_t */
+                writerParticipants,      /* head_field */
+                participantNode);        /* node_field */
+
+GAVL_CUST_NODE_INT_DEC(CSTWriter,        /* prefix */
+                      CSTPublications,   /* root_t */
+                      CSTWriter,         /* item_t */
+                      GUID_RTPS,         /* key_t */
+                      cstWriter,         /* root_node */
+                      node,              /* item_node */
+                      guid,              /* item_key */
+                      gavl_cmp_guid);    /* cmp_fnc */
+
+GAVL_CUST_NODE_INT_DEC(CSTRemoteReader,          /* prefix */
+                      CSTWriter,         /* root_t */
+                      CSTRemoteReader,   /* item_t */
+                      GUID_RTPS,         /* key_t */
+                      cstRemoteReader,   /* root_node */
+                      node,              /* item_node */
+                      guid,              /* item_key */
+                      gavl_cmp_guid);    /* cmp_fnc */
+
+GAVL_CUST_NODE_INT_DEC(CSChangeForReader, /* prefix */
+                      CSTRemoteReader,   /* root_t */
+                      CSChangeForReader, /* item_t */
+                      SequenceNumber,    /* key_t */
+                      csChangeForReader, /* root_node */
+                      node,              /* item_node */
+                      csChange->sn,      /* item_key */
+                      gavl_cmp_sn);      /* cmp_fnc */
 
 extern void
 CSTWriterInit(ORTEDomain *d,CSTWriter *cstWriter,ObjectEntryOID *object,
     ObjectId oid,CSTWriterParams *params,ORTETypeRegister *typeRegister);
 extern void 
 CSTWriterDelete(ORTEDomain *d,CSTWriter *cstWriter);
-extern void
-CSTWriterAddRemoteReader(ORTEDomain *d,CSTWriter *cstWriter,ObjectEntryOID *object,
-    ObjectId oid);
+extern CSTRemoteReader *
+CSTWriterAddRemoteReader(ORTEDomain *d,CSTWriter *cstWriter,ObjectEntryOID *pobject,
+    ObjectId oid,ObjectEntryOID *sobject);
 extern void 
 CSTWriterDestroyRemoteReader(ORTEDomain *d,CSTRemoteReader *cstRemoteReader);
 extern void
@@ -360,17 +433,23 @@ CSTWriterMakeGAP(ORTEDomain *d,CSTWriter *cstWriter,GUID_RTPS *guid);
 extern void
 CSTWriterAddCSChange(ORTEDomain *d,CSTWriter *cstWriter,CSChange *csChange);
 extern void
-CSTWriterDestroyCSChangeForReader(CSTRemoteReader *cstRemoteReader,
-    CSChangeForReader   *csChangeForReader,Boolean destroyCSChange);
+CSTWriterDestroyCSChangeForReader(CSChangeForReader *csChangeForReader,
+   Boolean destroyCSChange);
 extern void 
 CSTWriterDestroyCSChange(ORTEDomain *d,CSTWriter *cstWriter,CSChange *csChange);
 extern Boolean
 CSTWriterTryDestroyBestEffortIssue(CSTWriter *cstWriter);
 extern void
 CSTWriterRefreshAllCSChanges(ORTEDomain *d,CSTRemoteReader *cstRemoteReader);
+extern int
+CSTWriterCSChangeForReaderNewState(CSChangeForReader *csChangeForReader);
+extern void
+CSTWriterMulticast(CSChangeForReader *csChangeForReader);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSCSTWriterTimer.c
+extern int 
+CSTWriterRegistrationTimer(ORTEDomain *d,void *vcstWriter);
 extern int
 CSTWriterRefreshTimer(ORTEDomain *d,void *vcstWriter);
 extern int 
@@ -386,18 +465,38 @@ CSTWriterSendTimer(ORTEDomain *d,void *vcstRemoteReader);
         
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSCSTReader.c
-UL_LIST_CUST_DEC(CSTReaderCSChange,
-                 CSTReader,CSChange,
-                 csChanges,nodeList);
-GAVL_CUST_NODE_INT_DEC(CSTReader, 
-                       CSTSubscriptions, CSTReader, GUID_RTPS,
-                       cstReader, node, guid, gavl_cmp_guid);
-GAVL_CUST_NODE_INT_DEC(CSTRemoteWriter, 
-                       CSTReader, CSTRemoteWriter, GUID_RTPS,
-                       cstRemoteWriter, node, guid, gavl_cmp_guid);
-GAVL_CUST_NODE_INT_DEC(CSChangeFromWriter,
-                       CSTRemoteWriter, CSChangeFromWriter, SequenceNumber,
-                       csChangeFromWriter, node, csChange->sn, gavl_cmp_sn);
+UL_LIST_CUST_DEC(CSTReaderCSChange,      /* prefix */
+                CSTReader,               /* head_t */
+                CSChange,                /* item_t */
+                csChanges,               /* head_field */
+                nodeList);               /* node_field */
+
+GAVL_CUST_NODE_INT_DEC(CSTReader,        /* prefix */
+                      CSTSubscriptions,  /* root_t */
+                      CSTReader,         /* item_t */
+                      GUID_RTPS,         /* key_t */
+                      cstReader,         /* root_node */
+                      node,              /* item_node */
+                      guid,              /* item_key */
+                      gavl_cmp_guid);    /* cmp_fnc */
+
+GAVL_CUST_NODE_INT_DEC(CSTRemoteWriter,          /* prefix */
+                      CSTReader,         /* root_t */
+                      CSTRemoteWriter,   /* item_t */
+                      GUID_RTPS,         /* key_t */
+                      cstRemoteWriter,   /* root_node */
+                      node,              /* item_node */
+                      guid,              /* item_key */
+                      gavl_cmp_guid);    /* cmp_fnc */
+
+GAVL_CUST_NODE_INT_DEC(CSChangeFromWriter,/* prefix */
+                      CSTRemoteWriter,   /* root_t */
+                      CSChangeFromWriter,/* item_t */
+                      SequenceNumber,    /* key_t */
+                      csChangeFromWriter,/* root_node */
+                      node,              /* item_node */
+                      csChange->sn,      /* item_key */
+                      gavl_cmp_sn);      /* cmp_fnc */
 extern void 
 CSTReaderInit(ORTEDomain *d,CSTReader *cstReader,ObjectEntryOID *object,
     ObjectId oid,CSTReaderParams *params,ORTETypeRegister *typeRegister);
@@ -438,24 +537,44 @@ extern int
 CSTReaderPersistenceTimer(ORTEDomain *d,void *vcstReader);
 
 ///////////////////////////////////////////////////////////////////////////////
-// ORTEDomainApp.c
-UL_LIST_CUST_DEC(SubscriptionPattern,
-                 PatternEntry,SubscriptionPatternNode,
-                 subscription,node);
-
+// ORTEDomain.c
+ORTEDomain * 
+ORTEDomainCreate(int domain, ORTEDomainProp *prop,
+               ORTEDomainAppEvents *events,Boolean manager);
+Boolean
+ORTEDomainDestroy(ORTEDomain *d,Boolean manager);
 
+///////////////////////////////////////////////////////////////////////////////
+// ORTEDomainApp.c
+UL_LIST_CUST_DEC(Pattern,      /* prefix */
+                PatternEntry,  /* head_t */
+                PatternNode,   /* item_t */
+                patterns,      /* head_field */
+                node);         /* node_field */
+                                                   
 ///////////////////////////////////////////////////////////////////////////////
 // ORTETypeRegister.c
 extern Boolean
-ORTETypeRegisterFind(ORTEDomain *d,char *typeName);
+ORTETypeRegisterFind(ORTEDomain *d,const char *typeName);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTEPublication.c
-GAVL_CUST_NODE_INT_DEC(PublicationList, 
-                       PSEntry, ObjectEntryOID, GUID_RTPS,
-                       publications, psNode, guid, gavl_cmp_guid);
+GAVL_CUST_NODE_INT_DEC(PublicationList,          /* prefix */
+                      PSEntry,           /* root_t */
+                      ObjectEntryOID,    /* item_t */
+                      GUID_RTPS,         /* key_t */
+                      publications,      /* root_node */
+                      psNode,            /* item_node */
+                      guid,              /* item_key */
+                      gavl_cmp_guid);    /* cmp_fnc */
+extern int
+ORTEPublicationSendLocked(ORTEPublication *cstWriter,
+    ORTEPublicationSendParam *psp);
+
+///////////////////////////////////////////////////////////////////////////////
+// ORTESubcription.c
 extern int
-ORTEPublicationSendLocked(ORTEPublication *cstWriter);
+ORTESubscriptionDestroyLocked(ORTESubscription *cstReader);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTEPublicationTimer.c
@@ -464,11 +583,15 @@ PublicationCallBackTimer(ORTEDomain *d,void *vcstWriter);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTESubscription.c
-GAVL_CUST_NODE_INT_DEC(SubscriptionList, 
-                       PSEntry, ObjectEntryOID, GUID_RTPS,
-                       subscriptions, psNode, guid, gavl_cmp_guid);
+GAVL_CUST_NODE_INT_DEC(SubscriptionList,  /* prefix */
+                      PSEntry,           /* root_t */
+                      ObjectEntryOID,    /* item_t */
+                      GUID_RTPS,         /* key_t */
+                      subscriptions,     /* root_node */
+                      psNode,            /* item_node */
+                      guid,              /* item_key */
+                      gavl_cmp_guid);    /* cmp_fnc */
 
-                       
 #ifdef __cplusplus
 } /* extern "C"*/
 #endif