当前位置: 首页>>代码示例>>C++>>正文


C++ NodeBitmask类代码示例

本文整理汇总了C++中NodeBitmask的典型用法代码示例。如果您正苦于以下问题:C++ NodeBitmask类的具体用法?C++ NodeBitmask怎么用?C++ NodeBitmask使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了NodeBitmask类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: ndbout_c

void
SafeCounterManager::printNODE_FAILREP(){
  ActiveCounterPtr ptr;

  NodeBitmask nodes;
  nodes.clear();
  //  nodes.bitORC(nodes);

  for(m_activeCounters.first(ptr); !ptr.isNull(); m_activeCounters.next(ptr)){
    ActiveCounter::SignalDesc desc = ptr.p->m_signalDesc;
    ndbout_c("theData[desc.m_senderDataOffset=%u] = %u",
	     desc.m_senderDataOffset, ptr.p->m_senderData);
    ndbout_c("theData[desc.m_errorCodeOffset=%u] = %u",
	     desc.m_errorCodeOffset, desc.m_nodeFailErrorCode);
    Uint32 len = MAX(MAX(desc.m_senderDataOffset, desc.m_errorCodeOffset),
		     desc.m_senderRefOffset);
    
    NodeBitmask overlapping = ptr.p->m_nodes;
    Uint32 i = 0;
    while((i = overlapping.find(i)) != NodeBitmask::NotFound){
      ndbout_c("  theData[desc.m_senderRefOffset=%u] = %x",
	       desc.m_senderRefOffset, numberToRef(desc.m_block, i));
      ndbout_c("  sendSignal(%x,%u,signal,%u,JBB",
	       m_block.reference(), desc.m_gsn, len+1);
      i++;
    }
  }
}
开发者ID:Abner-Sun,项目名称:mysql5.1-vx-pre1,代码行数:28,代码来源:SafeCounter.cpp

示例2: getNodeId

  static Uint32 getNodeId(NodeBitmask & mask, unsigned arr[], unsigned i)
  {
    Uint32 nodeId = 0;
    if (arr != 0)
    {
      nodeId = arr[i];
    }
    else
    {
      nodeId = mask.find_first();
    }

    require(mask.get(nodeId));
    mask.clear(nodeId);
    return nodeId;
  }
开发者ID:ForcerKing,项目名称:ShaoqunXu-mysql5.7,代码行数:16,代码来源:ConfigFactory.hpp

示例3:

NodeBitmask
SignalSender::broadcastSignal(NodeBitmask mask,
                              SimpleSignal& sig,
                              Uint16 recBlock, Uint16 gsn,
                              Uint32 len)
{
    sig.set(*this, TestOrd::TraceAPI, recBlock, gsn, len);

    NodeBitmask result;
    for(Uint32 i = 0; i < MAX_NODES; i++)
    {
        if(mask.get(i) && sendSignal(i, &sig) == SEND_OK)
            result.set(i);
    }
    return result;
}
开发者ID:carrotli,项目名称:ansql,代码行数:16,代码来源:SignalSender.cpp

示例4: create

  static Properties create(unsigned mgmds = 1,
                           unsigned ndbds = 1,
                           unsigned mysqlds = 1,
                           unsigned mgmd_nodeids[] = 0,
                           unsigned ndbd_nodeids[] = 0,
                           unsigned mysqld_nodeids[] = 0)
  {
    Uint32 base_port = get_ndbt_base_port() + /* mysqld */ 1;
    Properties config;
    require(mgmds >= 1 && ndbds >= 1 && mysqlds >= 1);
    NodeBitmask mask;
    mask.set();
    mask.clear(Uint32(0));

    for (unsigned i = 0; i < mgmds; i++)
    {
      Uint32 nodeId = getNodeId(mask, mgmd_nodeids, i);
      Properties node_settings;
      node_settings.put("NodeId", nodeId);
      node_settings.put("HostName", "localhost");
      node_settings.put("PortNumber", base_port + i);

      config.put("ndb_mgmd", nodeId, &node_settings);
    }

    for (unsigned i = 0; i < ndbds; i++)
    {
      Uint32 nodeId = getNodeId(mask, ndbd_nodeids, i);
      Properties node_settings;
      node_settings.put("NodeId", nodeId);
      if (ndbds == 1)
        node_settings.put("NoOfReplicas", 1);

      config.put("ndbd", nodeId, &node_settings);
    }

    for (unsigned i = 0; i < mysqlds; i++)
    {
      Uint32 nodeId = getNodeId(mask, mysqld_nodeids, i);
      Properties node_settings;
      node_settings.put("NodeId", nodeId);
      config.put("mysqld", nodeId, &node_settings);
    }

    return config;
  }
