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


C++ MemoryBuffer::Add方法代码示例

本文整理汇总了C++中MemoryBuffer::Add方法的典型用法代码示例。如果您正苦于以下问题:C++ MemoryBuffer::Add方法的具体用法?C++ MemoryBuffer::Add怎么用?C++ MemoryBuffer::Add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MemoryBuffer的用法示例。


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

示例1: while

int ehttp:: read_header( int fd, void *cookie, string &header, MemoryBuffer &message )
{

    header="";
    unsigned int offset=0;
    int r = 0;
    while((offset=header.find("\r\n\r\n"))==string::npos )
    {
        input_buffer[0]=0;
        r=pRecv((void*)fd,&input_buffer[0],INPUT_BUFFER_SIZE,cookie);
        if( r < 0 )
            return EHTTP_ERR_GENERIC;
        input_buffer[r]=0;
        header+=input_buffer;
    }
    //message=header.substr(offset+4); // gotta have our shit globally i guess
    // gotta calculate somehow =/ hmmmm cuz r isnt good enough since some might be leftover
    // no cuz its teh offset in the full recieved header not our input buffer
    // input buffer is oging to change right we are interested in the last chunk of it only ahh
    DWORD inputPos = (offset + 4) % INPUT_BUFFER_SIZE;
    message.Add(&input_buffer[inputPos], r - inputPos);
    // then isntead of message add to our MemBuffer

    // can't we take the message from parse_message, and add it to our buffer if len > 0?
    // keep in mind that null will fuck us up =/ah so it would be pretty much this
    // and message= would be adding to mem buffer instead
    /* Fix the case where only "GET /xxxxx HTTP1.0\r\n\r\n" is sent (no other headers)*/
    if(offset == header.find("\r\n"))
        header=header.substr(0,offset+2);
    else
        header=header.substr(0,offset);
//	DebugMsg( "HTTPServer-embed","Header:-->%s<--\r\n",header.c_str());
//	DebugMsg( "HTTPServer-embed","Message:-->%s<--\r\n",message.c_str());
    return EHTTP_ERR_OK;
}
开发者ID:Refection,项目名称:freestyledash,代码行数:35,代码来源:embedhttp.cpp

示例2: DebugMsg

int ehttp:: parse_message( int fd, void *cookie, MemoryBuffer &message )
{
    if( !contentlength ) return EHTTP_ERR_OK;

    DebugMsg( "HTTPServer-embed","Parsed content length:%d\r\n",contentlength);
    DebugMsg( "HTTPServer-embed","Actual message length read in:%d\r\n", message.GetDataLength());

    unsigned int recieved = message.GetDataLength();
    while( recieved < contentlength)
    {
        input_buffer[0]=0;
        int r = recv((int)fd, input_buffer, INPUT_BUFFER_SIZE, 0);
        if( r < 0 )
            return EHTTP_ERR_GENERIC;

        message.Add(input_buffer, r);

        DebugMsg( "HTTPServer-embed", "Message Length:  %d", r);

        // Decrement our recieved content
        recieved += r;

    }

    if(request_header["Content-Type"].find("multipart") == 0)
    {
        DebugMsg("HTTPServer-embed", "Parsing Multipart Upload");
        if(parse_out_chunks(cookie, message, post_chunks) == EHTTP_ERR_OK) {
            if(parse_out_entries(cookie, post_chunks) == EHTTP_ERR_OK) {
                if(parse_out_entry_headers( cookie, post_chunks) == EHTTP_ERR_OK) {
                    DebugMsg("HTTPServer-embed", "Parsing Successful");
                }
            }
        }
    }
    else
    {

        // Got here, good, we got the entire reported msg length
        //DebugMsg( "HTTPServer-embed","Entire message is <%s>\r\n",message.c_str());
        string test = (char*)message.GetData();
        parse_out_pairs(cookie, test, post_parms);
    }



    return EHTTP_ERR_OK;
}
开发者ID:Refection,项目名称:freestyledash,代码行数:48,代码来源:embedhttp.cpp

示例3: ConvertMemoryBufferToBMPBuffer

