]> rtime.felk.cvut.cz Git - orte.git/commitdiff
ORTEDomain: Refactor initialization of task properties
authorMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 11 Mar 2015 19:50:51 +0000 (20:50 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 14 Mar 2015 16:42:57 +0000 (17:42 +0100)
orte/include/orte_all.h
orte/include/orte_headers.h
orte/liborte/ORTEDomain.c

index b96b1fcbff30a2b13ac59d02c63e23b160e186bd..89c9f49bb2d07931c6ec2f1f7764d9283d2116ae 100644 (file)
@@ -34,8 +34,6 @@
 extern "C" {
 #endif
 
-#define orte_assert(x)
-
 #include "orte_headers.h"
 #include "orte/cdr.h"
 #include "ul_gavl.h"
index 8160831a6b4f023d0f1eeb078509cb104ba01eff..19c5907c0a3ecb0ab56b1569a8a8a3eaaea18c03 100644 (file)
@@ -47,6 +47,8 @@ extern "C" {
   #error ""
 #endif
 
+#include <assert.h>             /* TODO: autoconfize this */
+
 #ifdef HAVE_ARPA_INET_H
   #include <arpa/inet.h>
 #endif
index 2bc05ebf3993e8988d0d37759f325534e413012d..7a6e4d54b01305806f0284c6c20262cf65c51297 100644 (file)
@@ -195,6 +195,18 @@ generateLocalGUID(ORTEDomain *d, Boolean manager)
                GUID_PRINTF(d->guid));
 }
 
+static void
+initTaskProp(TaskProp *tp, ORTEDomain *d, int buffSize)
+{
+  tp->d = d;
+  tp->terminate = ORTE_TRUE;
+  tp->sock.port = 0;
+  CDR_codec_init_static(&tp->mb.cdrCodec);
+  if (buffSize)
+    CDR_buffer_init(&tp->mb.cdrCodec, buffSize);
+  sock_init_udp(&tp->sock);
+}
+
 ORTEDomain *
 ORTEDomainCreate(int domain, ORTEDomainProp *prop,
                 ORTEDomainAppEvents *events, Boolean manager)
@@ -222,21 +234,27 @@ ORTEDomainCreate(int domain, ORTEDomainProp *prop,
     return NULL;        //no memory
   //initialization local values
   d->domain = domain;
-  d->taskRecvUnicastMetatraffic.d = d;
-  d->taskRecvUnicastMetatraffic.terminate = ORTE_TRUE;
-  d->taskRecvMulticastMetatraffic.d = d;
-  d->taskRecvMulticastMetatraffic.terminate = ORTE_TRUE;
-  d->taskRecvUnicastUserdata.d = d;
-  d->taskRecvUnicastUserdata.terminate = ORTE_TRUE;
-  d->taskRecvMulticastUserdata.d = d;
-  d->taskRecvMulticastUserdata.terminate = ORTE_TRUE;
-  d->taskSend.d = d;
-  d->taskSend.terminate = ORTE_TRUE;
-  d->taskRecvUnicastMetatraffic.sock.port = 0;
-  d->taskRecvMulticastMetatraffic.sock.port = 0;
-  d->taskRecvUnicastUserdata.sock.port = 0;
-  d->taskRecvMulticastUserdata.sock.port = 0;
-  d->taskSend.sock.port = 0;
+
+  //create domainProp
+  if (prop != NULL) {
+    memcpy(&d->domainProp, prop, sizeof(ORTEDomainProp));
+  } else {
+    if (!ORTEDomainPropDefaultGet(&d->domainProp)) {
+      goto err_domainProp;
+    }
+  }
+  ORTEDomainProp *dp = &d->domainProp;
+
+  initTaskProp(&d->taskRecvUnicastMetatraffic,   d, dp->recvBuffSize);
+  initTaskProp(&d->taskRecvUnicastUserdata,      d, !manager ? dp->recvBuffSize : 0);
+  initTaskProp(&d->taskRecvMulticastMetatraffic, d, !manager && dp->multicast.enabled ? dp->recvBuffSize : 0);
+  initTaskProp(&d->taskRecvMulticastUserdata,    d, !manager && dp->multicast.enabled ? dp->recvBuffSize : 0);
+
+  initTaskProp(&d->taskSend, d, dp->sendBuffSize);
+  d->taskSend.mb.cdrCodec.wptr_max = dp->wireProp.metaBytesPerPacket;
+  assert(d->taskSend.mb.cdrCodec.wptr_max <= d->taskSend.mb.cdrCodec.buf_len);
+  d->taskSend.mb.cdrCodec.data_endian = FLAG_ENDIANNESS;
+
   //init structure objectEntry
   pthread_condattr_init(&attr);
 #if defined HAVE_PTHREAD_CONDATTR_SETCLOCK && HAVE_DECL_CLOCK_MONOTONIC
@@ -268,15 +286,6 @@ ORTEDomainCreate(int domain, ORTEDomainProp *prop,
   ORTEPatternRegister(d, ORTEPatternCheckDefault, ORTEPatternMatchDefault, NULL);
   Pattern_init_head(&d->patternEntry);
 
-  //create domainProp
-  if (prop != NULL) {
-    memcpy(&d->domainProp, prop, sizeof(ORTEDomainProp));
-  } else {
-    if (!ORTEDomainPropDefaultGet(&d->domainProp)) {
-      goto err_domainProp;
-    }
-  }
-
   //print local IP addresses
   iflocal[0] = 0;
   if (d->domainProp.IFCount) {
@@ -298,40 +307,10 @@ ORTEDomainCreate(int domain, ORTEDomainProp *prop,
     memset(&d->domainEvents, 0, sizeof(ORTEDomainAppEvents));
   }
 
-  //local buffers
-  CDR_codec_init_static(&d->taskRecvUnicastMetatraffic.mb.cdrCodec);
-  CDR_codec_init_static(&d->taskRecvMulticastMetatraffic.mb.cdrCodec);
-  CDR_codec_init_static(&d->taskRecvUnicastUserdata.mb.cdrCodec);
-  CDR_codec_init_static(&d->taskRecvMulticastUserdata.mb.cdrCodec);
-  CDR_codec_init_static(&d->taskSend.mb.cdrCodec);
-  CDR_buffer_init(&d->taskRecvUnicastMetatraffic.mb.cdrCodec,
-                 d->domainProp.recvBuffSize);
-  CDR_buffer_init(&d->taskSend.mb.cdrCodec,
-                 d->domainProp.sendBuffSize);
-  d->taskSend.mb.cdrCodec.wptr_max = d->domainProp.wireProp.metaBytesPerPacket;
-  if (!manager) {
-    CDR_buffer_init(&d->taskRecvUnicastUserdata.mb.cdrCodec,
-                   d->domainProp.recvBuffSize);
-    if (d->domainProp.multicast.enabled) {
-      CDR_buffer_init(&d->taskRecvMulticastMetatraffic.mb.cdrCodec,
-                     d->domainProp.recvBuffSize);
-      CDR_buffer_init(&d->taskRecvMulticastUserdata.mb.cdrCodec,
-                     d->domainProp.recvBuffSize);
-    }
-  }
-  d->taskSend.mb.cdrCodec.data_endian = FLAG_ENDIANNESS;
-
   //TypeRegister
   ORTEType_init_root_field(&d->typeEntry);
   pthread_rwlock_init(&d->typeEntry.lock, NULL);
 
-  //Sockets
-  sock_init_udp(&d->taskRecvUnicastMetatraffic.sock);
-  sock_init_udp(&d->taskRecvMulticastMetatraffic.sock);
-  sock_init_udp(&d->taskRecvUnicastUserdata.sock);
-  sock_init_udp(&d->taskRecvMulticastUserdata.sock);
-  sock_init_udp(&d->taskSend.sock);
-
   /************************************************************************/
   /* UnicastMetatraffic */
   Domain2Port(d->domain, port);