开发者ID:ForcerKing,项目名称:ShaoqunXu-mysql5.7,代码行数:46,代码来源:ConfigFactory.hpp

示例5: MAX

void
SafeCounterManager::execNODE_FAILREP(Signal* signal){
  Uint32 * theData = signal->getDataPtrSend();
  ActiveCounterPtr ptr;
  NodeBitmask nodes;
  nodes.assign(NodeBitmask::Size, 
	       ((const NodeFailRep*)signal->getDataPtr())->theNodes);

  for(m_activeCounters.first(ptr); !ptr.isNull(); m_activeCounters.next(ptr)){
    if(nodes.overlaps(ptr.p->m_nodes)){
      ActiveCounter::SignalDesc desc = ptr.p->m_signalDesc;
      theData[desc.m_senderDataOffset] = ptr.p->m_senderData;
      theData[desc.m_errorCodeOffset] = desc.m_nodeFailErrorCode;
      Uint32 len = MAX(MAX(desc.m_senderDataOffset, desc.m_errorCodeOffset),
		       desc.m_senderRefOffset);
      
      NodeBitmask overlapping = ptr.p->m_nodes;
      overlapping.bitAND(nodes);
      Uint32 i = 0;
      while((i = overlapping.find(i)) != NodeBitmask::NotFound){
	theData[desc.m_senderRefOffset] = numberToRef(desc.m_block, i);
	m_block.sendSignal(m_block.reference(), desc.m_gsn, signal, len+1,JBB);
	i++;
      }
    }
  }
}
开发者ID:Abner-Sun,项目名称:mysql5.1-vx-pre1,代码行数:27,代码来源:SafeCounter.cpp

示例6: assert

NodeId
SignalSender::find_node(const NodeBitmask& mask, T & t)
{
    unsigned n= 0;
    do {
        n= mask.find(n+1);

        if (n == NodeBitmask::NotFound)
            return 0;

        assert(n < MAX_NODES);

    } while (!t.found_ok(*this, getNodeInfo(n)));

    return n;
}
开发者ID:carrotli,项目名称:ansql,代码行数:16,代码来源:SignalSender.cpp

示例7: CAST_CONSTPTR

void
ClusterMgr::execNODE_FAILREP(const NdbApiSignal* sig,
                             const LinearSectionPtr ptr[])
{
    const NodeFailRep * rep = CAST_CONSTPTR(NodeFailRep, sig->getDataPtr());
    NodeBitmask mask;
    if (sig->getLength() == NodeFailRep::SignalLengthLong)
    {
        mask.assign(NodeBitmask::Size, rep->theAllNodes);
    }
    else
    {
        mask.assign(NdbNodeBitmask::Size, rep->theNodes);
    }

    NdbApiSignal signal(sig->theSendersBlockRef);
    signal.theVerId_signalNumber = GSN_NODE_FAILREP;
    signal.theReceiversBlockNumber = API_CLUSTERMGR;
    signal.theTrace  = 0;
    signal.theLength = NodeFailRep::SignalLengthLong;

    NodeFailRep * copy = CAST_PTR(NodeFailRep, signal.getDataPtrSend());
    copy->failNo = 0;
    copy->masterNodeId = 0;
    copy->noOfNodes = 0;
    NodeBitmask::clear(copy->theAllNodes);

    for (Uint32 i = mask.find_first(); i != NodeBitmask::NotFound;
            i = mask.find_next(i + 1))
    {
        Node & cm_node = theNodes[i];
        trp_node & theNode = cm_node;

        bool node_failrep = theNode.m_node_fail_rep;
        bool connected = theNode.is_connected();
        set_node_dead(theNode);

        if (node_failrep == false)
        {
            theNode.m_node_fail_rep = true;
            NodeBitmask::set(copy->theAllNodes, i);
            copy->noOfNodes++;
        }

        if (connected)
        {
            theFacade.doDisconnect(i);
        }
    }

    recalcMinDbVersion();
    if (copy->noOfNodes)
    {
        theFacade.for_each(this, &signal, 0); // report GSN_NODE_FAILREP
    }

    if (noOfAliveNodes == 0)
    {
        NdbApiSignal signal(numberToRef(API_CLUSTERMGR, getOwnNodeId()));
        signal.theVerId_signalNumber = GSN_NF_COMPLETEREP;
        signal.theReceiversBlockNumber = 0;
        signal.theTrace  = 0;
        signal.theLength = NFCompleteRep::SignalLength;

        NFCompleteRep * rep = CAST_PTR(NFCompleteRep, signal.getDataPtrSend());
        rep->blockNo =0;
        rep->nodeId = getOwnNodeId();
        rep->unused = 0;
        rep->from = __LINE__;

        for (Uint32 i = 1; i < MAX_NODES; i++)
        {
            trp_node& theNode = theNodes[i];
            if (theNode.defined && theNode.nfCompleteRep == false)
            {
                rep->failedNodeId = i;
                execNF_COMPLETEREP(&signal, 0);
            }
        }
    }
}
开发者ID:leafji,项目名称:MYSQL_5.7,代码行数:81,代码来源:ClusterMgr.cpp

