lsteamclient: Handle callbacks for ISteamNetworking interfaces
(cherry picked from commit 8bb3afc9a2
)
This commit is contained in:
parent
5db246cc03
commit
485258d15c
3 changed files with 155 additions and 5 deletions
|
@ -78,11 +78,6 @@ void cppISteamNetworkingUtils_SteamNetworkingUtils003_SetDebugOutputFunction(voi
|
||||||
((ISteamNetworkingUtils*)linux_side)->SetDebugOutputFunction((ESteamNetworkingSocketsDebugOutputType)eDetailLevel, (FSteamNetworkingSocketsDebugOutput)pfnFunc);
|
((ISteamNetworkingUtils*)linux_side)->SetDebugOutputFunction((ESteamNetworkingSocketsDebugOutputType)eDetailLevel, (FSteamNetworkingSocketsDebugOutput)pfnFunc);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cppISteamNetworkingUtils_SteamNetworkingUtils003_SetConfigValue(void *linux_side, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType eDataType, const void * pArg)
|
|
||||||
{
|
|
||||||
return ((ISteamNetworkingUtils*)linux_side)->SetConfigValue((ESteamNetworkingConfigValue)eValue, (ESteamNetworkingConfigScope)eScopeType, (intptr_t)scopeObj, (ESteamNetworkingConfigDataType)eDataType, (const void *)pArg);
|
|
||||||
}
|
|
||||||
|
|
||||||
ESteamNetworkingGetConfigValueResult cppISteamNetworkingUtils_SteamNetworkingUtils003_GetConfigValue(void *linux_side, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType * pOutDataType, void * pResult, size_t * cbResult)
|
ESteamNetworkingGetConfigValueResult cppISteamNetworkingUtils_SteamNetworkingUtils003_GetConfigValue(void *linux_side, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType * pOutDataType, void * pResult, size_t * cbResult)
|
||||||
{
|
{
|
||||||
return ((ISteamNetworkingUtils*)linux_side)->GetConfigValue((ESteamNetworkingConfigValue)eValue, (ESteamNetworkingConfigScope)eScopeType, (intptr_t)scopeObj, (ESteamNetworkingConfigDataType *)pOutDataType, (void *)pResult, (size_t *)cbResult);
|
return ((ISteamNetworkingUtils*)linux_side)->GetConfigValue((ESteamNetworkingConfigValue)eValue, (ESteamNetworkingConfigScope)eScopeType, (intptr_t)scopeObj, (ESteamNetworkingConfigDataType *)pOutDataType, (void *)pResult, (size_t *)cbResult);
|
||||||
|
|
|
@ -212,6 +212,7 @@ manually_handled_methods = {
|
||||||
],
|
],
|
||||||
"cppISteamNetworkingUtils_SteamNetworkingUtils003": [
|
"cppISteamNetworkingUtils_SteamNetworkingUtils003": [
|
||||||
"AllocateMessage",
|
"AllocateMessage",
|
||||||
|
"SetConfigValue",
|
||||||
],
|
],
|
||||||
"cppISteamNetworkingMessages_SteamNetworkingMessages002": [
|
"cppISteamNetworkingMessages_SteamNetworkingMessages002": [
|
||||||
"ReceiveMessagesOnChannel"
|
"ReceiveMessagesOnChannel"
|
||||||
|
|
|
@ -21,6 +21,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(steamclient);
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#define SDKVER_150
|
#define SDKVER_150
|
||||||
#include "struct_converters.h"
|
#include "struct_converters.h"
|
||||||
|
#include "cb_converters.h"
|
||||||
|
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
|
|
||||||
|
@ -208,4 +209,157 @@ int cppISteamNetworkingMessages_SteamNetworkingMessages002_ReceiveMessagesOnChan
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma pack( push, 8 )
|
||||||
|
struct winSteamNetConnectionStatusChangedCallback_t_712 {
|
||||||
|
HSteamNetConnection m_hConn;
|
||||||
|
SteamNetConnectionInfo_t m_info __attribute__((aligned(8)));
|
||||||
|
ESteamNetworkingConnectionState m_eOldState;
|
||||||
|
} __attribute__ ((ms_struct));
|
||||||
|
#pragma pack( pop )
|
||||||
|
|
||||||
|
typedef void (*CDECL win_FnSteamNetConnectionStatusChanged)(winSteamNetConnectionStatusChangedCallback_t_712 *);
|
||||||
|
win_FnSteamNetConnectionStatusChanged win_SteamNetConnectionStatusChanged;
|
||||||
|
|
||||||
|
void lin_SteamNetConnectionStatusChanged(SteamNetConnectionStatusChangedCallback_t *l_dat)
|
||||||
|
{
|
||||||
|
win_FnSteamNetConnectionStatusChanged fn = win_SteamNetConnectionStatusChanged;
|
||||||
|
if(fn){
|
||||||
|
struct winSteamNetConnectionStatusChangedCallback_t_712 w_dat;
|
||||||
|
cb_SteamNetConnectionStatusChangedCallback_t_712(l_dat, &w_dat);
|
||||||
|
fn(&w_dat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef void (*CDECL win_FnSteamNetAuthenticationStatusChanged)(SteamNetAuthenticationStatus_t *);
|
||||||
|
win_FnSteamNetAuthenticationStatusChanged win_SteamNetAuthenticationStatusChanged;
|
||||||
|
|
||||||
|
void lin_SteamNetAuthenticationStatusChanged(SteamNetAuthenticationStatus_t *dat)
|
||||||
|
{
|
||||||
|
win_FnSteamNetAuthenticationStatusChanged fn = win_SteamNetAuthenticationStatusChanged;
|
||||||
|
if(fn)
|
||||||
|
fn(dat);
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef void (*CDECL win_FnSteamRelayNetworkStatusChanged)(SteamRelayNetworkStatus_t *);
|
||||||
|
win_FnSteamRelayNetworkStatusChanged win_SteamRelayNetworkStatusChanged;
|
||||||
|
|
||||||
|
void lin_SteamRelayNetworkStatusChanged(SteamRelayNetworkStatus_t *dat)
|
||||||
|
{
|
||||||
|
win_FnSteamRelayNetworkStatusChanged fn = win_SteamRelayNetworkStatusChanged;
|
||||||
|
if(fn)
|
||||||
|
fn(dat);
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef void (*CDECL win_FnSteamNetworkingMessagesSessionRequest)(SteamNetworkingMessagesSessionRequest_t *);
|
||||||
|
win_FnSteamNetworkingMessagesSessionRequest win_SteamNetworkingMessagesSessionRequest;
|
||||||
|
|
||||||
|
void lin_SteamNetworkingMessagesSessionRequest(SteamNetworkingMessagesSessionRequest_t *dat)
|
||||||
|
{
|
||||||
|
win_FnSteamNetworkingMessagesSessionRequest fn = win_SteamNetworkingMessagesSessionRequest;
|
||||||
|
if(fn)
|
||||||
|
fn(dat);
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef void (*CDECL win_FnSteamNetworkingMessagesSessionFailed)(SteamNetworkingMessagesSessionFailed_t *);
|
||||||
|
win_FnSteamNetworkingMessagesSessionFailed win_SteamNetworkingMessagesSessionFailed;
|
||||||
|
|
||||||
|
void lin_SteamNetworkingMessagesSessionFailed(SteamNetworkingMessagesSessionFailed_t *dat)
|
||||||
|
{
|
||||||
|
win_FnSteamNetworkingMessagesSessionFailed fn = win_SteamNetworkingMessagesSessionFailed;
|
||||||
|
if(fn)
|
||||||
|
fn(dat);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cppISteamNetworkingUtils_SteamNetworkingUtils003_SetConfigValue(void *linux_side,
|
||||||
|
ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType,
|
||||||
|
intptr_t scopeObj, ESteamNetworkingConfigDataType eDataType, const void *pArg)
|
||||||
|
{
|
||||||
|
bool ret;
|
||||||
|
void *lin_fn; /* api requires passing pointer-to-pointer */
|
||||||
|
switch(eValue){
|
||||||
|
case k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged:
|
||||||
|
if(!pArg){
|
||||||
|
ret = ((ISteamNetworkingUtils*)linux_side)->SetConfigValue(eValue, eScopeType, scopeObj, eDataType, NULL);
|
||||||
|
}else{
|
||||||
|
if(*(void **)pArg == NULL)
|
||||||
|
lin_fn = NULL;
|
||||||
|
else
|
||||||
|
lin_fn = (void *)&lin_SteamNetConnectionStatusChanged;
|
||||||
|
|
||||||
|
ret = ((ISteamNetworkingUtils*)linux_side)->SetConfigValue(eValue, eScopeType, scopeObj, eDataType, &lin_fn);
|
||||||
|
|
||||||
|
if(ret)
|
||||||
|
win_SteamNetConnectionStatusChanged = *(win_FnSteamNetConnectionStatusChanged*)pArg;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
case k_ESteamNetworkingConfig_Callback_AuthStatusChanged:
|
||||||
|
if(!pArg){
|
||||||
|
ret = ((ISteamNetworkingUtils*)linux_side)->SetConfigValue(eValue, eScopeType, scopeObj, eDataType, NULL);
|
||||||
|
}else{
|
||||||
|
if(*(void **)pArg == NULL)
|
||||||
|
lin_fn = NULL;
|
||||||
|
else
|
||||||
|
lin_fn = (void *)&lin_SteamNetAuthenticationStatusChanged;
|
||||||
|
|
||||||
|
ret = ((ISteamNetworkingUtils*)linux_side)->SetConfigValue(eValue, eScopeType, scopeObj, eDataType, &lin_fn);
|
||||||
|
|
||||||
|
if(ret)
|
||||||
|
win_SteamNetAuthenticationStatusChanged = *(win_FnSteamNetAuthenticationStatusChanged*)pArg;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
case k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged:
|
||||||
|
if(!pArg){
|
||||||
|
ret = ((ISteamNetworkingUtils*)linux_side)->SetConfigValue(eValue, eScopeType, scopeObj, eDataType, NULL);
|
||||||
|
}else{
|
||||||
|
if(*(void **)pArg == NULL)
|
||||||
|
lin_fn = NULL;
|
||||||
|
else
|
||||||
|
lin_fn = (void *)&lin_SteamRelayNetworkStatusChanged;
|
||||||
|
|
||||||
|
ret = ((ISteamNetworkingUtils*)linux_side)->SetConfigValue(eValue, eScopeType, scopeObj, eDataType, &lin_fn);
|
||||||
|
|
||||||
|
if(ret)
|
||||||
|
win_SteamRelayNetworkStatusChanged = *(win_FnSteamRelayNetworkStatusChanged*)pArg;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
case k_ESteamNetworkingConfig_Callback_MessagesSessionRequest:
|
||||||
|
if(!pArg){
|
||||||
|
ret = ((ISteamNetworkingUtils*)linux_side)->SetConfigValue(eValue, eScopeType, scopeObj, eDataType, NULL);
|
||||||
|
}else{
|
||||||
|
if(*(void **)pArg == NULL)
|
||||||
|
lin_fn = NULL;
|
||||||
|
else
|
||||||
|
lin_fn = (void *)&lin_SteamNetworkingMessagesSessionRequest;
|
||||||
|
|
||||||
|
ret = ((ISteamNetworkingUtils*)linux_side)->SetConfigValue(eValue, eScopeType, scopeObj, eDataType, &lin_fn);
|
||||||
|
|
||||||
|
if(ret)
|
||||||
|
win_SteamNetworkingMessagesSessionRequest = *(win_FnSteamNetworkingMessagesSessionRequest*)pArg;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
case k_ESteamNetworkingConfig_Callback_MessagesSessionFailed:
|
||||||
|
if(!pArg){
|
||||||
|
ret = ((ISteamNetworkingUtils*)linux_side)->SetConfigValue(eValue, eScopeType, scopeObj, eDataType, NULL);
|
||||||
|
}else{
|
||||||
|
if(*(void **)pArg == NULL)
|
||||||
|
lin_fn = NULL;
|
||||||
|
else
|
||||||
|
lin_fn = (void *)&lin_SteamNetworkingMessagesSessionFailed;
|
||||||
|
|
||||||
|
ret = ((ISteamNetworkingUtils*)linux_side)->SetConfigValue(eValue, eScopeType, scopeObj, eDataType, &lin_fn);
|
||||||
|
|
||||||
|
if(ret)
|
||||||
|
win_SteamNetworkingMessagesSessionFailed = *(win_FnSteamNetworkingMessagesSessionFailed*)pArg;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return ((ISteamNetworkingUtils*)linux_side)->SetConfigValue((ESteamNetworkingConfigValue)eValue, (ESteamNetworkingConfigScope)eScopeType, (intptr_t)scopeObj, (ESteamNetworkingConfigDataType)eDataType, (const void *)pArg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue