Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =====================================================================================================
- FieldPhpWebIOCP.cpp
- =====================================================================================================
- #include "stdafx.h"
- #include "FieldPhpWebIOCP.h"
- #include "FieldPhpWebIOCPSocket.h"
- #include "FieldGlobal.h"
- #include "AtumError.h"
- CFieldPHPWebIOCP::CFieldPHPWebIOCP(int nPort, char *szLocalIP) :CIOCP(0, SIZE_MAX_FIELDWEBSERVER_SESSION, nPort, szLocalIP, ST_FIELD_WEB_SERVER)
- {
- CFieldPHPWebIOCPSocket::ms_pFieldWebIOCP = this;
- CFieldPHPWebIOCPSocket * pFieldWebIOCPSocket = new CFieldPHPWebIOCPSocket[m_dwArrayClientSize];
- m_pArrayIOCPSocket = pFieldWebIOCPSocket;
- for(int i = 0; i < m_dwArrayClientSize; i++)
- {
- m_ArrayClient[i] = &pFieldWebIOCPSocket[i];
- m_ArrayClient[i]->InitIOCPSocket(i);
- }
- m_pFieldIOCP = NULL;
- }
- CFieldPHPWebIOCP::~CFieldPHPWebIOCP()
- {
- ListenerClose();
- IOCPClean();
- memset(m_ArrayClient, 0x00, sizeof(CIOCPSocket*) * COUNT_MAX_SOCKET_SESSION);
- if (NULL != m_pArrayIOCPSocket)
- {
- delete[] (CFieldPHPWebIOCPSocket*)m_pArrayIOCPSocket;
- m_pArrayIOCPSocket = NULL;
- }
- }
- BOOL CFieldPHPWebIOCP::IOCPInit()
- {
- g_pFieldGlobal->WriteSystemLogEX(TRUE, " [Notify] CFieldPHPWebIOCP::IOCPInit# 10000 \r\n");
- g_pFieldGlobal->WriteSystemLogEX(TRUE, " [Notify] CFieldPHPWebIOCP::IOCPInit# 16000 CFieldWebTickManager::InitTickManager# !\r\n");
- g_pFieldGlobal->WriteSystemLogEX(TRUE, " [Notify] CFieldPHPWebIOCP::IOCPInit# 20000 end !\r\n");
- CIOCP::IOCPInit();
- return TRUE;
- }
- void CFieldPHPWebIOCP::SetFieldIOCP(CFieldIOCP *pFieldIOCP)
- {
- m_pFieldIOCP = pFieldIOCP;
- }
- void CFieldPHPWebIOCP::IOCPClean(void)
- {
- CIOCP::IOCPClean();
- }
- SThreadInfo* CFieldPHPWebIOCP::CheckIOCPThread(DWORD i_dwThreadIdToExclude)
- {
- SThreadInfo* pTInfo = CIOCP::CheckIOCPThread(i_dwThreadIdToExclude);
- if (pTInfo
- && !m_MonitorIOCPSocketPtrVector.empty())
- {
- }
- return pTInfo;
- }
- =====================================================================================================
- FieldPhpWebIOCP.h
- =====================================================================================================
- #if !defined(AFX_PHPAUTHIOCP_H__89992FF9_ADF7_4FFF_A639_F9BC79F85619__INCLUDED_)
- #define AFX_PHPAUTHIOCP_H__89992FF9_ADF7_4FFF_A639_F9BC79F85619__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #include "stdafx.h"
- #include "IOCP.h"
- #include "ServerGroup.h"
- class CFieldIOCP;
- class CFieldPHPWebIOCPSocket;
- class CFieldPHPWebIOCP : public CIOCP
- {
- friend class CFieldPHPWebIOCPSocket;
- public:
- CFieldPHPWebIOCP(int nPort, char *szLocalIP = "127.0.0.1");
- virtual ~CFieldPHPWebIOCP();
- public:
- public:
- inline CFieldPHPWebIOCPSocket* GetFieldWebIOCPSocket(int idx);
- public:
- virtual BOOL IOCPInit();
- virtual void IOCPClean(void);
- virtual SThreadInfo* CheckIOCPThread(DWORD i_dwThreadIdToExclude);
- void SetFieldIOCP(CFieldIOCP *pFieldIOCP);
- private:
- CFieldIOCP *m_pFieldIOCP;
- };
- CFieldPHPWebIOCPSocket* CFieldPHPWebIOCP::GetFieldWebIOCPSocket(int idx)
- {
- return (CFieldPHPWebIOCPSocket*)GetIOCPSocket(idx);
- }
- #endif // !defined(AFX_PHPAUTHIOCP_H__89992FF9_ADF7_4FFF_A639_F9BC79F85619__INCLUDED_)
- =====================================================================================================
- FieldPhpWebIOCPSocket.cpp
- =====================================================================================================
- #include "stdafx.h"
- #include "FieldPhpWebIOCPSocket.h"
- #include "FieldPhpWebIOCP.h"
- #include "FieldGlobal.h"
- #include "AtumError.h"
- #include "FieldIOCP.h"
- #include "FieldIOCPSocket.h"
- CFieldPHPWebIOCP *CFieldPHPWebIOCPSocket::ms_pFieldWebIOCP = NULL;
- CFieldPHPWebIOCPSocket::CFieldPHPWebIOCPSocket()
- {
- m_PeerSocketType = ST_INVALID_TYPE;
- }
- CFieldPHPWebIOCPSocket::~CFieldPHPWebIOCPSocket()
- {
- }
- BOOL CFieldPHPWebIOCPSocket::OnRecvdPacketFieldWebServer(const char* pPacket, int nLength, BYTE nSeq, char* pPeerIP, int nPeerPort, SThreadInfo *i_pThreadInfo)
- {
- CFieldIOCP* pFieldIOCP = GetFieldIOCP();
- // you can get current online player by pFieldIOCP -> get socket by account or uniquenumber bla bla
- // put function that your want here
- // pPacket = your data that send from php
- // nLength = size of your data
- return TRUE;
- }
- void CFieldPHPWebIOCPSocket::OnConnect(void)
- {
- if (0 != strncmp(g_pFieldGlobal->GetIPLocal(), m_szPeerIP, strlen(m_szPeerIP)))
- {
- Close(0x01000);
- return;
- }
- char szSystemLog[256];
- sprintf(szSystemLog, "Socket Connect Web SocketIndex[%3d] PeerIP[%15s] Port[%4d]\r\n",
- this->GetClientArrayIndex(), m_szPeerIP, m_nPeerPort);
- g_pGlobal->WriteSystemLog(szSystemLog);
- DBGOUT(szSystemLog);
- m_PeerSocketType = ST_INVALID_TYPE;
- CIOCPSocket::OnConnect();
- }
- void CFieldPHPWebIOCPSocket::OnClose(int reason)
- {
- char szSystemLog[1024];
- sprintf(szSystemLog, "Socket Closed Web SocketIndex[%3d] SocketType[%d] PeerIP[%15s] Port[%4d] MaxWriteBufCounts[%4d] ==> reason %d[%#08X]\r\n",
- this->GetClientArrayIndex(), m_PeerSocketType, m_szPeerIP, m_nPeerPort, m_nMaxWriteBufCounts, reason, reason);
- g_pGlobal->WriteSystemLog(szSystemLog);
- DBGOUT(szSystemLog);
- m_PeerSocketType = ST_INVALID_TYPE;
- CIOCPSocket::OnClose(30);
- }
- =====================================================================================================
- FieldPhpWebIOCPSocket.h
- =====================================================================================================
- #if !defined(AFX_PHPWEBIOCPSOCKET_H__9C62870A_F7ED_49A2_9583_956845931320__INCLUDED_)
- #define AFX_PHPWEBIOCPSOCKET_H__9C62870A_F7ED_49A2_9583_956845931320__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #include "FieldPhpWebIOCP.h"
- #include "AtumProtocol.h"
- class CFieldIOCP;
- class CFieldPHPWebIOCPSocket : public CIOCPSocket
- {
- friend class CFieldPHPWebIOCP;
- public:
- CFieldPHPWebIOCPSocket();
- ~CFieldPHPWebIOCPSocket();
- public:
- BOOL OnRecvdPacketFieldWebServer(const char* pPacket, int nLength, BYTE nSeq, char* pPeerIP = "", int nPeerPort = 0, SThreadInfo *i_pThreadInfo=NULL);
- void OnConnect(void);
- void OnClose(int reason = 0);
- protected:
- CFieldIOCP *GetFieldIOCP() { return ms_pFieldWebIOCP->m_pFieldIOCP; }
- CFieldPHPWebIOCP *GetFieldWebIOCP() { return ms_pFieldWebIOCP; }
- private:
- static CFieldPHPWebIOCP *ms_pFieldWebIOCP;
- };
- #endif // !defined(AFX_PHPWEBIOCPSOCKET_H__9C62870A_F7ED_49A2_9583_956845931320__INCLUDED_)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement