Example #1
0
	Int64 HawkMemoryFile::Write(const void* pData, Int64 iSize, Bool bFlush)
	{
		if (!pData || iSize <= 0 || (m_eOpenType != OPEN_WRITE && m_eOpenType != OPEN_RW && m_eOpenType != OPEN_APPEND) )
			return 0;

		if (m_iFilePos + iSize > m_iFileSize) 
		{
			Int64 iTmp = m_iFileSize + iSize;
			void* pTmp = HawkMalloc((Size_t)iTmp);
			memset(pTmp, 0, (Size_t)iTmp);
			
			if (m_pData)
			{
				memcpy(pTmp, m_pData, (Size_t)m_iFileSize);
				HawkFree(m_pData);
				m_pData = 0;
			}
			
			m_pData = pTmp;
			m_iFileSize = m_iFilePos + iSize;
		}

		memcpy((Char*)m_pData+m_iFilePos, pData, (Size_t)iSize);
		m_iFilePos  += iSize;
		return iSize;
	}
Example #2
0
	Bool HawkMemoryFile::Chsize(Int64 iSize)
	{		
		if((m_eOpenType == OPEN_WRITE || m_eOpenType == OPEN_RW || m_eOpenType == OPEN_APPEND))
		{
			void* pData = HawkMalloc((Size_t)iSize);
			if (pData)
			{
				memset(pData, 0, (Size_t)iSize);
				if(m_pData)
				{
					Int64 iTmp = HawkMath::Min<Int64>(iSize, m_iFileSize);
					memcpy(pData, m_pData, (Size_t)iTmp);
					
					HawkFree(m_pData);
					m_pData = 0;
				}
			}			

			m_iFileSize = iSize;
			m_iFilePos  = 0;				
			m_pData     = pData;
			return true;
		}
		return false;
	}
Example #3
0
	HawkLogServer::~HawkLogServer()
	{
		m_sSocket.Close();

		HawkFree(m_pFmtBuf);
		HAWK_RELEASE(m_pRecvBuf);		
		HAWK_RELEASE(m_pLogCache);
		HAWK_RELEASE(m_pLogFile);
	}
	HawkSpinLock::~HawkSpinLock()
	{
		if (m_pSpinLock)
		{
			pthread_spin_destroy((pthread_spinlock_t*)m_pSpinLock);
			HawkFree(m_pSpinLock);
			m_pSpinLock = 0;
		}
	}
Example #5
0
HawkOctets::~HawkOctets()
{
    if(m_pBase)
    {
        HawkFree(m_pBase);
        m_pBase = 0;
    }
    m_pHigh = 0;
    m_iCap  = 0;
}
Example #6
0
	HawkThread::~HawkThread()
	{
		Close();
		
		if (m_pThread)
		{
			HawkFree(m_pThread);
			m_pThread = 0;
		}
		
		HAWK_RELEASE(m_pMutex);
	}
Example #7
0
	Int64 HawkMemoryFile::Seek(Int64 iOffset, SeekPos ePos)
	{
		Int64 iRealPos = m_iFilePos;
		Int64 iOldPos  = m_iFilePos;
		if (ePos == POS_BEGIN)
		{
			iRealPos = iOffset;
		}
		else if (ePos == POS_CURRENT)
		{
			iRealPos = m_iFilePos + iOffset;
		}
		else
		{
			iRealPos = m_iFileSize + iOffset;
		}

		if(iRealPos > m_iFileSize)
		{
			if((m_eOpenType == OPEN_WRITE || m_eOpenType == OPEN_RW || m_eOpenType == OPEN_APPEND))
			{		
				void* pData = HawkMalloc((Size_t)iRealPos);
				if (pData)
				{
					memset(pData, 0, (Size_t)iRealPos);
					if(m_pData)
					{
						memcpy(pData, m_pData, (Size_t)m_iFileSize);

						HawkFree(m_pData);
						m_pData = 0;
					}
				}
				
				m_iFileSize = iRealPos;
				m_iFilePos  = iRealPos;				
				m_pData     = pData;
			}
			else
			{
				m_iFilePos = m_iFileSize;
			}
		}
		else
		{
			m_iFilePos = iRealPos;
		}

		return m_iFilePos - iOldPos;
	}
	HawkSpinLock::HawkSpinLock() : m_pSpinLock(0)
	{
		m_pSpinLock = HawkMalloc(sizeof(pthread_spinlock_t));	
		if (pthread_spin_init((pthread_spinlock_t*)m_pSpinLock, 0) != HAWK_OK)
		{
			HawkFree(m_pSpinLock);
			m_pSpinLock = 0;
		}

#ifdef _DEBUG
		m_bLocked = false;
		m_sFile   = "";
		m_iLine   = 0;
		m_iThread = 0;
#endif
	}
Example #9
0
	Bool HawkMemoryFile::Close()
	{
		m_iFilePos  = 0;
		m_iFileSize = 0;

		if (!m_bExtra)
		{
			HawkFree(m_pData);
			m_pData = 0;
		}
		else
		{
			m_pData = 0;
		}

		return true;
	}
Example #10
0
	Bool  HawkThread::Close()
	{
		if (m_pThread && m_bRunning) 
		{
			m_bRunning = false;
			m_iState   = STATE_CLOSING;

			//µÈ´ýÏ߳̽áÊø
			pthread_join(*((pthread_t*)m_pThread), 0);

			HawkFree(m_pThread);
			m_pThread = 0;
			m_iId     = 0;
			m_iState  = STATE_CLOSED;
		}

		ClearTaskQueue();
		return true;
	}
Example #11
0
HawkOctets& HawkOctets::Reserve(UInt32 iSize)
{
    if(iSize > m_iCap)
    {
        for(iSize--,m_iCap=2; iSize>>=1; m_iCap<<=1);
        iSize = (UInt32)((Char*)m_pHigh-(Char*)m_pBase);
        void* pBase = m_pBase;
        m_pBase = HawkRealloc(m_pBase,m_iCap);
        if (!m_pBase)
        {
            HawkFree(pBase);
            T_Exception("Octets Realloc Failed.");
        }
        else
        {
            m_pHigh = (Char*)m_pBase+iSize;
        }
    }
    return *this;
}
Example #12
0
	Bool HawkGateThread::FreeSession(Session* pSession)
	{
		if (pSession)
		{
			//释放事件
			if (pSession->Event)
			{
				bufferevent_free((bufferevent*)pSession->Event);
				pSession->Event = 0;
			}
	
			//释放内存
			HAWK_RELEASE(pSession->Addr);
			HAWK_RELEASE(pSession->IBuffer);
			HAWK_RELEASE(pSession->ISecurity);
			HAWK_RELEASE(pSession->OSecurity);
			
			//释放会话
			HawkFree(pSession);

			return true;
		}
		return false;
	}
Example #13
0
void HawkRefCounter::operator delete(void* pData, Size_t iSize)
{
    HawkFree(pData);
}