本文整理汇总了C++中PacketPtr::get_Tag方法的典型用法代码示例。如果您正苦于以下问题:C++ PacketPtr::get_Tag方法的具体用法?C++ PacketPtr::get_Tag怎么用?C++ PacketPtr::get_Tag使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PacketPtr
的用法示例。
在下文中一共展示了PacketPtr::get_Tag方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: dysectAPIUpStream
void dysectAPIUpStream(vector<PacketPtr> &packetsIn,
vector<PacketPtr> &packetsOut,
vector<PacketPtr> &packetsOutReverse,
void **filterState,
PacketPtr ¶ms,
const TopologyLocalInfo &topology)
{
//cpPrintMsg(STAT_LOG_MESSAGE, __FILE__, __LINE__, "dysectAPIUpStream entry\n");
int streamId = packetsIn[0]->get_StreamId();
int tag = packetsIn[0]->get_Tag();
UpstreamFilter upstreamFilter(streamId);
struct packet* newPacket = 0;
int newPacketLen = 0;
int newCount = 0;
struct timeval startTime, endTime;
double elapsedTime = 0.0;
gettimeofday(&startTime, NULL);
for(int i = 0; i < packetsIn.size(); i++)
{
//cpPrintMsg(STAT_LOG_MESSAGE, __FILE__, __LINE__, "Incoming packet %d\n", i);
PacketPtr currentPacket = packetsIn[i];
int tag = currentPacket->get_Tag();
int count;
int payloadLen;
char *payload;
if(currentPacket->unpack("%d %auc", &count, &payload, &payloadLen) == -1) {
cpPrintMsg(STAT_LOG_MESSAGE, __FILE__, __LINE__, "Could not unpack packet!\n");
continue;
}
//cpPrintMsg(STAT_LOG_MESSAGE, __FILE__, __LINE__, "Incoming packet unpack count '%d' payload size %d\n", count, payloadLen);
if(payloadLen > 1) {
//cpPrintMsg(STAT_LOG_MESSAGE, __FILE__, __LINE__, "Handle probe packet with payload\n");
if(newPacket == 0) {
newCount = count;
//cpPrintMsg(STAT_LOG_MESSAGE, __FILE__, __LINE__, "Setting probe packet with base\n");
newPacket = (struct packet*)payload;
newPacketLen = payloadLen;
} else {
newCount += count;
// Merge packets
struct packet* mergedPacket = 0;
AggregateFunction::mergePackets(newPacket, (struct packet*)payload, mergedPacket, newPacketLen);
newPacket = mergedPacket;
}
} else if(upstreamFilter.isControlTag(tag) && (payloadLen <= 1)) {
cpPrintMsg(STAT_LOG_MESSAGE, __FILE__, __LINE__, "Handle control packet\n");
upstreamFilter.aggregateControlPacket(tag, count);
}
}
if(newPacket != 0) {
//cpPrintMsg(STAT_LOG_MESSAGE, __FILE__, __LINE__, "Setting probe packet with base (npl: %d)\n", newPacketLen);
PacketPtr packet(new Packet(streamId, tag, "%d %auc", newCount, (unsigned char*)newPacket, newPacketLen));
packetsOut.push_back(packet);
}
if(upstreamFilter.anyControlPackets()) {
upstreamFilter.getControlPackets(packetsOut);
}
gettimeofday(&endTime, NULL);
elapsedTime += (endTime.tv_sec - startTime.tv_sec) * 1000.0;
elapsedTime += (endTime.tv_usec - startTime.tv_usec) / 1000.0;
cpPrintMsg(STAT_LOG_MESSAGE, __FILE__, __LINE__, "Aggregated %d packets in %.3f ms\n", packetsIn.size(), elapsedTime);
}