Пример #1
0
int _tmain(int argc, _TCHAR* argv[])
{
    try
    {
        LoadConfig();

        boost::asio::io_service io_service;

        APP_EVENT("Application Start");

        // Initialise server.
        http::server::server s(io_service);

        if ( ! s.start() )
        {
            APP_ERROR("Http Tips Server Start Error");
            return 0;
        }

        APP_ERROR("Application Start Succeed");

        // Set console control handler to allow server to be stopped.
        console_ctrl_function = boost::bind(&http::server::server::stop, &s);
        SetConsoleCtrlHandler(console_ctrl_handler, TRUE);

        // Run the server until stopped.
        io_service.run();
    }
    catch (std::exception& e)
    {
        std::cerr << "exception: " << e.what() << "\n";
    }

    return 0;
}
Пример #2
0
Файл: xdll.cpp Проект: uvbs/XDLL
BOOL CXdllApp::PreTranslateMessage(MSG* pMsg) 
{
	if(pMsg->message == WM_ACTIVATE)
	{
		APP_EVENT("CXdllApp::PreTranslateMessage WM_ACTIVATE");
	}
	
	return CWinApp::PreTranslateMessage(pMsg);
}
//---------------------------------------------------------------------------------
// Name: enter() 
//---------------------------------------------------------------------------------
void GameplayState::enter(App * app)
{
    initState();
    
    BATTLE_CITY->loadMap( getNextMapNum() );
    setMapFrame();

    resetGame();
    incTimesPlayed();
    
    APP_EVENT( GAME_STARTED );
}
Пример #4
0
LiveAppModuleImpl::~LiveAppModuleImpl()
{
	APP_EVENT("destruct LiveAppModuleImpl begin " << this);

	m_LogClient->DoSaveLog(m_streamBuffer->GetStatistics(), *m_Manager, *m_ipPool);
	m_LogClient->SendLog();

	m_timer.stop();

	if (m_StunTypeResolver)
	{
		m_StunTypeResolver->Cancel();
		m_StunTypeResolver.reset();
	}

	// 注意创建/启动/删除的顺序,PeerManager依赖于StreamBuffer
	m_mediaServer.reset();
	APP_EVENT("LiveAppModuleImpl::~LiveAppModuleImpl delete mediaserver");
	m_tracker.reset();
	APP_EVENT("LiveAppModuleImpl::~LiveAppModuleImpl delete tracker");
	m_streamBuffer.reset();
	APP_EVENT("LiveAppModuleImpl::~LiveAppModuleImpl delete streambuffer");
	m_Manager.reset();
	APP_EVENT("LiveAppModuleImpl::~LiveAppModuleImpl delete peermanager");


	APP_EVENT("destruct LiveAppModuleImpl end " << this);
	TRACE(TEXT("destruct LiveAppModuleImpl end %p\n"), this);


	TEST_LOG_OUT_ONCE("live end.");
}
Пример #5
0
bool LiveAppModuleImpl::DispatchUdpPacket(BYTE* data, int size, const InetSocketAddress& remoteSockAddr, UINT proxyType, ExtraProxyEnum extraProxy)
{
	m_Statistics.TotalFlow.Download.Record( size );
	const size_t totalDataSize = size;
	APP_EVENT( "DispatchUdpPacket " << make_buffer_pair(data, size) << " from " << remoteSockAddr );//<< " " << HexEncoding::Encode(string((const char*)data, size)) );
	//BYTE* rawData = data;
	//size_t rawSize = size;
	this->RecordDownload(size);
	SimpleSocketAddress sockAddr(remoteSockAddr);

	if ((size_t) size >= sizeof( OLD_UDP_PACKET_HEAD ) + sizeof( GUID ) )
	{
#ifndef _PPL_TEMP_DISABLE_TRACKER
		PacketInputStream is( data, size );
		// 可能是老报文,尝试由tracker模块处理
		if (m_tracker->TryHandleResponse( is, remoteSockAddr, (BYTE)proxyType ))
		{
			m_trackerFlow.Download.Record(size);
			return true;
		}
#endif
	}
	// 解混淆
	int len = PacketObfuscator::UnObfuscate( reinterpret_cast<BYTE*>( data ), size );
	if ( len <= 0 )
	{
		// 解混淆失败,可能是vod的报文
		if ( VODProxy::HandlePacket( data, size, remoteSockAddr, m_BootModule.get(), m_StunModule.get() ) )
		{
			return true;
		}
		m_Statistics.TotalInvalidPackets++;
		if ( size >= 3 )
		{
			VIEW_ERROR( "LiveAppModuleImpl::DispatchUdpPacket unshuffle failed 1 " << make_tuple( size, len ) << sockAddr << " action=" << strings::format( "0x%02X%02X 0x%02X", data[0], data[1], data[2] ) );
		}
		else
		{
			VIEW_ERROR( "LiveAppModuleImpl::DispatchUdpPacket unshuffle failed 1 " << make_tuple( size, len ) << sockAddr );
		}
		//LIVE_ASSERT( false );
		return false;
	}
	if ( size < len )
	{
		m_Statistics.TotalInvalidPackets++;
		VIEW_ERROR( "LiveAppModuleImpl::DispatchUdpPacket unshuffle failed 2 " << make_tuple( size, len ) << sockAddr );
		return false;
	}
	// 截去混淆部分的头,取出真正的报文部分
	data += len;
	size -= len;

	PacketInputStream is( data, size );
	NEW_UDP_PACKET_HEAD head;
	is >> head;
	if ( !is )
	{
		m_Statistics.TotalInvalidPackets++;
		VIEW_ERROR( "LiveAppModuleImpl::DispatchUdpPacket invalid 2 " << size << " " << sockAddr );
		return false;
	}
	if ( head.ProtocolVersion < SYNACAST_VERSION_3 )
	{
		m_Statistics.TotalInvalidPackets++;
		// 检查版本号与MAGIC
		APP_ERROR("Invalid protocol version " << head.ProtocolVersion << " " << sockAddr);
		return false;
	}
	UDPT_INFO("LiveAppModuleImpl::DispatchUdp "<<sockAddr << " " << (int)head.Action);

	// session 处理完
	if ( head.Action & PPL_P2P_CONNECTION_ACTION_FLAG )
	{
		UDP_SESSION_INFO sessionInfo;
		is >> sessionInfo;
		if ( !is )
		{
			m_Statistics.TotalInvalidPackets++;
			APP_ERROR("Invalid session size " << size << " " << sockAddr);
			return false;
		}
		bool res = m_Manager->HandleUDPSessionPacket(is, head, sessionInfo, sockAddr);
		if ( false == res )
		{
			m_Statistics.TotalInvalidPackets++;
		}
		else
		{
			m_Statistics.UDPConnectionFlow.Download.Record(totalDataSize);
		}
		return res;
	}