void SnapShotFilter::doProcess(frame_t* frame_list, int nFrames, uint32_t *params) { LOCATION("\n"); volatile frame_t* frame1 = getFrameByType(frame_list, nFrames, PRIMARY); volatile frame_t* frame2 = getFrameByType(frame_list, nFrames, FUNCTIONAL); if (flag == 1) { char path1[PATH_MAX]; char path2[PATH_MAX]; sprintf(path1, "stream1-%04d", picCnt); sprintf(path2, "stream2-%04d", picCnt); int fd1 = open(path1, O_CREAT | O_RDWR); if (fd1 < 0) { printf("open path1:%s Error\n", path1); } int fd2 = open(path2, O_CREAT | O_RDWR); if (fd2 < 0) { printf("open path2:%s Error\n", path2); } write(fd1, frame1->addr, frame1->size); write(fd2, frame2->addr, frame2->size); close(fd1); close(fd2); flag = 0; picCnt++; } }
Http2Frame* Http2Handler::readFrame(string data) { Http2FrameHeader header; header.payloadLength = (int)CommonUtils::charArrayToULongLong(data.substr(0, 3)); header.type = data.at(3); header.flags = data.at(4); header.reserved = ((data.at(5) >> 7) & 0x01); data[5] = data[5] & 0x7F; header.streamIdentifier = (int)CommonUtils::charArrayToULongLong(data.substr(5, 4)); string payload; if(data.length()>9) { payload = data.substr(9); } return getFrameByType(payload, header); }
Http2Frame* Http2Handler::nextFrame() { if(buffer.length()>=9) { int payloadlength = (int)CommonUtils::charArrayToULongLong(buffer.substr(0, 3)); if((int)buffer.length()>=9+payloadlength) { Http2FrameHeader header; header.payloadLength = payloadlength; header.type = buffer.at(3); header.flags = buffer.at(4); header.reserved = ((buffer.at(5) >> 7) & 0x01); buffer[5] = buffer[5] & 0x7F; header.streamIdentifier = (int)CommonUtils::charArrayToULongLong(buffer.substr(5, 4)); string payload; payload = buffer.substr(9, payloadlength); buffer = buffer.substr(payloadlength+9); return getFrameByType(payload, header); }
Http2Frame* Http2Handler::readFrame() { string fd; Http2FrameHeader header; vector<unsigned char> lenbytes; if(!sockUtil->readData(3, lenbytes)) { return NULL; } for (int var = 0; var < 3; ++var) { fd.push_back(lenbytes.at(var)); } header.payloadLength = (int)CommonUtils::charArrayToULongLong(lenbytes); vector<unsigned char> tfbytes; if(!sockUtil->readData(2, tfbytes)) { return NULL; } for (int var = 0; var < 2; ++var) { fd.push_back(tfbytes.at(var)); } header.type = tfbytes.at(0); header.flags = tfbytes.at(1); vector<unsigned char> rsibytes; if(!sockUtil->readData(4, rsibytes)) { return NULL; } for (int var = 0; var < 4; ++var) { fd.push_back(rsibytes.at(var)); } header.reserved = ((rsibytes.at(0) >> 7) & 0x01); rsibytes[0] = rsibytes[0] & 0x7F; header.streamIdentifier = (int)CommonUtils::charArrayToULongLong(rsibytes); string payload; if(!sockUtil->readData(header.payloadLength, payload)) { return NULL; } fd.append(payload); CommonUtils::printHEX(fd); return getFrameByType(payload, header); }