コード例 #1
0
ファイル: SnapShotFilter.cpp プロジェクト: ykli/misc
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++;
	}
}
コード例 #2
0
ファイル: Http2Handler.cpp プロジェクト: GYGit/ffead-cpp
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);
}
コード例 #3
0
ファイル: Http2Handler.cpp プロジェクト: GYGit/ffead-cpp
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);
		}
コード例 #4
0
ファイル: Http2Handler.cpp プロジェクト: GYGit/ffead-cpp
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);
}