CSTReaderParams cstReaderParams;
char iflocal[MAX_INTERFACES*MAX_STRING_IPADDRESS_LENGTH];
char sIPAddress[MAX_STRING_IPADDRESS_LENGTH];
+ char sbuff[128];
int i;
- u_int16_t port=0;
+ uint16_t port=0;
debug(21,10) ("ORTEDomainAppCreate: start\n");
//Create domainApplication
d->taskRecvMetatraffic.sock.port=0;
d->taskRecvUserdata.sock.port=0;
d->taskSend.sock.port=0;
- PublParamsInit(&d->publPropDefault);
- SubsParamsInit(&d->subsPropDefault);
//init structure objectEntry
ObjectEntryHID_init_root_field(&d->objectEntry);
pthread_rwlock_init(&d->objectEntry.objRootLock,NULL);
htimerRoot_init_queue(&d->objectEntry);
pthread_rwlock_init(&d->objectEntry.htimRootLock,NULL);
- pthread_mutex_init(&d->objectEntry.htimSendMutex, NULL);
+ pthread_cond_init(&d->objectEntry.htimSendCond,NULL);
+ pthread_mutex_init(&d->objectEntry.htimSendMutex,NULL);
+ d->objectEntry.htimSendCondValue=0;
//publication,subscriptions
d->publications.counter=d->subscriptions.counter=0;
CSTWriter_init_root_field(&d->publications);
strcat(iflocal,IPAddressToString(d->domainProp.IFProp[i].ipAddress,sIPAddress));
debug(21,2) ("ORTEDomainAppCreate: localIPAddres(es) %s\n",iflocal);
} else{
- debug(21,2) ("ORTEDomainAppCreate: no activ interface card\n");
+ debug(21,2) ("ORTEDomainAppCreate: no active interface card\n");
}
//DomainEvents
//local buffers
d->mbRecvMetatraffic.cdrStream.buffer=
- (u_int8_t*)MALLOC(d->domainProp.recvBuffSize);
+ (uint8_t*)MALLOC(d->domainProp.recvBuffSize);
d->mbRecvUserdata.cdrStream.buffer=
- (u_int8_t*)MALLOC(d->domainProp.recvBuffSize);
+ (uint8_t*)MALLOC(d->domainProp.recvBuffSize);
d->mbSend.cdrStream.buffer=
- (u_int8_t*)MALLOC(d->domainProp.sendBuffSize);
+ (uint8_t*)MALLOC(d->domainProp.sendBuffSize);
if ((!d->mbRecvMetatraffic.cdrStream.buffer) ||
(!d->mbRecvUserdata.cdrStream.buffer) ||
(!d->mbSend.cdrStream.buffer)) { //no memory
}
}
//ApplicatonKeyList
- appParams->managerKeyList[0]=StringToIPAddress("127.0.0.1");
- for(i=0;i<d->domainProp.IFCount;i++)
- appParams->managerKeyList[i+1]=d->domainProp.IFProp[i].ipAddress;
- appParams->managerKeyCount=d->domainProp.IFCount+1;
+ if (!d->domainProp.keys) {
+ appParams->managerKeyList[0]=StringToIPAddress("127.0.0.1");
+ for(i=0;i<d->domainProp.IFCount;i++)
+ appParams->managerKeyList[i+1]=d->domainProp.IFProp[i].ipAddress;
+ appParams->managerKeyCount=d->domainProp.IFCount+1;
+ } else {
+ appParams->managerKeyCount=i=0;
+ while (getStringPart(d->domainProp.keys,':',&i,sbuff)) {
+ appParams->managerKeyList[appParams->managerKeyCount++]=
+ StringToIPAddress(sbuff);
+ }
+ }
d->appParams=appParams;
//insert object, doesn't need to be locked
d->objectEntryOID=objectEntryAdd(d,&d->guid,(void*)appParams);
- d->objectEntryOID->private=ORTE_TRUE;
+ d->objectEntryOID->privateCreated=ORTE_TRUE;
//CST objects
// writerApplicationSelf (WAS)
OID_READ_SUBS,&cstReaderParams,NULL);
//add csChange for WAS
- appSelfParamChanged(d,ORTE_FALSE,ORTE_FALSE,ORTE_FALSE);
+ appSelfParamChanged(d,ORTE_FALSE,ORTE_FALSE,ORTE_FALSE,ORTE_TRUE);
//Start threads
if (!suspended) {
debug(21,10) ("ORTEDomainAppDestroy: start\n");
if (!d) return ORTE_FALSE;
+ pthread_rwlock_wrlock(&d->objectEntry.objRootLock);
+ pthread_rwlock_wrlock(&d->objectEntry.htimRootLock);
+ appSelfParamChanged(d,ORTE_TRUE,ORTE_TRUE,ORTE_FALSE,ORTE_FALSE);
+ pthread_rwlock_unlock(&d->objectEntry.htimRootLock);
+ pthread_rwlock_unlock(&d->objectEntry.objRootLock);
//Stoping threads
if (!d->taskRecvMetatraffic.terminate) {
d->taskRecvMetatraffic.terminate=ORTE_TRUE;
sock_cleanup(&d->taskRecvUserdata.sock);
sock_cleanup(&d->taskSend.sock);
- //Mutex(es)
- pthread_mutex_destroy(&d->objectEntry.htimSendMutex);
+ //Signals
+ pthread_cond_destroy(&d->objectEntry.htimSendCond);
+ pthread_mutex_destroy(&d->objectEntry.htimSendMutex);
//rwLocks
pthread_rwlock_destroy(&d->objectEntry.objRootLock);
pthread_rwlock_destroy(&d->typeEntry.lock);
//Pattern
- ORTEDomainAppSubscriptionPatternDestroyAll(d);
+ ORTEDomainAppSubscriptionPatternDestroy(d);
pthread_rwlock_unlock(&d->typeEntry.lock);
pthread_rwlock_destroy(&d->patternEntry.lock);
/*****************************************************************************/
Boolean
-ORTEDomainAppSubscriptionPatternDestroyAll(ORTEDomain *d) {
+ORTEDomainAppSubscriptionPatternDestroy(ORTEDomain *d) {
PatternNode *pnode;
if (!d) return ORTE_FALSE;