Beispiel #1
0
int     DoSplashLoadFile(const char* filename) {
    INVOKE(SplashLoadFile,0)(filename);
}
Beispiel #2
0
void LobbyClient::OnHttpResult(int err, const std::string &result, const HttpParam *headers)
{
	HttpClient::Param::const_iterator it;

	switch( err )
	{
		case 301: // moved permanently
			assert(STATE_IDLE != _state);
			++_redirectCount;
			it = headers->find("Location"); // TODO: case insensitive search
			if( headers->end() == it || _redirectCount > LOBBY_MAX_REDIRECT )
			{
				_state = STATE_IDLE;
				if( eventError )
				{
					INVOKE(eventError)("lobby: redirect failed");
				}
				return;
			}
			_lobbyUrl = it->second;
			_http->Get(_lobbyUrl, _param);
			break;

		case 200: // ok
			assert(STATE_IDLE != _state);
			switch( _state )
			{
				case STATE_ANNOUNCE:
				{
					if( result.substr(0, 2) == "ok" )
					{
						LARGE_INTEGER dueTime;
						dueTime.QuadPart = -300000000; // 30 seconds
						SetWaitableTimer(_timer, &dueTime, 0, NULL, NULL, FALSE);
					}
					else
					{
						_state = STATE_IDLE;
						TRACE("lobby: invalid server reply - %s", result.c_str());
						if( eventError )
						{
							INVOKE(eventError) ("invalid lobby reply");
						}
					}
					break;
				}

				case STATE_LIST:
				{
					_state = STATE_IDLE;
					std::vector<std::string> svlist;
					if( ParseServerList(svlist, result) )
					{
						if( eventServerListReply )
						{
							INVOKE(eventServerListReply) (svlist);
						}
					}
					else
					{
						TRACE("lobby: invalid server reply - %s", result.c_str());
						if( eventError )
						{
							INVOKE(eventError) ("invalid lobby reply");
						}
					}
					break;
				}

				case STATE_CANCEL:
				{
					CancelWaitableTimer(_timer);
					_state = STATE_IDLE;
					if( result.substr(0, 2) != "ok" )
					{
						TRACE("lobby: invalid server reply - %s", result.c_str());
						if( eventError )
						{
							INVOKE(eventError) ("invalid lobby reply");
						}
					}
					Release();
					break;
				}
			} // end of switch( _state )
			break;

		default:  // unknown error
			_state = STATE_IDLE;
			std::stringstream s;
			s << "lobby: error " << err;
			if( eventError )
			{
				INVOKE(eventError)(s.str());
			}
	}
}
int     DoSplashLoadMemory(void* pdata, int size) {
    INVOKE(SplashLoadMemory,0)(pdata, size);
}