/// /// \file conduitGroup.cc /// \author Jan Chrin, PSI /// \date November 2014 /// \version CAFE 1.0.0 #include #include #include #include //include //include unsigned int ConduitGroup::groupHandleNext=0; /** * ConduitGroup destructor \n * Good place to clean up! */ ConduitGroup::~ConduitGroup(void){ }; /** * ConduitGroup constructor \n * */ ConduitGroup::ConduitGroup(void){ }; /** * ConduitGroup constructor has:\n * \param _groupName assigned group name * \param _ccc ca_client_context * \param _groupID unique group identifier (CA_SYNC_GID) * \param _nMember number of members in group * \param _mHandle handlt to Conduit object */ ConduitGroup::ConduitGroup(const char * _groupName, ca_client_context * _ccc, CA_SYNC_GID _groupID, unsigned int _nMember, unsigned int * _mHandle){ ccc = _ccc; groupName = _groupName; groupID = _groupID; nMember = _nMember; mHandle = _mHandle; timeout_sg_pend_io = DEFAULT_TIMEOUT_SG_PEND_IO; channelTimeoutPolicySGGet.setTimeout(DEFAULT_TIMEOUT_SG_PEND_IO); channelTimeoutPolicySGPut.setTimeout(DEFAULT_TIMEOUT_SG_PEND_IO); channelTimeoutPolicySGGet.setDefaultTimeout(DEFAULT_TIMEOUT_SG_PEND_IO); channelTimeoutPolicySGPut.setDefaultTimeout(DEFAULT_TIMEOUT_SG_PEND_IO); ++groupHandleNext; groupHandle = groupHandleNext; mStatus = new int [nMember]; mRule = new bool[nMember]; for (unsigned int i=0; i (); cafeConduit_set_by_handle::iterator it_handle; for (unsigned int i=0; i (); cafeConduit_set_by_handle::iterator it_handle; for (unsigned int i=0; i guard ( pcac->mutex ); pcasg = pcac->lookupCASG ( guard, groupID ); if ( pcasg ) { status = pcasg->block ( pcac->pCallbackGuard.get (), guard, channelTimeoutPolicySGPut.getTimeout() ); } else { status = ECA_BADSYNCGRP; } } if ( pcasg ) { sync_group_reset ( *pcac, *pcasg ); } } */ //ca_poll(); //ca_sg_test(groupID); //sleep(1); if (groupStatus== ECA_TIMEOUT) { CAFEStatus cafeStatus; cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << endl; cafeStatus.report(ECA_TIMEOUT); } //groupStatus is ECA_NORMAL even if one of the channels is disconnected return groupStatus; #undef __METHOD__ };