Exemple #1
0
void CSteamBase::RunCallbacks()
{
	std::vector<SteamAPIResult_t>::iterator iter;

	for (iter = _results.begin(); iter < _results.end(); iter++)
	{
		SteamAPIResult_t result = *iter;

		if (_resultHandlers.find(result.call) != _resultHandlers.end())
		{
			_resultHandlers[result.call]->Run(result.data, false, result.call);
		}

		std::vector<CCallbackBase*>::iterator cbiter;

		for (cbiter = _callbacks.begin(); cbiter < _callbacks.end(); cbiter++)
		{
			CCallbackBase* cb = *cbiter;

			if (cb && cb->GetICallback() == result.type)
			{
				cb->Run(result.data, false, 0);
			}
		}

		if (result.data)
		{
			free(result.data);
		}
	}

	_results.clear();
}
Exemple #2
0
void CallbackManager::RunAPICallbacks(HSteamPipe pipe, SteamAPICallCompleted_t *call)
{
	SteamAPICall_t apicall = call->m_hAsyncCall;

	APICallsMap::const_iterator iter = apicalls.find(apicall);

	if(iter == apicalls.end())
		return;

	CCallbackBase *callback = iter->second;

	int size = callback->GetCallbackSizeBytes();
	void *data = malloc(size);

	bool failed = false;
	bool iok = provider.Steam_GetAPICallResult(pipe, apicall, data, size, callback->GetICallback(), &failed);

	callback->Run(data, (!iok || failed), apicall);

	free(data);
}