HRESULT ConvertMemoryBufferToBMPBuffer( MemoryBuffer &image_in, MemoryBuffer &image_out)
{
	// Check to ensure that our data has a valid length before proceeding
	if( image_in.GetDataLength() == 0 ) return S_FALSE;

	// Set up a timer class to profile our code
	ATG::Timer m_Timer;
	double timeStart, timeStop;

	// Begin Profiling our Texture Creation Code
	timeStart = m_Timer.GetAbsoluteTime();

	IDirect3DTexture9 * pTexture;
	HRESULT retVal = D3DXCreateTextureFromFileInMemoryEx(
		CFreestyleApp::getInstance().m_pd3dDevice,
		image_in.GetData(),
		image_in.GetDataLength(),
		D3DX_DEFAULT_NONPOW2,
		D3DX_DEFAULT_NONPOW2,
		1,
		D3DUSAGE_CPU_CACHED_MEMORY,
		D3DFMT_LIN_A8R8G8B8,
		D3DPOOL_DEFAULT,
		D3DX_FILTER_NONE,
		D3DX_FILTER_NONE,
		0,
		NULL,
		NULL,
		&pTexture
	);

	// End Profiling our Texture Creation Code
	timeStop = m_Timer.GetAbsoluteTime();
	DebugMsg("ConvertImageToBMP", "Texture Creation took %4.2f seconds to complete", (float)(timeStop - timeStart));

	// If our texture was created successfully, 
	if(retVal = D3D_OK) {

		//Begin Profiling our Data Manipulation Code
		timeStart = m_Timer.GetAbsoluteTime();

		// Get our level desc
		D3DSURFACE_DESC desc;
		pTexture->GetLevelDesc(0, &desc);

		// Now lock our data
		D3DLOCKED_RECT lock;
		RECT rect = {0, 0, desc.Width, desc.Height};
		pTexture->LockRect(0, &lock, &rect, D3DLOCK_READONLY);
	
		//Read our data
		DWORD headerSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
		DWORD dataLen = lock.Pitch * desc.Height;
		DWORD * dataBuffer = (DWORD*)malloc( dataLen + headerSize );
		DWORD * address = (DWORD*)lock.pBits;

		// Create file our header
		BITMAPFILEHEADER* fHead = (BITMAPFILEHEADER*)dataBuffer;
		fHead->bfType = 0x424D; // "BM"
		fHead->bfSize = SwapDWORD(dataLen + headerSize);
		fHead->bfReserved1 = 0;
		fHead->bfReserved2 = 0;
		fHead->bfOffBits = SwapDWORD(headerSize);

		// Create our info header
		BITMAPINFOHEADER* iHead = (BITMAPINFOHEADER*)(fHead + 1);
		ZeroMemory(iHead, sizeof(BITMAPINFOHEADER));
		iHead->biSize = SwapDWORD(sizeof(BITMAPINFOHEADER));
		iHead->biWidth = SwapDWORD(desc.Width);
		iHead->biHeight = SwapDWORD(desc.Height);
		iHead->biPlanes = SwapWORD(1);
		iHead->biBitCount = SwapWORD(32);
		iHead->biSizeImage = SwapDWORD(dataLen);

		// Copy over our raw (BGRA)
		DWORD* rawPtr = (DWORD*)(iHead + 1);
		for(int y = desc.Height - 1; y >= 0; y--) {
			for(DWORD x = 0; x < desc.Width; x++) {

				DWORD cp = (y * lock.Pitch) + (x * 4);
				DWORD * temp = (DWORD*)(address + (cp / 4));
				*rawPtr = SwapDWORD(*temp);				
				rawPtr++;
			}
		}
		
		// Unlock our texture
		pTexture->UnlockRect(0);

		// End Profiling our Data Modification Code
		timeStop = m_Timer.GetAbsoluteTime();
		DebugMsg("ConvertImageToBMP", "Data Modification took %4.2f seconds to complete", (float)(timeStop - timeStart));

		// Begin Profiling our Memory Copy Code
		timeStart = m_Timer.GetAbsoluteTime();
		
		// Copy our completed data to our new buffer
		image_out.Add(dataBuffer, (headerSize + dataLen));

		// End Profiling our Memory Copy Code
//.........这里部分代码省略.........
开发者ID:DeezNuts12,项目名称:freestyledash,代码行数:101,代码来源:BMPTools.cpp


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