CWuidReadSlaveActivity(CGraphElementBase *_container) : CSlaveActivity(_container), CThorDataLink(this) { replyTag = createReplyTag(); replyStream.setown(createMemoryBufferSerialStream(masterReplyMsg)); rowSource.setStream(replyStream); }
void init(MemoryBuffer &data, MemoryBuffer &slaveData) { AggregateSlaveBase::init(data, slaveData); appendOutputLinked(this); helper = (IHThorAggregateArg *)queryHelper(); if (firstNode()) { mpTag = createReplyTag(); slaveData.append((int &)mpTag); } }
void doBroadcast() { try { unsigned i = 0; unsigned n; if (1 == nodeindex) n = broadcastSlave-1; else if (broadcastSlave==nodeindex) n = 0; else n = nodeindex-1; loop { unsigned t = target(i++,n); if (t>numnodes) break; if (t != broadcastSlave) { #ifdef _TRACEBROADCAST ActPrintLog(activity, "Broadcast node %d Sending to node %d size %d",nodeindex,t,broadcasting.length()); #endif mptag_t rt = createReplyTag(); broadcasting.setReplyTag(rt); // simulate sendRecv comm->send(broadcasting, t, mpTag); CMessageBuffer rMsg; comm->recv(rMsg, t, rt); #ifdef _TRACEBROADCAST ActPrintLog(activity, "Broadcast node %d Sent to node %d size %d received back %d",nodeindex,t,broadcasting.length(),rMsg.length()); #endif } } } catch (IException *e) { ActPrintLog(activity, e, "CBroadcaster::broadcast exception"); throw; } #ifdef _TRACEBROADCAST ActPrintLog(activity, "do broadcast done done"); #endif }
void init() { replyTag = createReplyTag(); }