示例8: refToBlock

inline
NodeReceiverGroup& 
NodeReceiverGroup::operator=(BlockReference blockRef){
  m_nodes.clear();
  m_block = refToBlock(blockRef);
  m_nodes.set(refToNode(blockRef));
  return * this;
}
开发者ID:4T-Shirt,项目名称:mysql,代码行数:8,代码来源:VMSignal.hpp

示例9: assert

inline
void
trp_client::unlock()
{
  assert(m_send_nodes_mask.isclear()); // Nothing unsent when unlocking...
  assert(m_poll.m_locked == true);
  m_poll.m_locked = false;
  NdbMutex_Unlock(m_mutex);
}
开发者ID:ForcerKing,项目名称:ShaoqunXu-mysql5.7,代码行数:9,代码来源:trp_client.hpp

示例10:

inline
NodeReceiverGroup::NodeReceiverGroup() : m_block(0){
  m_nodes.clear();
}
开发者ID:4T-Shirt,项目名称:mysql,代码行数:4,代码来源:VMSignal.hpp

示例11: execOPEN_COMREQ

void Cmvmi::execOPEN_COMREQ(Signal* signal)
{
  // Connect to the specifed NDB node, only QMGR allowed communication 
  // so far with the node

  const BlockReference userRef = signal->theData[0];
  Uint32 tStartingNode = signal->theData[1];
  Uint32 tData2 = signal->theData[2];
  jamEntry();

  const Uint32 len = signal->getLength();
  if(len == 2)
  {
#ifdef ERROR_INSERT
    if (! ((ERROR_INSERTED(9000) || ERROR_INSERTED(9002)) 
	   && c_error_9000_nodes_mask.get(tStartingNode)))
#endif
    {
      if (globalData.theStartLevel != NodeState::SL_STARTED &&
          (getNodeInfo(tStartingNode).m_type != NodeInfo::DB &&
           getNodeInfo(tStartingNode).m_type != NodeInfo::MGM))
      {
        jam();
        goto done;
      }

      globalTransporterRegistry.do_connect(tStartingNode);
      globalTransporterRegistry.setIOState(tStartingNode, HaltIO);
      
      //-----------------------------------------------------
      // Report that the connection to the node is opened
      //-----------------------------------------------------
      signal->theData[0] = NDB_LE_CommunicationOpened;
      signal->theData[1] = tStartingNode;
      sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB);
      //-----------------------------------------------------
    }
  } else {
    for(unsigned int i = 1; i < MAX_NODES; i++ ) 
    {
      jam();
      if (i != getOwnNodeId() && getNodeInfo(i).m_type == tData2)
      {
	jam();

#ifdef ERROR_INSERT
	if ((ERROR_INSERTED(9000) || ERROR_INSERTED(9002))
	    && c_error_9000_nodes_mask.get(i))
	  continue;
#endif
	
	globalTransporterRegistry.do_connect(i);
	globalTransporterRegistry.setIOState(i, HaltIO);
	
	signal->theData[0] = NDB_LE_CommunicationOpened;
	signal->theData[1] = i;
	sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB);
      }
    }
  }
  
done:  
  if (userRef != 0) {
    jam(); 
    signal->theData[0] = tStartingNode;
    signal->theData[1] = tData2;
    sendSignal(userRef, GSN_OPEN_COMCONF, signal, len - 1,JBA);
  }
}
开发者ID:Abner-Sun,项目名称:mysql5.1-vx-pre1,代码行数:69,代码来源:Cmvmi.cpp


注:本文中的NodeBitmask类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。