mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-14 02:27:40 -04:00
Remove unused dead weight CSR and SimpleNet code
This commit is contained in:
@ -80,7 +80,6 @@ target_link_libraries(plClient pfConditional)
|
|||||||
target_link_libraries(plClient pfConsole)
|
target_link_libraries(plClient pfConsole)
|
||||||
target_link_libraries(plClient pfConsoleCore)
|
target_link_libraries(plClient pfConsoleCore)
|
||||||
target_link_libraries(plClient pfCrashHandler)
|
target_link_libraries(plClient pfCrashHandler)
|
||||||
target_link_libraries(plClient pfCsrSrv)
|
|
||||||
target_link_libraries(plClient pfGameGUIMgr)
|
target_link_libraries(plClient pfGameGUIMgr)
|
||||||
target_link_libraries(plClient pfGameMgr)
|
target_link_libraries(plClient pfGameMgr)
|
||||||
target_link_libraries(plClient pfGameScoreMgr)
|
target_link_libraries(plClient pfGameScoreMgr)
|
||||||
@ -138,7 +137,6 @@ target_link_libraries(plClient plVault)
|
|||||||
target_link_libraries(plClient pnAddrInfo)
|
target_link_libraries(plClient pnAddrInfo)
|
||||||
target_link_libraries(plClient pnAsyncCore)
|
target_link_libraries(plClient pnAsyncCore)
|
||||||
target_link_libraries(plClient pnAsyncCoreExe)
|
target_link_libraries(plClient pnAsyncCoreExe)
|
||||||
target_link_libraries(plClient pnCsrNet)
|
|
||||||
target_link_libraries(plClient pnDispatch)
|
target_link_libraries(plClient pnDispatch)
|
||||||
target_link_libraries(plClient pnEncryption)
|
target_link_libraries(plClient pnEncryption)
|
||||||
target_link_libraries(plClient pnFactory)
|
target_link_libraries(plClient pnFactory)
|
||||||
@ -154,7 +152,6 @@ target_link_libraries(plClient pnNetProtocol)
|
|||||||
target_link_libraries(plClient pnNucleusInc)
|
target_link_libraries(plClient pnNucleusInc)
|
||||||
target_link_libraries(plClient pnProduct)
|
target_link_libraries(plClient pnProduct)
|
||||||
target_link_libraries(plClient pnSceneObject)
|
target_link_libraries(plClient pnSceneObject)
|
||||||
target_link_libraries(plClient pnSimpleNet)
|
|
||||||
target_link_libraries(plClient pnTimer)
|
target_link_libraries(plClient pnTimer)
|
||||||
target_link_libraries(plClient pnUtils)
|
target_link_libraries(plClient pnUtils)
|
||||||
target_link_libraries(plClient pnUtilsExe)
|
target_link_libraries(plClient pnUtilsExe)
|
||||||
|
@ -156,8 +156,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
#include "pfSecurePreloader/pfSecurePreloader.h"
|
#include "pfSecurePreloader/pfSecurePreloader.h"
|
||||||
#include "pfLocalizationMgr/pfLocalizationMgr.h"
|
#include "pfLocalizationMgr/pfLocalizationMgr.h"
|
||||||
|
|
||||||
#include "pfCsrSrv/pfCsrSrv.h"
|
|
||||||
|
|
||||||
#include "plTweak.h"
|
#include "plTweak.h"
|
||||||
|
|
||||||
#define MSG_LOADING_BAR
|
#define MSG_LOADING_BAR
|
||||||
@ -263,8 +261,6 @@ hsBool plClient::Shutdown()
|
|||||||
plSynchEnabler ps(false); // disable dirty state tracking during shutdown
|
plSynchEnabler ps(false); // disable dirty state tracking during shutdown
|
||||||
delete fProgressBar;
|
delete fProgressBar;
|
||||||
|
|
||||||
CsrSrvShutdown();
|
|
||||||
|
|
||||||
// Just in case, clear this out (trying to fix a crash bug where this is still active at shutdown)
|
// Just in case, clear this out (trying to fix a crash bug where this is still active at shutdown)
|
||||||
plDispatch::SetMsgRecieveCallback(nil);
|
plDispatch::SetMsgRecieveCallback(nil);
|
||||||
|
|
||||||
@ -2544,8 +2540,6 @@ void plClient::ICompleteInit () {
|
|||||||
plClientMsg* clientMsg = new plClientMsg(plClientMsg::kInitComplete);
|
plClientMsg* clientMsg = new plClientMsg(plClientMsg::kInitComplete);
|
||||||
clientMsg->SetBCastFlag(plMessage::kBCastByType);
|
clientMsg->SetBCastFlag(plMessage::kBCastByType);
|
||||||
clientMsg->Send();
|
clientMsg->Send();
|
||||||
|
|
||||||
CsrSrvInitialize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
@ -53,7 +53,6 @@ target_link_libraries(plUruLauncher pnNetCli)
|
|||||||
target_link_libraries(plUruLauncher pnNetCommon)
|
target_link_libraries(plUruLauncher pnNetCommon)
|
||||||
target_link_libraries(plUruLauncher pnNetProtocol)
|
target_link_libraries(plUruLauncher pnNetProtocol)
|
||||||
target_link_libraries(plUruLauncher pnProduct)
|
target_link_libraries(plUruLauncher pnProduct)
|
||||||
target_link_libraries(plUruLauncher pnSimpleNet)
|
|
||||||
target_link_libraries(plUruLauncher pnTimer)
|
target_link_libraries(plUruLauncher pnTimer)
|
||||||
target_link_libraries(plUruLauncher pnUtils)
|
target_link_libraries(plUruLauncher pnUtils)
|
||||||
target_link_libraries(plUruLauncher pnUtilsExe)
|
target_link_libraries(plUruLauncher pnUtilsExe)
|
||||||
|
@ -9,7 +9,6 @@ add_subdirectory(pfConditional)
|
|||||||
add_subdirectory(pfConsole)
|
add_subdirectory(pfConsole)
|
||||||
add_subdirectory(pfConsoleCore)
|
add_subdirectory(pfConsoleCore)
|
||||||
add_subdirectory(pfCrashHandler)
|
add_subdirectory(pfCrashHandler)
|
||||||
add_subdirectory(pfCsrSrv)
|
|
||||||
add_subdirectory(pfGameGUIMgr)
|
add_subdirectory(pfGameGUIMgr)
|
||||||
add_subdirectory(pfGameMgr)
|
add_subdirectory(pfGameMgr)
|
||||||
add_subdirectory(pfGameScoreMgr)
|
add_subdirectory(pfGameScoreMgr)
|
||||||
|
@ -179,57 +179,6 @@ PF_CONSOLE_CMD(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Server.Csr group
|
|
||||||
PF_CONSOLE_SUBGROUP(Server, Csr)
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
PF_CONSOLE_CMD(
|
|
||||||
Server_Csr,
|
|
||||||
Host,
|
|
||||||
"string address",
|
|
||||||
"Set the Csr Server address"
|
|
||||||
) {
|
|
||||||
SetCsrSrvHostname(params[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
PF_CONSOLE_CMD(
|
|
||||||
Server_Csr,
|
|
||||||
N,
|
|
||||||
"string base64Key",
|
|
||||||
"Set the Csr Server N key"
|
|
||||||
) {
|
|
||||||
int baseLength = hsStrlen((const char *)params[0]);
|
|
||||||
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength, (const char *)params[0])) {
|
|
||||||
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
|
|
||||||
kNetDiffieHellmanKeyBits / 8);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
|
|
||||||
kNetDiffieHellmanKeyBits / 8, kCsrDhNData);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
PF_CONSOLE_CMD(
|
|
||||||
Server_Csr,
|
|
||||||
X,
|
|
||||||
"string base64Key",
|
|
||||||
"Set the Csr Server X key"
|
|
||||||
) {
|
|
||||||
int baseLength = hsStrlen((const char *)params[0]);
|
|
||||||
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength, (const char *)params[0])) {
|
|
||||||
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
|
|
||||||
kNetDiffieHellmanKeyBits / 8);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
|
|
||||||
kNetDiffieHellmanKeyBits / 8, kCsrDhXData);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
// Server.Game group
|
// Server.Game group
|
||||||
PF_CONSOLE_SUBGROUP(Server, Game)
|
PF_CONSOLE_SUBGROUP(Server, Game)
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
include_directories(../../CoreLib)
|
|
||||||
include_directories(../../FeatureLib)
|
|
||||||
include_directories(../../NucleusLib)
|
|
||||||
include_directories(../../NucleusLib/inc)
|
|
||||||
include_directories(../../PubUtilLib)
|
|
||||||
|
|
||||||
set(pfCsrSrv_SOURCES
|
|
||||||
pfCsrSrv.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
set(pfCsrSrv_HEADERS
|
|
||||||
Pch.h
|
|
||||||
pfCsrSrv.h
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library(pfCsrSrv STATIC ${pfCsrSrv_SOURCES} ${pfCsrSrv_HEADERS})
|
|
||||||
|
|
||||||
source_group("Source Files" FILES ${pfCsrSrv_SOURCES})
|
|
||||||
source_group("Header Files" FILES ${pfCsrSrv_HEADERS})
|
|
@ -1,58 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/FeatureLib/pfCsrSrv/Pch.h
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#ifdef PLASMA20_SOURCES_PLASMA_FEATURELIB_PFCSRSRV_PCH_H
|
|
||||||
#error "Header $/Plasma20/Sources/Plasma/FeatureLib/pfCsrSrv/Pch.h included more than once"
|
|
||||||
#endif
|
|
||||||
#define PLASMA20_SOURCES_PLASMA_FEATURELIB_PFCSRSRV_PCH_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "pfCsrSrv.h"
|
|
||||||
|
|
||||||
#pragma warning(push, 0)
|
|
||||||
#include "pfConsole/pfConsole.h"
|
|
||||||
#pragma warning(pop)
|
|
@ -1,160 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/FeatureLib/pfCsrSrv/pfCsrSrv.cpp
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#include "Pch.h"
|
|
||||||
#pragma hdrstop
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Local types
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Local data
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
static bool s_running;
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Local functions
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool Recv_ExecConsoleCmd (
|
|
||||||
SimpleNetConn * ,
|
|
||||||
CsrNet_ExecConsoleCmd * msg
|
|
||||||
) {
|
|
||||||
LogMsg(kLogPerf, L"pfCsrSrv: ExecConsoleCmd: %S", msg->cmd);
|
|
||||||
|
|
||||||
pfConsole::RunCommandAsync(msg->cmd);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool OnMsg (
|
|
||||||
SimpleNetConn * conn,
|
|
||||||
SimpleNet_MsgHeader * msg
|
|
||||||
) {
|
|
||||||
bool result;
|
|
||||||
|
|
||||||
#define DISPATCH(a) case kCsrNet_##a: result = Recv_##a(conn, (CsrNet_##a *) msg); break
|
|
||||||
switch (msg->messageId) {
|
|
||||||
DISPATCH(ExecConsoleCmd);
|
|
||||||
default:
|
|
||||||
result = false;
|
|
||||||
}
|
|
||||||
#undef DISPATCH
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void OnError (
|
|
||||||
SimpleNetConn * ,
|
|
||||||
ENetError error
|
|
||||||
) {
|
|
||||||
LogMsg(kLogPerf, L"pfCsrSrv NetError: %s", NetErrorToString(error));
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool QueryAccept (
|
|
||||||
void * ,
|
|
||||||
unsigned channel,
|
|
||||||
SimpleNetConn * ,
|
|
||||||
const plNetAddress& addr
|
|
||||||
) {
|
|
||||||
plString str = addr.AsString();
|
|
||||||
LogMsg(kLogPerf, L"pfCsrSrv: Accepted connection from %s", str.c_str());
|
|
||||||
return channel == kSimpleNetChannelCsr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Exports
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrSrvInitialize () {
|
|
||||||
|
|
||||||
#ifdef PLASMA_ENABLE_CSR_EXTERNAL
|
|
||||||
|
|
||||||
LogMsg(kLogPerf, L"pfCsrSrv: Initializing");
|
|
||||||
|
|
||||||
s_running = true;
|
|
||||||
|
|
||||||
SimpleNetInitialize();
|
|
||||||
SimpleNetCreateChannel(kSimpleNetChannelCsr, OnMsg, OnError);
|
|
||||||
SimpleNetStartListening(QueryAccept, nil);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrSrvShutdown () {
|
|
||||||
|
|
||||||
#ifdef PLASMA_ENABLE_CSR_EXTERNAL
|
|
||||||
|
|
||||||
LogMsg(kLogPerf, L"pfCsrSrv: Shutting down");
|
|
||||||
|
|
||||||
s_running = false;
|
|
||||||
|
|
||||||
SimpleNetStopListening();
|
|
||||||
SimpleNetDestroyChannel(kSimpleNetChannelCsr);
|
|
||||||
SimpleNetShutdown();
|
|
||||||
|
|
||||||
#endif
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/FeatureLib/pfCsrSrv/pfCsrSrv.h
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#ifndef PLASMA20_SOURCES_PLASMA_FEATURELIB_PFCSRSRV_PFCSRSRV_H
|
|
||||||
#define PLASMA20_SOURCES_PLASMA_FEATURELIB_PFCSRSRV_PFCSRSRV_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "pnCsrNet/pnCsrNet.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* pfCsrSrv
|
|
||||||
* - Executes remote CSR commands received through pnCsrNet
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
void CsrSrvInitialize ();
|
|
||||||
void CsrSrvShutdown ();
|
|
||||||
|
|
||||||
|
|
||||||
#endif // PLASMA20_SOURCES_PLASMA_FEATURELIB_PFCSRSRV_PFCSRSRV_H
|
|
@ -4,8 +4,6 @@ add_subdirectory(inc)
|
|||||||
add_subdirectory(pnAddrInfo)
|
add_subdirectory(pnAddrInfo)
|
||||||
add_subdirectory(pnAsyncCore)
|
add_subdirectory(pnAsyncCore)
|
||||||
add_subdirectory(pnAsyncCoreExe)
|
add_subdirectory(pnAsyncCoreExe)
|
||||||
#add_subdirectory(pnCsrCli) # Not being used in any current sln
|
|
||||||
add_subdirectory(pnCsrNet)
|
|
||||||
add_subdirectory(pnDispatch)
|
add_subdirectory(pnDispatch)
|
||||||
add_subdirectory(pnEncryption)
|
add_subdirectory(pnEncryption)
|
||||||
add_subdirectory(pnFactory)
|
add_subdirectory(pnFactory)
|
||||||
@ -20,7 +18,6 @@ add_subdirectory(pnNetCommon)
|
|||||||
add_subdirectory(pnNetProtocol)
|
add_subdirectory(pnNetProtocol)
|
||||||
add_subdirectory(pnProduct)
|
add_subdirectory(pnProduct)
|
||||||
add_subdirectory(pnSceneObject)
|
add_subdirectory(pnSceneObject)
|
||||||
add_subdirectory(pnSimpleNet)
|
|
||||||
add_subdirectory(pnTimer)
|
add_subdirectory(pnTimer)
|
||||||
add_subdirectory(pnUtils)
|
add_subdirectory(pnUtils)
|
||||||
add_subdirectory(pnUtilsExe)
|
add_subdirectory(pnUtilsExe)
|
||||||
|
@ -162,8 +162,8 @@ enum EConnType {
|
|||||||
kConnTypeSrvToState = 17,
|
kConnTypeSrvToState = 17,
|
||||||
kConnTypeSrvToLog = 18,
|
kConnTypeSrvToLog = 18,
|
||||||
kConnTypeSrvToScore = 19,
|
kConnTypeSrvToScore = 19,
|
||||||
kConnTypeCliToCsr = 20,
|
kConnTypeCliToCsr = 20, // DEAD
|
||||||
kConnTypeSimpleNet = 21,
|
kConnTypeSimpleNet = 21, // DEAD
|
||||||
kConnTypeCliToGateKeeper = 22,
|
kConnTypeCliToGateKeeper = 22,
|
||||||
|
|
||||||
// Text connections
|
// Text connections
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
include_directories(../../CoreLib)
|
|
||||||
include_directories(../../NucleusLib)
|
|
||||||
|
|
||||||
set(pnCsrCli_SOURCES
|
|
||||||
pnCsrCli.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
set(pnCsrCli_HEADERS
|
|
||||||
Pch.h
|
|
||||||
pnCsrCli.h
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library(pnCsrCli STATIC ${pnCsrCli_SOURCES} ${pnCsrCli_HEADERS})
|
|
||||||
|
|
||||||
source_group("Source Files" FILES ${pnCsrCli_SOURCES})
|
|
||||||
source_group("Header Files" FILES ${pnCsrCli_HEADERS})
|
|
@ -1,56 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/NucleusLib/pnCsrCli/Pch.h
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNCSRCLI_PCH_H
|
|
||||||
#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnCsrCli/Pch.h included more than once"
|
|
||||||
#endif
|
|
||||||
#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNCSRCLI_PCH_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "pnCsrCli.h"
|
|
||||||
|
|
||||||
#include <malloc.h>
|
|
@ -1,269 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/NucleusLib/pnCsrCli/pnCsrCli.cpp
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#include "Pch.h"
|
|
||||||
#pragma hdrstop
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Local types
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Local data
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
static bool s_running;
|
|
||||||
static CCritSect s_critsect;
|
|
||||||
static SimpleNetConn * s_conn;
|
|
||||||
static FCsrCliOnError s_onError;
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Local functions
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static SimpleNetConn * GetConnIncRef () {
|
|
||||||
|
|
||||||
SimpleNetConn * conn;
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
if (nil != (conn = s_conn))
|
|
||||||
SimpleNetConnIncRef(conn);
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
return conn;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool SimpleNetOnMsg (
|
|
||||||
SimpleNetConn * ,
|
|
||||||
SimpleNet_MsgHeader *
|
|
||||||
) {
|
|
||||||
LogMsg(kLogPerf, L"pnCsrCli: Rcvd unexpected message from peer");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void SimpleNetOnError (
|
|
||||||
SimpleNetConn * ,
|
|
||||||
ENetError error
|
|
||||||
) {
|
|
||||||
if (!s_running)
|
|
||||||
return;
|
|
||||||
|
|
||||||
LogMsg(kLogPerf, L"pnCsrCli: NetError: %s", NetErrorToString(error));
|
|
||||||
|
|
||||||
if (error == kNetErrDisconnected)
|
|
||||||
CsrCliDisconnect();
|
|
||||||
|
|
||||||
s_onError(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void SimpleNetOnConnect (
|
|
||||||
void * param,
|
|
||||||
SimpleNetConn * conn,
|
|
||||||
ENetError result
|
|
||||||
) {
|
|
||||||
FCsrCliOnConnect onConnect = (FCsrCliOnConnect)param;
|
|
||||||
|
|
||||||
LogMsg(kLogPerf, L"pnCsrCli: OnConnect: %s", NetErrorToString(result));
|
|
||||||
|
|
||||||
if (s_conn)
|
|
||||||
CsrCliDisconnect();
|
|
||||||
|
|
||||||
if (IS_NET_SUCCESS(result)) {
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
s_conn = conn;
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (onConnect)
|
|
||||||
onConnect(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void Send_ExecConsoleCmd (const char cmd[]) {
|
|
||||||
|
|
||||||
SimpleNetConn * conn = GetConnIncRef();
|
|
||||||
if (!conn)
|
|
||||||
return;
|
|
||||||
|
|
||||||
unsigned cmdBytes = StrBytes(cmd);
|
|
||||||
|
|
||||||
CsrNet_ExecConsoleCmd * msg;
|
|
||||||
|
|
||||||
unsigned msgBytes
|
|
||||||
= sizeof(*msg)
|
|
||||||
- sizeof(msg->cmd)
|
|
||||||
+ cmdBytes
|
|
||||||
+ sizeof(cmd[0])
|
|
||||||
;
|
|
||||||
|
|
||||||
msg = new(_alloca(msgBytes)) CsrNet_ExecConsoleCmd();
|
|
||||||
msg->messageBytes = msgBytes;
|
|
||||||
|
|
||||||
StrCopy(msg->cmd, cmd, cmdBytes / sizeof(cmd[0]));
|
|
||||||
msg->cmd[cmdBytes] = 0;
|
|
||||||
|
|
||||||
SimpleNetSend(conn, msg);
|
|
||||||
SimpleNetConnDecRef(conn);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Exports
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrCliInitialize (FCsrCliOnError onError) {
|
|
||||||
|
|
||||||
ASSERT(!s_running);
|
|
||||||
ASSERT(onError);
|
|
||||||
|
|
||||||
s_running = true;
|
|
||||||
s_onError = onError;
|
|
||||||
|
|
||||||
SimpleNetInitialize();
|
|
||||||
SimpleNetCreateChannel(kSimpleNetChannelCsr, SimpleNetOnMsg, SimpleNetOnError);
|
|
||||||
};
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrCliShutdown () {
|
|
||||||
|
|
||||||
s_running = false;
|
|
||||||
s_onError = nil;
|
|
||||||
|
|
||||||
CsrCliDisconnect();
|
|
||||||
SimpleNetDestroyChannel(kSimpleNetChannelCsr);
|
|
||||||
SimpleNetShutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrCliStartConnecting (
|
|
||||||
const wchar_t addr[],
|
|
||||||
FCsrCliOnConnect onConnect
|
|
||||||
) {
|
|
||||||
ASSERT(s_running);
|
|
||||||
|
|
||||||
CsrCliDisconnect();
|
|
||||||
SimpleNetStartConnecting(kSimpleNetChannelCsr, addr, SimpleNetOnConnect, onConnect);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrCliDisconnect () {
|
|
||||||
|
|
||||||
SimpleNetConn * conn = nil;
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
SWAP(conn, s_conn);
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
if (conn)
|
|
||||||
SimpleNetDisconnect(conn);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrCliToggleAvatarPhysical () {
|
|
||||||
|
|
||||||
ASSERT(s_running);
|
|
||||||
|
|
||||||
Send_ExecConsoleCmd("Avatar.Physics.TogglePhysical");
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrCliWarpPlayerHere (unsigned playerId) {
|
|
||||||
|
|
||||||
ASSERT(s_running);
|
|
||||||
|
|
||||||
char cmd[1024];
|
|
||||||
StrPrintf(cmd, arrsize(cmd), "CCR.WarpPlayerHere %u", playerId);
|
|
||||||
Send_ExecConsoleCmd(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrCliWarpToPlayer (unsigned playerId) {
|
|
||||||
|
|
||||||
ASSERT(s_running);
|
|
||||||
|
|
||||||
char cmd[1024];
|
|
||||||
StrPrintf(cmd, arrsize(cmd), "CCR.WarpToPlayer %u", playerId);
|
|
||||||
Send_ExecConsoleCmd(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrCliLinkPlayerHere (unsigned playerId) {
|
|
||||||
|
|
||||||
ASSERT(s_running);
|
|
||||||
|
|
||||||
char cmd[1024];
|
|
||||||
StrPrintf(cmd, arrsize(cmd), "CCR.LinkPlayerHere %u", playerId);
|
|
||||||
Send_ExecConsoleCmd(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrCliLinkToPlayer (unsigned playerId) {
|
|
||||||
|
|
||||||
ASSERT(s_running);
|
|
||||||
|
|
||||||
char cmd[1024];
|
|
||||||
StrPrintf(cmd, arrsize(cmd), "CCR.LinkToPlayer %u", playerId);
|
|
||||||
Send_ExecConsoleCmd(cmd);
|
|
||||||
}
|
|
@ -1,83 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/NucleusLib/pnCsrCli/pnCsrCli.h
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#ifndef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNCSRCLI_PNCSRCLI_H
|
|
||||||
#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNCSRCLI_PNCSRCLI_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "pnCsrNet/pnCsrNet.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* pnCsrCli
|
|
||||||
* - Connects to pfCsrSrv in remote CSR client.
|
|
||||||
* - Sends commands to pfCsrSrv for remote execution.
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
typedef void (*FCsrCliOnError) (ENetError error);
|
|
||||||
|
|
||||||
void CsrCliInitialize (FCsrCliOnError onError);
|
|
||||||
void CsrCliShutdown ();
|
|
||||||
|
|
||||||
typedef void (*FCsrCliOnConnect) (ENetError result);
|
|
||||||
|
|
||||||
void CsrCliStartConnecting (
|
|
||||||
const wchar_t addr[],
|
|
||||||
FCsrCliOnConnect onConnect
|
|
||||||
);
|
|
||||||
void CsrCliDisconnect ();
|
|
||||||
|
|
||||||
void CsrCliToggleAvatarPhysical ();
|
|
||||||
void CsrCliWarpPlayerHere (unsigned playerId);
|
|
||||||
void CsrCliWarpToPlayer (unsigned playerId);
|
|
||||||
void CsrCliLinkPlayerHere (unsigned playerId);
|
|
||||||
void CsrCliLinkToPlayer (unsigned playerId);
|
|
||||||
|
|
||||||
|
|
||||||
#endif // PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNCSRCLI_PNCSRCLI_H
|
|
@ -1,16 +0,0 @@
|
|||||||
include_directories(../../CoreLib)
|
|
||||||
include_directories(../../NucleusLib)
|
|
||||||
|
|
||||||
set(pnCsrNet_SOURCES
|
|
||||||
pnCsrNet.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
set(pnCsrNet_HEADERS
|
|
||||||
Pch.h
|
|
||||||
pnCsrNet.h
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library(pnCsrNet STATIC ${pnCsrNet_SOURCES} ${pnCsrNet_HEADERS})
|
|
||||||
|
|
||||||
source_group("Source Files" FILES ${pnCsrNet_SOURCES})
|
|
||||||
source_group("Header Files" FILES ${pnCsrNet_HEADERS})
|
|
@ -1,54 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/NucleusLib/pnCsrNet/Pch.h
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNCSRNET_PCH_H
|
|
||||||
#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnCsrNet/Pch.h included more than once"
|
|
||||||
#endif
|
|
||||||
#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNCSRNET_PCH_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "pnCsrNet.h"
|
|
@ -1,49 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/NucleusLib/pnCsrNet/pnCsrNet.cpp
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#include "Pch.h"
|
|
||||||
#pragma hdrstop
|
|
@ -1,88 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/NucleusLib/pnCsrNet/pnCsrNet.h
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#ifndef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNCSRNET_PNCSRNET_H
|
|
||||||
#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNCSRNET_PNCSRNET_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "pnSimpleNet/pnSimpleNet.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* CSR Client Automation - Types and Constants
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
// Newer CSR game clients must remain compatible with older CSR tools,
|
|
||||||
// therefore these values may not change. Only append to this enum.
|
|
||||||
enum {
|
|
||||||
kCsrNet_ExecConsoleCmd,
|
|
||||||
};
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// BEGIN PACKED DATA STRUCTURES
|
|
||||||
//============================================================================
|
|
||||||
#pragma pack(push,1)
|
|
||||||
|
|
||||||
#define CSRNET_MSG(a) \
|
|
||||||
CsrNet_##a () : SimpleNet_MsgHeader(kSimpleNetChannelCsr, kCsrNet_##a) { }
|
|
||||||
|
|
||||||
struct CsrNet_ExecConsoleCmd : SimpleNet_MsgHeader {
|
|
||||||
CSRNET_MSG (ExecConsoleCmd);
|
|
||||||
|
|
||||||
char cmd[1]; // null-terminated string
|
|
||||||
};
|
|
||||||
|
|
||||||
#undef CSRNET_MSG
|
|
||||||
//============================================================================
|
|
||||||
// END PACKED DATA STRUCTURES
|
|
||||||
//============================================================================
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
|
|
||||||
#endif // PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNCSRNET_PNCSRNET_H
|
|
@ -121,20 +121,6 @@ const AccountRoleInfo kAccountRoles[] = {
|
|||||||
{ kAccountRolesAllUserFlags, "End" }
|
{ kAccountRolesAllUserFlags, "End" }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Csr
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
enum ECsrFlags {
|
|
||||||
kCsrFlagAdmin = 1 << 0,
|
|
||||||
kCsrFlagDisabled = 1 << 1,
|
|
||||||
kCsrFlagServer = 1 << 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Game Score Types
|
* Game Score Types
|
||||||
|
@ -46,10 +46,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
uint8_t kAuthDhNData[kNetDiffieHellmanKeyBits / 8] = {0};
|
uint8_t kAuthDhNData[kNetDiffieHellmanKeyBits / 8] = {0};
|
||||||
uint8_t kAuthDhXData[kNetDiffieHellmanKeyBits / 8] = {0};
|
uint8_t kAuthDhXData[kNetDiffieHellmanKeyBits / 8] = {0};
|
||||||
|
|
||||||
// CSR Server
|
|
||||||
uint8_t kCsrDhNData[kNetDiffieHellmanKeyBits / 8] = {0};
|
|
||||||
uint8_t kCsrDhXData[kNetDiffieHellmanKeyBits / 8] = {0};
|
|
||||||
|
|
||||||
// Game Server
|
// Game Server
|
||||||
uint8_t kGameDhNData[kNetDiffieHellmanKeyBits / 8] = {0};
|
uint8_t kGameDhNData[kNetDiffieHellmanKeyBits / 8] = {0};
|
||||||
uint8_t kGameDhXData[kNetDiffieHellmanKeyBits / 8] = {0};
|
uint8_t kGameDhXData[kNetDiffieHellmanKeyBits / 8] = {0};
|
||||||
|
@ -51,11 +51,6 @@ static const unsigned kAuthDhGValue = 41;
|
|||||||
extern uint8_t kAuthDhNData[kNetDiffieHellmanKeyBits / 8];
|
extern uint8_t kAuthDhNData[kNetDiffieHellmanKeyBits / 8];
|
||||||
extern uint8_t kAuthDhXData[kNetDiffieHellmanKeyBits / 8];
|
extern uint8_t kAuthDhXData[kNetDiffieHellmanKeyBits / 8];
|
||||||
|
|
||||||
// CSR Server
|
|
||||||
static const unsigned kCsrDhGValue = 97;
|
|
||||||
extern uint8_t kCsrDhNData[kNetDiffieHellmanKeyBits / 8];
|
|
||||||
extern uint8_t kCsrDhXData[kNetDiffieHellmanKeyBits / 8];
|
|
||||||
|
|
||||||
// Game Server
|
// Game Server
|
||||||
static const unsigned kGameDhGValue = 73;
|
static const unsigned kGameDhGValue = 73;
|
||||||
extern uint8_t kGameDhNData[kNetDiffieHellmanKeyBits / 8];
|
extern uint8_t kGameDhNData[kNetDiffieHellmanKeyBits / 8];
|
||||||
|
@ -59,12 +59,12 @@ const wchar_t * NetProtocolToString (ENetProtocol protocol) {
|
|||||||
{ kNetProtocolDebug, L"kNetProtocolDebug" },
|
{ kNetProtocolDebug, L"kNetProtocolDebug" },
|
||||||
|
|
||||||
// Client connections
|
// Client connections
|
||||||
{ kNetProtocolCli2Csr, L"GateKeeper Server" },
|
{ kNetProtocolCli2GateKeeper, L"GateKeeper Server" },
|
||||||
{ kNetProtocolCli2Csr, L"Csr Server" },
|
{ kNetProtocolCli2Unused_02, L"kNetProtocolCli2Unused_02" },
|
||||||
{ kNetProtocolCli2Auth, L"Auth Server" },
|
{ kNetProtocolCli2Auth, L"Auth Server" },
|
||||||
{ kNetProtocolCli2Game, L"Game Server" },
|
{ kNetProtocolCli2Game, L"Game Server" },
|
||||||
{ kNetProtocolCli2File, L"File Server" },
|
{ kNetProtocolCli2File, L"File Server" },
|
||||||
{ kNetProtocolCli2Unused_01, L"kNetProtocolCli2Unused_01" },
|
{ kNetProtocolCli2Unused_01, L"kNetProtocolCli2Unused_01" },
|
||||||
|
|
||||||
// Server connections
|
// Server connections
|
||||||
{ kNetProtocolSrvConn, L"kNetProtocolSrvConn" },
|
{ kNetProtocolSrvConn, L"kNetProtocolSrvConn" },
|
||||||
|
@ -64,7 +64,7 @@ enum ENetProtocol {
|
|||||||
|
|
||||||
// Client connections
|
// Client connections
|
||||||
kNetProtocolCli2GateKeeper = 2,
|
kNetProtocolCli2GateKeeper = 2,
|
||||||
kNetProtocolCli2Csr = 3,
|
kNetProtocolCli2Unused_02 = 3,
|
||||||
kNetProtocolCli2Auth = 4,
|
kNetProtocolCli2Auth = 4,
|
||||||
kNetProtocolCli2Game = 5,
|
kNetProtocolCli2Game = 5,
|
||||||
kNetProtocolCli2File = 6,
|
kNetProtocolCli2File = 6,
|
||||||
|
@ -65,12 +65,6 @@ static const char* s_fileAddrs[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static char s_csrAddrConsole[64] = {0};
|
|
||||||
static const char* s_csrAddrs[] = {
|
|
||||||
s_csrAddrConsole
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static char s_gateKeeperAddrConsole[64] = {0};
|
static char s_gateKeeperAddrConsole[64] = {0};
|
||||||
static const char* s_gateKeeperAddrs[] = {
|
static const char* s_gateKeeperAddrs[] = {
|
||||||
s_gateKeeperAddrConsole
|
s_gateKeeperAddrConsole
|
||||||
@ -113,22 +107,6 @@ void SetFileSrvHostname (const char addr[]) {
|
|||||||
strncpy(s_fileAddrConsole, addr, arrsize(s_fileAddrConsole));
|
strncpy(s_fileAddrConsole, addr, arrsize(s_fileAddrConsole));
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Csr
|
|
||||||
//============================================================================
|
|
||||||
unsigned GetCsrSrvHostnames (const char*** addrs) {
|
|
||||||
|
|
||||||
*addrs = s_csrAddrs;
|
|
||||||
return arrsize(s_csrAddrs);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SetCsrSrvHostname (const char addr[]) {
|
|
||||||
|
|
||||||
strncpy(s_csrAddrConsole, addr, arrsize(s_csrAddrConsole));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
// GateKeeper
|
// GateKeeper
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
@ -68,7 +68,7 @@ enum ESrvType {
|
|||||||
kSrvTypeLog = 9,
|
kSrvTypeLog = 9,
|
||||||
kSrvTypeDll = 10,
|
kSrvTypeDll = 10,
|
||||||
kSrvTypeScore = 11,
|
kSrvTypeScore = 11,
|
||||||
kSrvTypeCsr = 12,
|
kSrvTypeCsr = 12, // DEAD
|
||||||
kSrvTypeGateKeeper = 13,
|
kSrvTypeGateKeeper = 13,
|
||||||
|
|
||||||
kNumSrvTypes,
|
kNumSrvTypes,
|
||||||
@ -90,9 +90,6 @@ void SetAuthSrvHostname (const char addr[]);
|
|||||||
unsigned GetFileSrvHostnames (const char*** addrs); // returns addrCount
|
unsigned GetFileSrvHostnames (const char*** addrs); // returns addrCount
|
||||||
void SetFileSrvHostname (const char addr[]);
|
void SetFileSrvHostname (const char addr[]);
|
||||||
|
|
||||||
unsigned GetCsrSrvHostnames (const char*** addrs); // returns addrCount
|
|
||||||
void SetCsrSrvHostname (const char addr[]);
|
|
||||||
|
|
||||||
unsigned GetGateKeeperSrvHostnames (const char*** addrs); // returns addrCount
|
unsigned GetGateKeeperSrvHostnames (const char*** addrs); // returns addrCount
|
||||||
void SetGateKeeperSrvHostname (const char addr[]);
|
void SetGateKeeperSrvHostname (const char addr[]);
|
||||||
|
|
||||||
|
@ -22,11 +22,6 @@ set(pnNetProtocol_PROTO_CLI2AUTH
|
|||||||
Private/Protocols/Cli2Auth/pnNpCli2Auth.cpp
|
Private/Protocols/Cli2Auth/pnNpCli2Auth.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(pnNetProtocol_PROTO_CLI2CSR
|
|
||||||
Private/Protocols/Cli2Csr/pnNpCli2Csr.h
|
|
||||||
Private/Protocols/Cli2Csr/pnNpCli2Csr.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
set(pnNetProtocol_PROTO_CLI2FILE
|
set(pnNetProtocol_PROTO_CLI2FILE
|
||||||
Private/Protocols/Cli2File/pnNpCli2File.h
|
Private/Protocols/Cli2File/pnNpCli2File.h
|
||||||
Private/Protocols/Cli2File/pnNpCli2File.cpp
|
Private/Protocols/Cli2File/pnNpCli2File.cpp
|
||||||
@ -73,18 +68,16 @@ set(pnNetProtocol_PROTO_SRV2VAULT
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_library(pnNetProtocol STATIC ${pnNetProtocol_HEADERS} ${pnNetProtocol_PRIVATE}
|
add_library(pnNetProtocol STATIC ${pnNetProtocol_HEADERS} ${pnNetProtocol_PRIVATE}
|
||||||
${pnNetProtocol_PROTO_CLI2AUTH} ${pnNetProtocol_PROTO_CLI2CSR}
|
${pnNetProtocol_PROTO_CLI2AUTH} ${pnNetProtocol_PROTO_CLI2FILE}
|
||||||
${pnNetProtocol_PROTO_CLI2FILE} ${pnNetProtocol_PROTO_CLI2GAME}
|
${pnNetProtocol_PROTO_CLI2GAME} ${pnNetProtocol_PROTO_CLI2GK}
|
||||||
${pnNetProtocol_PROTO_CLI2GK} ${pnNetProtocol_PROTO_SRV2DB}
|
${pnNetProtocol_PROTO_SRV2DB} ${pnNetProtocol_PROTO_SRV2LOG}
|
||||||
${pnNetProtocol_PROTO_SRV2LOG} ${pnNetProtocol_PROTO_SRV2MCP}
|
${pnNetProtocol_PROTO_SRV2MCP} ${pnNetProtocol_PROTO_SRV2SCORE}
|
||||||
${pnNetProtocol_PROTO_SRV2SCORE} ${pnNetProtocol_PROTO_SRV2STATE}
|
${pnNetProtocol_PROTO_SRV2STATE} ${pnNetProtocol_PROTO_SRV2VAULT}
|
||||||
${pnNetProtocol_PROTO_SRV2VAULT}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
source_group("Header Files" FILES ${pnNetProtocol_HEADERS})
|
source_group("Header Files" FILES ${pnNetProtocol_HEADERS})
|
||||||
source_group("Private" FILES ${pnNetProtocol_PRIVATE})
|
source_group("Private" FILES ${pnNetProtocol_PRIVATE})
|
||||||
source_group("Private\\Cli2Auth" FILES ${pnNetProtocol_PROTO_CLI2AUTH})
|
source_group("Private\\Cli2Auth" FILES ${pnNetProtocol_PROTO_CLI2AUTH})
|
||||||
source_group("Private\\Cli2Csr" FILES ${pnNetProtocol_PROTO_CLI2CSR})
|
|
||||||
source_group("Private\\Cli2File" FILES ${pnNetProtocol_PROTO_CLI2FILE})
|
source_group("Private\\Cli2File" FILES ${pnNetProtocol_PROTO_CLI2FILE})
|
||||||
source_group("Private\\Cli2Game" FILES ${pnNetProtocol_PROTO_CLI2GAME})
|
source_group("Private\\Cli2Game" FILES ${pnNetProtocol_PROTO_CLI2GAME})
|
||||||
source_group("Private\\Cli2GateKeeper" FILES ${pnNetProtocol_PROTO_CLI2GK})
|
source_group("Private\\Cli2GateKeeper" FILES ${pnNetProtocol_PROTO_CLI2GK})
|
||||||
|
@ -1,122 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Csr/pnNpCli2Csr.cpp
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#define USES_PROTOCOL_CLI2CSR
|
|
||||||
#include "../../../Pch.h"
|
|
||||||
#pragma hdrstop
|
|
||||||
|
|
||||||
|
|
||||||
namespace Cli2Csr {
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Cli2Csr message field definitions
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
static const NetMsgField kPingRequestFields[] = {
|
|
||||||
kNetMsgFieldTransId, // transId
|
|
||||||
kNetMsgFieldTimeMs, // pingTimeMs
|
|
||||||
NET_MSG_FIELD_VAR_COUNT(1, 64 * 1024), // payloadBytes
|
|
||||||
NET_MSG_FIELD_VAR_PTR(), // payload
|
|
||||||
};
|
|
||||||
|
|
||||||
static const NetMsgField kRegisterRequestFields[] = {
|
|
||||||
kNetMsgFieldTransId, // transId
|
|
||||||
};
|
|
||||||
|
|
||||||
static const NetMsgField kLoginRequestFields[] = {
|
|
||||||
kNetMsgFieldTransId, // transId
|
|
||||||
NET_MSG_FIELD_DWORD(), // clientChallenge
|
|
||||||
kNetMsgFieldAccountName, // csrName
|
|
||||||
kNetMsgFieldShaDigest, // challenge
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Csr2Cli message field definitions
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
static const NetMsgField kPingReplyFields[] = {
|
|
||||||
kNetMsgFieldTransId, // transId
|
|
||||||
kNetMsgFieldTimeMs, // pingTimeMs
|
|
||||||
NET_MSG_FIELD_VAR_COUNT(1, 64 * 1024), // payloadBytes
|
|
||||||
NET_MSG_FIELD_VAR_PTR(), // payload
|
|
||||||
};
|
|
||||||
|
|
||||||
static const NetMsgField kRegisterReplyFields[] = {
|
|
||||||
kNetMsgFieldTransId, // transId
|
|
||||||
NET_MSG_FIELD_DWORD(), // serverChallenge
|
|
||||||
NET_MSG_FIELD_DWORD(), // latestBuildId
|
|
||||||
};
|
|
||||||
|
|
||||||
static const NetMsgField kLoginReplyFields[] = {
|
|
||||||
kNetMsgFieldTransId, // transId
|
|
||||||
kNetMsgFieldENetError, // result
|
|
||||||
kNetMsgFieldUuid, // csrId
|
|
||||||
NET_MSG_FIELD_DWORD(), // csrFlags
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
} using namespace Cli2Csr;
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Exports
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
const NetMsg kNetMsg_Cli2Csr_PingRequest = NET_MSG(kCli2Csr_PingRequest, kPingRequestFields);
|
|
||||||
const NetMsg kNetMsg_Cli2Csr_RegisterRequest = NET_MSG(kCli2Csr_RegisterRequest, kRegisterRequestFields);
|
|
||||||
const NetMsg kNetMsg_Cli2Csr_LoginRequest = NET_MSG(kCli2Csr_LoginRequest, kLoginRequestFields);
|
|
||||||
|
|
||||||
const NetMsg kNetMsg_Csr2Cli_PingReply = NET_MSG(kCsr2Cli_PingReply, kPingReplyFields);
|
|
||||||
const NetMsg kNetMsg_Csr2Cli_RegisterReply = NET_MSG(kCsr2Cli_RegisterReply, kRegisterReplyFields);
|
|
||||||
const NetMsg kNetMsg_Csr2Cli_LoginReply = NET_MSG(kCsr2Cli_LoginReply, kLoginReplyFields);
|
|
||||||
|
|
@ -1,178 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Csr/pnNpCli2Csr.h
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNNETPROTOCOL_PRIVATE_PROTOCOLS_CLI2CSR_PNNPCLI2CSR_H
|
|
||||||
#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnNetProtocol/Private/Protocols/Cli2Csr/pnNpCli2Csr.h included more than once"
|
|
||||||
#endif
|
|
||||||
#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNNETPROTOCOL_PRIVATE_PROTOCOLS_CLI2CSR_PNNPCLI2CSR_H
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* kNetProtocolCli2Csr message ids
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
// Because SrvCsr must remain backward compatible with all client builds,
|
|
||||||
// the following enum values may never change under any circumstances.
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Cli2Csr
|
|
||||||
|
|
||||||
enum {
|
|
||||||
// Misc
|
|
||||||
kCli2Csr_PingRequest = 0,
|
|
||||||
// Encrypt
|
|
||||||
kCli2Csr_RegisterRequest = 1,
|
|
||||||
// Login
|
|
||||||
kCli2Csr_LoginRequest = 2,
|
|
||||||
// Patch
|
|
||||||
kCli2Csr_PatchRequest = 3,
|
|
||||||
|
|
||||||
kNumCli2CsrMessages
|
|
||||||
};
|
|
||||||
COMPILER_ASSERT_HEADER(Cli2Scr, kNumCli2CsrMessages <= (uint16_t)-1);
|
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Csr2Cli
|
|
||||||
|
|
||||||
enum {
|
|
||||||
// Misc
|
|
||||||
kCsr2Cli_PingReply = 0,
|
|
||||||
// Encrypt
|
|
||||||
kCsr2Cli_RegisterReply = 1,
|
|
||||||
// Login
|
|
||||||
kCsr2Cli_LoginReply = 2,
|
|
||||||
// Patch
|
|
||||||
kCli2Csr_PatchReply = 3,
|
|
||||||
|
|
||||||
kNumCsr2CliMessages
|
|
||||||
};
|
|
||||||
COMPILER_ASSERT_HEADER(Cli2Scr, kNumCsr2CliMessages <= (uint16_t)-1);
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Networked structures
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
#pragma pack(push,1)
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Connect packet
|
|
||||||
|
|
||||||
struct Cli2Csr_ConnData {
|
|
||||||
uint32_t dataBytes;
|
|
||||||
};
|
|
||||||
struct Cli2Csr_Connect {
|
|
||||||
AsyncSocketConnectPacket hdr;
|
|
||||||
Cli2Csr_ConnData data;
|
|
||||||
};
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Message header
|
|
||||||
|
|
||||||
struct Cli2Csr_MsgHeader {
|
|
||||||
uint32_t messageId;
|
|
||||||
uint32_t transId;
|
|
||||||
};
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Cli --> Csr message structures
|
|
||||||
|
|
||||||
// PingRequest
|
|
||||||
extern const NetMsg kNetMsg_Cli2Csr_PingRequest;
|
|
||||||
struct Cli2Csr_PingRequest : Cli2Csr_MsgHeader {
|
|
||||||
uint32_t pingTimeMs;
|
|
||||||
uint32_t payloadBytes;
|
|
||||||
uint8_t payload[1]; // [payloadBytes]
|
|
||||||
};
|
|
||||||
|
|
||||||
// RegisterRequest
|
|
||||||
extern const NetMsg kNetMsg_Cli2Csr_RegisterRequest;
|
|
||||||
struct Cli2Csr_RegisterRequest : Cli2Csr_MsgHeader {
|
|
||||||
};
|
|
||||||
|
|
||||||
// LoginRequest
|
|
||||||
extern const NetMsg kNetMsg_Cli2Csr_LoginRequest;
|
|
||||||
struct Cli2Csr_LoginRequest : Cli2Csr_MsgHeader {
|
|
||||||
uint32_t clientChallenge;
|
|
||||||
wchar_t csrName[kMaxAccountNameLength];
|
|
||||||
ShaDigest challengeHash;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Csr --> Cli message structures
|
|
||||||
|
|
||||||
// PingReply
|
|
||||||
extern const NetMsg kNetMsg_Csr2Cli_PingReply;
|
|
||||||
struct Csr2Cli_PingReply : Cli2Csr_MsgHeader {
|
|
||||||
uint32_t pingTimeMs;
|
|
||||||
uint32_t payloadBytes;
|
|
||||||
uint8_t payload[1]; // [payloadBytes]
|
|
||||||
};
|
|
||||||
|
|
||||||
// RegisterReply
|
|
||||||
extern const NetMsg kNetMsg_Csr2Cli_RegisterReply;
|
|
||||||
struct Csr2Cli_RegisterReply : Cli2Csr_MsgHeader {
|
|
||||||
uint32_t serverChallenge;
|
|
||||||
uint32_t csrBuildId; // buildId of the latest csr client
|
|
||||||
};
|
|
||||||
|
|
||||||
// LoginReply
|
|
||||||
extern const NetMsg kNetMsg_Csr2Cli_LoginReply;
|
|
||||||
struct Csr2Cli_LoginReply : Cli2Csr_MsgHeader {
|
|
||||||
ENetError result;
|
|
||||||
Uuid csrId;
|
|
||||||
uint32_t csrFlags;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
@ -76,10 +76,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
# include "Protocols/Cli2Game/pnNpCli2Game.h"
|
# include "Protocols/Cli2Game/pnNpCli2Game.h"
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifdef USES_PROTOCOL_CLI2CSR
|
|
||||||
# include "Protocols/Cli2Csr/pnNpCli2Csr.h"
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# ifdef USES_PROTOCOL_CLI2GATEKEEPER
|
# ifdef USES_PROTOCOL_CLI2GATEKEEPER
|
||||||
# include "Protocols/Cli2GateKeeper/pnNpCli2GateKeeper.h"
|
# include "Protocols/Cli2GateKeeper/pnNpCli2GateKeeper.h"
|
||||||
# endif
|
# endif
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
include_directories("../../CoreLib")
|
|
||||||
include_directories("../../NucleusLib")
|
|
||||||
|
|
||||||
set(pnSimpleNet_HEADERS
|
|
||||||
pnSimpleNet.h
|
|
||||||
)
|
|
||||||
|
|
||||||
set(pnSimpleNet_SOURCES
|
|
||||||
pnSimpleNet.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library(pnSimpleNet STATIC ${pnSimpleNet_HEADERS} ${pnSimpleNet_SOURCES})
|
|
||||||
|
|
||||||
source_group("Header Files" FILES ${pnSimpleNet_HEADERS})
|
|
||||||
source_group("Source Files" FILES ${pnSimpleNet_SOURCES})
|
|
@ -1,658 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/NucleusLib/pnSimpleNet/pnSimpleNet.cpp
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#include "pnSimpleNet.h"
|
|
||||||
#include "hsThread.h"
|
|
||||||
|
|
||||||
#include <list>
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Local types
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
struct SimpleNetConn : AtomicRef {
|
|
||||||
AsyncSocket sock;
|
|
||||||
AsyncCancelId cancelId;
|
|
||||||
uint32_t channelId;
|
|
||||||
bool abandoned;
|
|
||||||
struct ConnectParam * connectParam;
|
|
||||||
|
|
||||||
SimpleNet_MsgHeader * oversizeMsg;
|
|
||||||
ARRAY(uint8_t) oversizeBuffer;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct SimpleNetChannel : AtomicRef {
|
|
||||||
FSimpleNetOnMsg onMsg;
|
|
||||||
FSimpleNetOnError onError;
|
|
||||||
uint32_t channelId;
|
|
||||||
std::list<SimpleNetConn*> conns;
|
|
||||||
|
|
||||||
SimpleNetChannel (uint32_t channel) : channelId(channel) { }
|
|
||||||
~SimpleNetChannel () {
|
|
||||||
ASSERT(!conns.size());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ConnectParam {
|
|
||||||
SimpleNetChannel * channel;
|
|
||||||
FSimpleNetOnConnect callback;
|
|
||||||
void * param;
|
|
||||||
|
|
||||||
~ConnectParam () {
|
|
||||||
if (channel)
|
|
||||||
channel->DecRef();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Local data
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
static bool s_running;
|
|
||||||
static hsMutex s_critsect;
|
|
||||||
static FSimpleNetQueryAccept s_queryAccept;
|
|
||||||
static void * s_queryAcceptParam;
|
|
||||||
static std::map<uint32_t, SimpleNetChannel*> s_channels;
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Local functions
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void NotifyConnSocketConnect (SimpleNetConn * conn) {
|
|
||||||
|
|
||||||
conn->TransferRef("Connecting", "Connected");
|
|
||||||
|
|
||||||
conn->connectParam->callback(
|
|
||||||
conn->connectParam->param,
|
|
||||||
conn,
|
|
||||||
kNetSuccess
|
|
||||||
);
|
|
||||||
|
|
||||||
delete conn->connectParam;
|
|
||||||
conn->connectParam = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void NotifyConnSocketConnectFailed (SimpleNetConn * conn) {
|
|
||||||
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
std::map<uint32_t, SimpleNetChannel*>::iterator it;
|
|
||||||
if ((it = s_channels.find(conn->channelId)) != s_channels.end()) {
|
|
||||||
it->second->conns.remove(conn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
|
|
||||||
conn->connectParam->callback(
|
|
||||||
conn->connectParam->param,
|
|
||||||
nil,
|
|
||||||
kNetErrConnectFailed
|
|
||||||
);
|
|
||||||
|
|
||||||
delete conn->connectParam;
|
|
||||||
conn->connectParam = nil;
|
|
||||||
|
|
||||||
conn->DecRef("Connecting");
|
|
||||||
conn->DecRef("Lifetime");
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void NotifyConnSocketDisconnect (SimpleNetConn * conn) {
|
|
||||||
|
|
||||||
bool abandoned;
|
|
||||||
SimpleNetChannel* channel = nil;
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
abandoned = conn->abandoned;
|
|
||||||
std::map<uint32_t, SimpleNetChannel*>::iterator it;
|
|
||||||
if ((it = s_channels.find(conn->channelId)) != s_channels.end()) {
|
|
||||||
channel = it->second;
|
|
||||||
channel->IncRef();
|
|
||||||
channel->conns.remove(conn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
|
|
||||||
if (channel && !abandoned) {
|
|
||||||
channel->onError(conn, kNetErrDisconnected);
|
|
||||||
channel->DecRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
conn->DecRef("Connected");
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool NotifyConnSocketRead (SimpleNetConn * conn, AsyncNotifySocketRead * read) {
|
|
||||||
|
|
||||||
SimpleNetChannel* channel = nil;
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
std::map<uint32_t, SimpleNetChannel*>::iterator it;
|
|
||||||
if ((it = s_channels.find(conn->channelId)) != s_channels.end()) {
|
|
||||||
channel = it->second;
|
|
||||||
channel->IncRef();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
|
|
||||||
if (!channel)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
bool result = true;
|
|
||||||
|
|
||||||
const uint8_t * curr = read->buffer;
|
|
||||||
const uint8_t * term = curr + read->bytes;
|
|
||||||
|
|
||||||
while (curr < term) {
|
|
||||||
// Reading oversize msg?
|
|
||||||
if (conn->oversizeBuffer.Count()) {
|
|
||||||
unsigned spaceLeft = conn->oversizeMsg->messageBytes - conn->oversizeBuffer.Count();
|
|
||||||
unsigned copyBytes = min(spaceLeft, term - curr);
|
|
||||||
conn->oversizeBuffer.Add(curr, copyBytes);
|
|
||||||
|
|
||||||
curr += copyBytes;
|
|
||||||
|
|
||||||
// Wait until we have received the entire message
|
|
||||||
if (copyBytes != spaceLeft)
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Dispatch oversize msg
|
|
||||||
if (!channel->onMsg(conn, conn->oversizeMsg)) {
|
|
||||||
result = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
conn->oversizeBuffer.SetCount(0);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Wait until we receive the entire message header
|
|
||||||
if (term - curr < sizeof(SimpleNet_MsgHeader))
|
|
||||||
break;
|
|
||||||
|
|
||||||
SimpleNet_MsgHeader * msg = (SimpleNet_MsgHeader *) read->buffer;
|
|
||||||
|
|
||||||
// Sanity check message size
|
|
||||||
if (msg->messageBytes < sizeof(*msg)) {
|
|
||||||
result = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle oversized messages
|
|
||||||
if (msg->messageBytes > kAsyncSocketBufferSize) {
|
|
||||||
|
|
||||||
conn->oversizeBuffer.SetCount(msg->messageBytes);
|
|
||||||
conn->oversizeMsg = (SimpleNet_MsgHeader *) conn->oversizeBuffer.Ptr();
|
|
||||||
*conn->oversizeMsg = *msg;
|
|
||||||
|
|
||||||
curr += sizeof(*msg);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Wait until we have received the entire message
|
|
||||||
const uint8_t * msgTerm = (const uint8_t *) curr + msg->messageBytes;
|
|
||||||
if (msgTerm > term)
|
|
||||||
break;
|
|
||||||
curr = msgTerm;
|
|
||||||
|
|
||||||
// Dispatch msg
|
|
||||||
if (!channel->onMsg(conn, msg)) {
|
|
||||||
result = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return count of bytes we processed
|
|
||||||
read->bytesProcessed = curr - read->buffer;
|
|
||||||
|
|
||||||
channel->DecRef();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool AsyncNotifySocketProc (
|
|
||||||
AsyncSocket sock,
|
|
||||||
EAsyncNotifySocket code,
|
|
||||||
AsyncNotifySocket * notify,
|
|
||||||
void ** userState
|
|
||||||
) {
|
|
||||||
bool result = true;
|
|
||||||
SimpleNetConn * conn;
|
|
||||||
|
|
||||||
switch (code) {
|
|
||||||
case kNotifySocketListenSuccess: {
|
|
||||||
|
|
||||||
AsyncNotifySocketListen * listen = (AsyncNotifySocketListen *) notify;
|
|
||||||
|
|
||||||
const SimpleNet_ConnData & connect = *(const SimpleNet_ConnData *) listen->buffer;
|
|
||||||
listen->bytesProcessed += sizeof(connect);
|
|
||||||
|
|
||||||
SimpleNetChannel* channel = nil;
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
std::map<uint32_t, SimpleNetChannel*>::iterator it;
|
|
||||||
if ((it = s_channels.find(connect.channelId)) != s_channels.end()) {
|
|
||||||
channel = it->second;
|
|
||||||
channel->IncRef();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
|
|
||||||
if (!channel)
|
|
||||||
break;
|
|
||||||
|
|
||||||
conn = NEWZERO(SimpleNetConn);
|
|
||||||
conn->channelId = channel->channelId;
|
|
||||||
conn->IncRef("Lifetime");
|
|
||||||
conn->IncRef("Connected");
|
|
||||||
conn->sock = sock;
|
|
||||||
*userState = conn;
|
|
||||||
|
|
||||||
bool accepted = s_queryAccept(
|
|
||||||
s_queryAcceptParam,
|
|
||||||
channel->channelId,
|
|
||||||
conn,
|
|
||||||
listen->remoteAddr
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!accepted) {
|
|
||||||
SimpleNetDisconnect(conn);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
channel->conns.push_back(conn);
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
channel->DecRef();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case kNotifySocketConnectSuccess: {
|
|
||||||
conn = (SimpleNetConn *) notify->param;
|
|
||||||
*userState = conn;
|
|
||||||
bool abandoned;
|
|
||||||
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
conn->sock = sock;
|
|
||||||
conn->cancelId = 0;
|
|
||||||
abandoned = conn->abandoned;
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
|
|
||||||
if (abandoned)
|
|
||||||
AsyncSocketDisconnect(sock, true);
|
|
||||||
else
|
|
||||||
NotifyConnSocketConnect(conn);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case kNotifySocketConnectFailed:
|
|
||||||
conn = (SimpleNetConn *) notify->param;
|
|
||||||
NotifyConnSocketConnectFailed(conn);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case kNotifySocketDisconnect:
|
|
||||||
conn = (SimpleNetConn *) *userState;
|
|
||||||
NotifyConnSocketDisconnect(conn);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case kNotifySocketRead:
|
|
||||||
conn = (SimpleNetConn *) *userState;
|
|
||||||
result = NotifyConnSocketRead(conn, (AsyncNotifySocketRead *) notify);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void Connect(const plNetAddress& addr, ConnectParam * cp) {
|
|
||||||
|
|
||||||
SimpleNetConn * conn = NEWZERO(SimpleNetConn);
|
|
||||||
conn->channelId = cp->channel->channelId;
|
|
||||||
conn->connectParam = cp;
|
|
||||||
conn->IncRef("Lifetime");
|
|
||||||
conn->IncRef("Connecting");
|
|
||||||
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
cp->channel->conns.push_back(conn);
|
|
||||||
|
|
||||||
SimpleNet_Connect connect;
|
|
||||||
connect.hdr.connType = kConnTypeSimpleNet;
|
|
||||||
connect.hdr.hdrBytes = sizeof(connect.hdr);
|
|
||||||
connect.hdr.buildId = BuildId();
|
|
||||||
connect.hdr.buildType = BUILD_TYPE_LIVE;
|
|
||||||
connect.hdr.branchId = BranchId();
|
|
||||||
connect.hdr.productId = ProductId();
|
|
||||||
connect.data.channelId = cp->channel->channelId;
|
|
||||||
|
|
||||||
AsyncSocketConnect(
|
|
||||||
&conn->cancelId,
|
|
||||||
addr,
|
|
||||||
AsyncNotifySocketProc,
|
|
||||||
conn,
|
|
||||||
&connect,
|
|
||||||
sizeof(connect)
|
|
||||||
);
|
|
||||||
|
|
||||||
conn = nil;
|
|
||||||
cp = nil;
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
|
|
||||||
delete conn;
|
|
||||||
delete cp;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void AsyncLookupCallback (
|
|
||||||
void * param,
|
|
||||||
const char name[],
|
|
||||||
unsigned addrCount,
|
|
||||||
const plNetAddress addrs[]
|
|
||||||
) {
|
|
||||||
ConnectParam * cp = (ConnectParam *)param;
|
|
||||||
|
|
||||||
if (!addrCount) {
|
|
||||||
if (cp->callback)
|
|
||||||
cp->callback(cp->param, nil, kNetErrNameLookupFailed);
|
|
||||||
delete cp;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Connect(addrs[0], (ConnectParam *)param);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Exported functions
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SimpleNetInitialize () {
|
|
||||||
|
|
||||||
s_running = true;
|
|
||||||
|
|
||||||
AsyncSocketRegisterNotifyProc(
|
|
||||||
kConnTypeSimpleNet,
|
|
||||||
AsyncNotifySocketProc
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SimpleNetShutdown () {
|
|
||||||
|
|
||||||
s_running = false;
|
|
||||||
|
|
||||||
ASSERT(!s_channels.size());
|
|
||||||
|
|
||||||
AsyncSocketUnregisterNotifyProc(
|
|
||||||
kConnTypeSimpleNet,
|
|
||||||
AsyncNotifySocketProc
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SimpleNetConnIncRef (SimpleNetConn * conn) {
|
|
||||||
|
|
||||||
ASSERT(s_running);
|
|
||||||
ASSERT(conn);
|
|
||||||
|
|
||||||
conn->IncRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SimpleNetConnDecRef (SimpleNetConn * conn) {
|
|
||||||
|
|
||||||
ASSERT(s_running);
|
|
||||||
ASSERT(conn);
|
|
||||||
|
|
||||||
conn->DecRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
bool SimpleNetStartListening (
|
|
||||||
FSimpleNetQueryAccept queryAccept,
|
|
||||||
void * param
|
|
||||||
) {
|
|
||||||
ASSERT(s_running);
|
|
||||||
ASSERT(queryAccept);
|
|
||||||
ASSERT(!s_queryAccept);
|
|
||||||
|
|
||||||
s_queryAccept = queryAccept;
|
|
||||||
s_queryAcceptParam = param;
|
|
||||||
|
|
||||||
plNetAddress addr;
|
|
||||||
addr.SetPort(kNetDefaultSimpleNetPort);
|
|
||||||
addr.SetAnyAddr();
|
|
||||||
return (0 != AsyncSocketStartListening(addr, nil));
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SimpleNetStopListening () {
|
|
||||||
|
|
||||||
ASSERT(s_running);
|
|
||||||
|
|
||||||
plNetAddress addr;
|
|
||||||
addr.SetPort(kNetDefaultSimpleNetPort);
|
|
||||||
addr.SetAnyAddr();
|
|
||||||
AsyncSocketStopListening(addr, nil);
|
|
||||||
|
|
||||||
s_queryAccept = nil;
|
|
||||||
s_queryAcceptParam = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SimpleNetCreateChannel (
|
|
||||||
unsigned channelId,
|
|
||||||
FSimpleNetOnMsg onMsg,
|
|
||||||
FSimpleNetOnError onError
|
|
||||||
) {
|
|
||||||
ASSERT(s_running);
|
|
||||||
|
|
||||||
SimpleNetChannel * channel = NEWZERO(SimpleNetChannel)(channelId);
|
|
||||||
channel->IncRef();
|
|
||||||
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
#ifdef HS_DEBUGGING
|
|
||||||
{
|
|
||||||
std::map<uint32_t, SimpleNetChannel*>::iterator it = s_channels.find(channelId);
|
|
||||||
ASSERT(it == s_channels.end());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
channel->onMsg = onMsg;
|
|
||||||
channel->onError = onError;
|
|
||||||
s_channels[channelId] = channel;
|
|
||||||
channel->IncRef();
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
|
|
||||||
channel->DecRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SimpleNetDestroyChannel (unsigned channelId) {
|
|
||||||
|
|
||||||
ASSERT(s_running);
|
|
||||||
|
|
||||||
SimpleNetChannel * channel;
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
std::map<uint32_t, SimpleNetChannel*>::iterator it;
|
|
||||||
if ((it = s_channels.find(channelId)) != s_channels.end()) {
|
|
||||||
channel = it->second;
|
|
||||||
|
|
||||||
while (channel->conns.size()) {
|
|
||||||
SimpleNetConn* conn = channel->conns.front();
|
|
||||||
SimpleNetDisconnect(conn);
|
|
||||||
|
|
||||||
channel->conns.pop_front();
|
|
||||||
}
|
|
||||||
|
|
||||||
s_channels.erase(it);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
|
|
||||||
if (channel)
|
|
||||||
channel->DecRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SimpleNetStartConnecting (
|
|
||||||
unsigned channelId,
|
|
||||||
const char addr[],
|
|
||||||
FSimpleNetOnConnect onConnect,
|
|
||||||
void * param
|
|
||||||
) {
|
|
||||||
ASSERT(s_running);
|
|
||||||
ASSERT(onConnect);
|
|
||||||
|
|
||||||
ConnectParam * cp = new ConnectParam;
|
|
||||||
cp->callback = onConnect;
|
|
||||||
cp->param = param;
|
|
||||||
cp->channel = nil;
|
|
||||||
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
std::map<uint32_t, SimpleNetChannel*>::iterator it;
|
|
||||||
if ((it = s_channels.find(channelId)) != s_channels.end()) {
|
|
||||||
cp->channel = it->second;
|
|
||||||
cp->channel->IncRef();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
|
|
||||||
ASSERT(cp->channel);
|
|
||||||
|
|
||||||
// Do we need to lookup the address?
|
|
||||||
const char* name = addr;
|
|
||||||
while (unsigned ch = *name) {
|
|
||||||
++name;
|
|
||||||
if (!(isdigit(ch) || ch == L'.' || ch == L':')) {
|
|
||||||
|
|
||||||
AsyncCancelId cancelId;
|
|
||||||
AsyncAddressLookupName(
|
|
||||||
&cancelId,
|
|
||||||
AsyncLookupCallback,
|
|
||||||
addr,
|
|
||||||
kNetDefaultSimpleNetPort,
|
|
||||||
cp
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!name[0]) {
|
|
||||||
plNetAddress netAddr(addr, kNetDefaultSimpleNetPort);
|
|
||||||
Connect(netAddr, cp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SimpleNetDisconnect (
|
|
||||||
SimpleNetConn * conn
|
|
||||||
) {
|
|
||||||
ASSERT(s_running);
|
|
||||||
ASSERT(conn);
|
|
||||||
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
conn->abandoned = true;
|
|
||||||
if (conn->sock) {
|
|
||||||
AsyncSocketDisconnect(conn->sock, true);
|
|
||||||
conn->sock = nil;
|
|
||||||
}
|
|
||||||
else if (conn->cancelId) {
|
|
||||||
AsyncSocketConnectCancel(AsyncNotifySocketProc, conn->cancelId);
|
|
||||||
conn->cancelId = nil;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
|
|
||||||
conn->DecRef("Lifetime");
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void SimpleNetSend (
|
|
||||||
SimpleNetConn * conn,
|
|
||||||
SimpleNet_MsgHeader * msg
|
|
||||||
) {
|
|
||||||
ASSERT(s_running);
|
|
||||||
ASSERT(msg);
|
|
||||||
ASSERT(msg->messageBytes != (uint32_t)-1);
|
|
||||||
ASSERT(conn);
|
|
||||||
|
|
||||||
s_critsect.Lock();
|
|
||||||
{
|
|
||||||
if (conn->sock)
|
|
||||||
AsyncSocketSend(conn->sock, msg, msg->messageBytes);
|
|
||||||
}
|
|
||||||
s_critsect.Unlock();
|
|
||||||
}
|
|
@ -1,185 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/NucleusLib/pnSimpleNet/pnSimpleNet.h
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#ifndef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNSIMPLENET_PNSIMPLENET_H
|
|
||||||
#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNSIMPLENET_PNSIMPLENET_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "pnUtils/pnUtils.h"
|
|
||||||
#include "pnProduct/pnProduct.h"
|
|
||||||
#include "pnNetBase/pnNetBase.h"
|
|
||||||
#include "pnAsyncCore/pnAsyncCore.h"
|
|
||||||
#include "pnNetCommon/plNetAddress.h"
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* SimpleNet:
|
|
||||||
* - TCP only, Nagle buffered only.
|
|
||||||
* - Asynchronous callbacks only.
|
|
||||||
* - Not encrypted, not compressed, no transaction support.
|
|
||||||
* - Good for trivial networked applications only. Examples include:
|
|
||||||
* - CSR client automation by CSR tools.
|
|
||||||
* - Bob and I (eap) talked about 3dsmax automating
|
|
||||||
* the client for the purpose of reloading reexported
|
|
||||||
* assets. With SimpleNet, the client could be running
|
|
||||||
* on a separate machine than Max.
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
// Because newer clients must remain compatible with older servers,
|
|
||||||
// these values may never change.
|
|
||||||
enum ESimpleNetChannel {
|
|
||||||
kSimpleNetChannelNil = 0,
|
|
||||||
kSimpleNetChannelCsr = 1,
|
|
||||||
kSimpleNetChannelMax = 2,
|
|
||||||
|
|
||||||
kMaxSimpleNetChannels
|
|
||||||
};
|
|
||||||
COMPILER_ASSERT_HEADER(ESimpleNetChannel, kMaxSimpleNetChannels <= 0xff);
|
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// BEGIN PACKED DATA STRUCTURES
|
|
||||||
//============================================================================
|
|
||||||
#pragma pack(push,1)
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Connect packet
|
|
||||||
|
|
||||||
struct SimpleNet_ConnData {
|
|
||||||
unsigned channelId;
|
|
||||||
};
|
|
||||||
struct SimpleNet_Connect {
|
|
||||||
AsyncSocketConnectPacket hdr;
|
|
||||||
SimpleNet_ConnData data;
|
|
||||||
};
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Message header
|
|
||||||
|
|
||||||
struct SimpleNet_MsgHeader {
|
|
||||||
private:
|
|
||||||
uint32_t channelId;
|
|
||||||
public:
|
|
||||||
uint32_t messageId;
|
|
||||||
uint32_t messageBytes;
|
|
||||||
|
|
||||||
SimpleNet_MsgHeader (uint32_t channelId, uint32_t messageId)
|
|
||||||
: channelId(channelId)
|
|
||||||
, messageId(messageId)
|
|
||||||
#ifdef HS_DEBUGGING
|
|
||||||
, messageBytes((uint32_t)-1)
|
|
||||||
#endif
|
|
||||||
{ }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Simple Network API
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
struct SimpleNetConn;
|
|
||||||
|
|
||||||
void SimpleNetInitialize ();
|
|
||||||
void SimpleNetShutdown ();
|
|
||||||
|
|
||||||
void SimpleNetConnIncRef (SimpleNetConn * conn);
|
|
||||||
void SimpleNetConnDecRef (SimpleNetConn * conn);
|
|
||||||
|
|
||||||
typedef bool (*FSimpleNetOnMsg) ( // return false to disconnect socket
|
|
||||||
SimpleNetConn * conn,
|
|
||||||
SimpleNet_MsgHeader * msg
|
|
||||||
);
|
|
||||||
typedef void (*FSimpleNetOnError) (
|
|
||||||
SimpleNetConn * conn,
|
|
||||||
ENetError error
|
|
||||||
);
|
|
||||||
typedef void (*FSimpleNetOnConnect) (
|
|
||||||
void * param,
|
|
||||||
SimpleNetConn * conn,
|
|
||||||
ENetError result
|
|
||||||
);
|
|
||||||
typedef bool (*FSimpleNetQueryAccept) ( // return true to accept incoming connection
|
|
||||||
void * param,
|
|
||||||
unsigned channel,
|
|
||||||
SimpleNetConn * conn,
|
|
||||||
const plNetAddress& addr
|
|
||||||
);
|
|
||||||
|
|
||||||
void SimpleNetCreateChannel (
|
|
||||||
unsigned channel,
|
|
||||||
FSimpleNetOnMsg onMsg,
|
|
||||||
FSimpleNetOnError onError
|
|
||||||
);
|
|
||||||
void SimpleNetDestroyChannel (
|
|
||||||
unsigned channel
|
|
||||||
);
|
|
||||||
|
|
||||||
bool SimpleNetStartListening (
|
|
||||||
FSimpleNetQueryAccept queryAccept,
|
|
||||||
void * param
|
|
||||||
);
|
|
||||||
void SimpleNetStopListening ();
|
|
||||||
|
|
||||||
void SimpleNetStartConnecting (
|
|
||||||
unsigned channel,
|
|
||||||
const wchar_t addr[],
|
|
||||||
FSimpleNetOnConnect onConnect,
|
|
||||||
void * param
|
|
||||||
);
|
|
||||||
void SimpleNetDisconnect (
|
|
||||||
SimpleNetConn * conn
|
|
||||||
);
|
|
||||||
void SimpleNetSend (
|
|
||||||
SimpleNetConn * conn,
|
|
||||||
SimpleNet_MsgHeader * msg
|
|
||||||
);
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
#endif // PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNSIMPLENET_PNSIMPLENET_H
|
|
@ -9,8 +9,6 @@ set(plNetGameLib_PRIVATE
|
|||||||
Private/plNglAuth.cpp
|
Private/plNglAuth.cpp
|
||||||
Private/plNglCore.h
|
Private/plNglCore.h
|
||||||
Private/plNglCore.cpp
|
Private/plNglCore.cpp
|
||||||
Private/plNglCsr.h
|
|
||||||
Private/plNglCsr.cpp
|
|
||||||
Private/plNglFile.h
|
Private/plNglFile.h
|
||||||
Private/plNglFile.cpp
|
Private/plNglFile.cpp
|
||||||
Private/plNglGame.h
|
Private/plNglGame.h
|
||||||
|
@ -118,19 +118,6 @@ bool FileQueryConnected ();
|
|||||||
unsigned FileGetConnId ();
|
unsigned FileGetConnId ();
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Csr
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
void CsrInitialize ();
|
|
||||||
void CsrDestroy (bool wait);
|
|
||||||
|
|
||||||
bool CsrQueryConnected ();
|
|
||||||
unsigned CsrGetConnId ();
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* GateKeeper
|
* GateKeeper
|
||||||
@ -208,11 +195,6 @@ enum ETransType {
|
|||||||
kDownloadRequestTrans,
|
kDownloadRequestTrans,
|
||||||
kFileRcvdFileDownloadChunkTrans,
|
kFileRcvdFileDownloadChunkTrans,
|
||||||
|
|
||||||
//========================================================================
|
|
||||||
// NglCsr.cpp transactions
|
|
||||||
kCsrConnectedNotifyTrans,
|
|
||||||
kCsrLoginTrans,
|
|
||||||
|
|
||||||
//========================================================================
|
//========================================================================
|
||||||
// NglCore.cpp transactions
|
// NglCore.cpp transactions
|
||||||
kReportNetErrorTrans,
|
kReportNetErrorTrans,
|
||||||
@ -280,10 +262,6 @@ static const char * s_transTypes[] = {
|
|||||||
"ManifestRequestTrans",
|
"ManifestRequestTrans",
|
||||||
"DownloadRequestTrans",
|
"DownloadRequestTrans",
|
||||||
"FileRcvdFileDownloadChunkTrans",
|
"FileRcvdFileDownloadChunkTrans",
|
||||||
|
|
||||||
// NglCsr.cpp
|
|
||||||
"CsrConnectedNotifyTrans",
|
|
||||||
"CsrLoginTrans",
|
|
||||||
|
|
||||||
// NglCore.cpp
|
// NglCore.cpp
|
||||||
"ReportNetErrorTrans",
|
"ReportNetErrorTrans",
|
||||||
@ -300,7 +278,6 @@ static long s_perfTransCount[kNumTransTypes];
|
|||||||
|
|
||||||
namespace Auth { struct CliAuConn; }
|
namespace Auth { struct CliAuConn; }
|
||||||
namespace Game { struct CliGmConn; }
|
namespace Game { struct CliGmConn; }
|
||||||
namespace Csr { struct CliCsConn; }
|
|
||||||
namespace File { struct CliFileConn; }
|
namespace File { struct CliFileConn; }
|
||||||
namespace GateKeeper { struct CliGkConn; }
|
namespace GateKeeper { struct CliGkConn; }
|
||||||
|
|
||||||
@ -364,17 +341,6 @@ struct NetFileTrans : NetTrans {
|
|||||||
void ReleaseConn ();
|
void ReleaseConn ();
|
||||||
};
|
};
|
||||||
|
|
||||||
struct NetCsrTrans : NetTrans {
|
|
||||||
Csr::CliCsConn * m_conn;
|
|
||||||
|
|
||||||
NetCsrTrans (ETransType transType);
|
|
||||||
~NetCsrTrans ();
|
|
||||||
|
|
||||||
bool AcquireConn ();
|
|
||||||
void ReleaseConn ();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct NetGateKeeperTrans : NetTrans {
|
struct NetGateKeeperTrans : NetTrans {
|
||||||
GateKeeper::CliGkConn * m_conn;
|
GateKeeper::CliGkConn * m_conn;
|
||||||
|
|
||||||
|
@ -58,5 +58,4 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
#include "plNglAuth.h"
|
#include "plNglAuth.h"
|
||||||
#include "plNglGame.h"
|
#include "plNglGame.h"
|
||||||
#include "plNglFile.h"
|
#include "plNglFile.h"
|
||||||
#include "plNglCsr.h"
|
|
||||||
#include "plNglGateKeeper.h"
|
#include "plNglGateKeeper.h"
|
||||||
|
@ -148,7 +148,6 @@ void NetClientInitialize () {
|
|||||||
AuthInitialize();
|
AuthInitialize();
|
||||||
GameInitialize();
|
GameInitialize();
|
||||||
FileInitialize();
|
FileInitialize();
|
||||||
CsrInitialize();
|
|
||||||
GateKeeperInitialize();
|
GateKeeperInitialize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -165,14 +164,12 @@ void NetClientDestroy (bool wait) {
|
|||||||
s_errorProc = nil;
|
s_errorProc = nil;
|
||||||
|
|
||||||
GateKeeperDestroy(false);
|
GateKeeperDestroy(false);
|
||||||
CsrDestroy(false);
|
|
||||||
FileDestroy(false);
|
FileDestroy(false);
|
||||||
GameDestroy(false);
|
GameDestroy(false);
|
||||||
AuthDestroy(false);
|
AuthDestroy(false);
|
||||||
NetTransDestroy(false);
|
NetTransDestroy(false);
|
||||||
if (wait) {
|
if (wait) {
|
||||||
GateKeeperDestroy(true);
|
GateKeeperDestroy(true);
|
||||||
CsrDestroy(true);
|
|
||||||
FileDestroy(true);
|
FileDestroy(true);
|
||||||
GameDestroy(true);
|
GameDestroy(true);
|
||||||
AuthDestroy(true);
|
AuthDestroy(true);
|
||||||
|
@ -1,900 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCsr.cpp
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#include "../Pch.h"
|
|
||||||
#pragma hdrstop
|
|
||||||
|
|
||||||
#include "pnEncryption/plChallengeHash.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Ngl { namespace Csr {
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Internal types
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
struct ConnectParam {
|
|
||||||
FNetCliCsrConnectedCallback callback;
|
|
||||||
void * param;
|
|
||||||
};
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Connection record
|
|
||||||
//============================================================================
|
|
||||||
struct CliCsConn : AtomicRef {
|
|
||||||
LINK(CliCsConn) link;
|
|
||||||
|
|
||||||
CCritSect critsect;
|
|
||||||
AsyncSocket sock;
|
|
||||||
AsyncCancelId cancelId;
|
|
||||||
NetCli * cli;
|
|
||||||
plNetAddress addr;
|
|
||||||
unsigned seq;
|
|
||||||
bool abandoned;
|
|
||||||
unsigned serverChallenge;
|
|
||||||
unsigned latestBuildId;
|
|
||||||
ConnectParam * connectParam;
|
|
||||||
|
|
||||||
// ping
|
|
||||||
AsyncTimer * pingTimer;
|
|
||||||
unsigned pingSendTimeMs;
|
|
||||||
unsigned lastHeardTimeMs;
|
|
||||||
|
|
||||||
CliCsConn ();
|
|
||||||
~CliCsConn ();
|
|
||||||
|
|
||||||
void AutoPing ();
|
|
||||||
void StopAutoPing ();
|
|
||||||
void TimerPing ();
|
|
||||||
|
|
||||||
void Send (const uintptr_t fields[], unsigned count);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Transaction objects
|
|
||||||
//============================================================================
|
|
||||||
struct ConnectedNotifyTrans : NetNotifyTrans {
|
|
||||||
|
|
||||||
ConnectParam * m_connectParam;
|
|
||||||
unsigned m_latestBuildId;
|
|
||||||
|
|
||||||
ConnectedNotifyTrans (ConnectParam * cp, unsigned lbi)
|
|
||||||
: NetNotifyTrans(kCsrConnectedNotifyTrans)
|
|
||||||
, m_connectParam(cp)
|
|
||||||
, m_latestBuildId(lbi)
|
|
||||||
{ }
|
|
||||||
~ConnectedNotifyTrans () {
|
|
||||||
delete m_connectParam;
|
|
||||||
}
|
|
||||||
void Post ();
|
|
||||||
};
|
|
||||||
|
|
||||||
struct LoginRequestTrans : NetCsrTrans {
|
|
||||||
|
|
||||||
wchar_t m_csrName[kMaxAccountNameLength];
|
|
||||||
ShaDigest m_namePassHash;
|
|
||||||
FNetCliCsrLoginCallback m_callback;
|
|
||||||
void * m_param;
|
|
||||||
|
|
||||||
Uuid m_csrId;
|
|
||||||
unsigned m_csrFlags;
|
|
||||||
|
|
||||||
LoginRequestTrans (
|
|
||||||
const wchar_t csrName[],
|
|
||||||
const ShaDigest & namePassHash,
|
|
||||||
FNetCliCsrLoginCallback callback,
|
|
||||||
void * param
|
|
||||||
);
|
|
||||||
|
|
||||||
bool Send ();
|
|
||||||
void Post ();
|
|
||||||
bool Recv (
|
|
||||||
const uint8_t msg[],
|
|
||||||
unsigned bytes
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Internal data
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
enum {
|
|
||||||
kPerfConnCount,
|
|
||||||
kPingDisabled,
|
|
||||||
kNumPerf
|
|
||||||
};
|
|
||||||
|
|
||||||
static bool s_running;
|
|
||||||
static CCritSect s_critsect;
|
|
||||||
static LISTDECL(CliCsConn, link) s_conns;
|
|
||||||
static CliCsConn * s_active;
|
|
||||||
static long s_perf[kNumPerf];
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Internal functions
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//===========================================================================
|
|
||||||
static unsigned GetNonZeroTimeMs () {
|
|
||||||
if (unsigned ms = TimeGetMs())
|
|
||||||
return ms;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static CliCsConn * GetConnIncRef_CS (const char tag[]) {
|
|
||||||
|
|
||||||
if (CliCsConn * conn = s_active)
|
|
||||||
if (conn->cli) {
|
|
||||||
conn->IncRef(tag);
|
|
||||||
return conn;
|
|
||||||
}
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static CliCsConn * GetConnIncRef (const char tag[]) {
|
|
||||||
CliCsConn * conn;
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
conn = GetConnIncRef_CS(tag);
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
return conn;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void UnlinkAndAbandonConn_CS (CliCsConn * conn) {
|
|
||||||
|
|
||||||
s_conns.Unlink(conn);
|
|
||||||
conn->abandoned = true;
|
|
||||||
if (conn->cancelId) {
|
|
||||||
AsyncSocketConnectCancel(nil, conn->cancelId);
|
|
||||||
conn->cancelId = 0;
|
|
||||||
}
|
|
||||||
else if (conn->sock) {
|
|
||||||
AsyncSocketDisconnect(conn->sock, true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
conn->DecRef("Lifetime");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void SendRegisterRequest (CliCsConn * conn) {
|
|
||||||
|
|
||||||
const uintptr_t msg[] = {
|
|
||||||
kCli2Csr_RegisterRequest,
|
|
||||||
0
|
|
||||||
};
|
|
||||||
|
|
||||||
conn->Send(msg, arrsize(msg));
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool ConnEncrypt (ENetError error, void * param) {
|
|
||||||
|
|
||||||
CliCsConn * conn = (CliCsConn *) param;
|
|
||||||
|
|
||||||
if (IS_NET_SUCCESS(error)) {
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
s_active = conn;
|
|
||||||
conn->AutoPing();
|
|
||||||
conn->IncRef();
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
|
|
||||||
SendRegisterRequest(conn);
|
|
||||||
|
|
||||||
conn->DecRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
return IS_NET_SUCCESS(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void NotifyConnSocketConnect (CliCsConn * conn) {
|
|
||||||
|
|
||||||
conn->cli = NetCliConnectAccept(
|
|
||||||
conn->sock,
|
|
||||||
kNetProtocolCli2Csr,
|
|
||||||
false,
|
|
||||||
ConnEncrypt,
|
|
||||||
0,
|
|
||||||
nil,
|
|
||||||
conn
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void NotifyConnSocketConnectFailed (CliCsConn * conn) {
|
|
||||||
|
|
||||||
bool notify;
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
conn->cancelId = 0;
|
|
||||||
s_conns.Unlink(conn);
|
|
||||||
|
|
||||||
notify
|
|
||||||
= s_running
|
|
||||||
&& !conn->abandoned
|
|
||||||
&& (!s_active || conn == s_active);
|
|
||||||
|
|
||||||
if (conn == s_active)
|
|
||||||
s_active = nil;
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
|
|
||||||
NetTransCancelByConnId(conn->seq, kNetErrTimeout);
|
|
||||||
conn->DecRef("Connecting");
|
|
||||||
conn->DecRef("Lifetime");
|
|
||||||
|
|
||||||
if (notify)
|
|
||||||
ReportNetError(kNetProtocolCli2Csr, kNetErrConnectFailed);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void NotifyConnSocketDisconnect (CliCsConn * conn) {
|
|
||||||
|
|
||||||
conn->StopAutoPing();
|
|
||||||
|
|
||||||
bool notify;
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
s_conns.Unlink(conn);
|
|
||||||
|
|
||||||
notify
|
|
||||||
= s_running
|
|
||||||
&& !conn->abandoned
|
|
||||||
&& (!s_active || conn == s_active);
|
|
||||||
|
|
||||||
if (conn == s_active)
|
|
||||||
s_active = nil;
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
|
|
||||||
// Cancel all transactions in process on this connection.
|
|
||||||
NetTransCancelByConnId(conn->seq, kNetErrTimeout);
|
|
||||||
conn->DecRef("Connected");
|
|
||||||
conn->DecRef("Lifetime");
|
|
||||||
|
|
||||||
if (notify)
|
|
||||||
ReportNetError(kNetProtocolCli2Csr, kNetErrDisconnected);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool NotifyConnSocketRead (CliCsConn * conn, AsyncNotifySocketRead * read) {
|
|
||||||
|
|
||||||
conn->lastHeardTimeMs = GetNonZeroTimeMs();
|
|
||||||
bool result = NetCliDispatch(conn->cli, read->buffer, read->bytes, conn);
|
|
||||||
read->bytesProcessed += read->bytes;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool SocketNotifyCallback (
|
|
||||||
AsyncSocket sock,
|
|
||||||
EAsyncNotifySocket code,
|
|
||||||
AsyncNotifySocket * notify,
|
|
||||||
void ** userState
|
|
||||||
) {
|
|
||||||
bool result = true;
|
|
||||||
CliCsConn * conn;
|
|
||||||
|
|
||||||
switch (code) {
|
|
||||||
case kNotifySocketConnectSuccess: {
|
|
||||||
conn = (CliCsConn *) notify->param;
|
|
||||||
*userState = conn;
|
|
||||||
conn->TransferRef("Connecting", "Connected");
|
|
||||||
bool abandoned = true;
|
|
||||||
|
|
||||||
if (abandoned)
|
|
||||||
AsyncSocketDisconnect(sock, true);
|
|
||||||
else
|
|
||||||
NotifyConnSocketConnect(conn);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case kNotifySocketConnectFailed:
|
|
||||||
conn = (CliCsConn *) notify->param;
|
|
||||||
NotifyConnSocketConnectFailed(conn);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case kNotifySocketDisconnect:
|
|
||||||
conn = (CliCsConn *) *userState;
|
|
||||||
NotifyConnSocketDisconnect(conn);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case kNotifySocketRead:
|
|
||||||
conn = (CliCsConn *) *userState;
|
|
||||||
result = NotifyConnSocketRead(conn, (AsyncNotifySocketRead *) notify);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void Connect (
|
|
||||||
const plNetAddress& addr,
|
|
||||||
ConnectParam * cp
|
|
||||||
) {
|
|
||||||
CliCsConn * conn = NEWZERO(CliCsConn);
|
|
||||||
conn->addr = addr;
|
|
||||||
conn->seq = ConnNextSequence();
|
|
||||||
conn->lastHeardTimeMs = GetNonZeroTimeMs();
|
|
||||||
conn->connectParam = cp;
|
|
||||||
|
|
||||||
conn->IncRef("Lifetime");
|
|
||||||
conn->IncRef("Connecting");
|
|
||||||
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
while (CliCsConn * conn = s_conns.Head())
|
|
||||||
UnlinkAndAbandonConn_CS(conn);
|
|
||||||
s_conns.Link(conn);
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
|
|
||||||
Cli2Csr_Connect connect;
|
|
||||||
connect.hdr.connType = kConnTypeCliToCsr;
|
|
||||||
connect.hdr.hdrBytes = sizeof(connect.hdr);
|
|
||||||
connect.hdr.buildId = BuildId();
|
|
||||||
connect.hdr.buildType = BUILD_TYPE_LIVE;
|
|
||||||
connect.hdr.branchId = BranchId();
|
|
||||||
connect.hdr.productId = ProductId();
|
|
||||||
connect.data.dataBytes = sizeof(connect.data);
|
|
||||||
|
|
||||||
AsyncSocketConnect(
|
|
||||||
&conn->cancelId,
|
|
||||||
addr,
|
|
||||||
SocketNotifyCallback,
|
|
||||||
conn,
|
|
||||||
&connect,
|
|
||||||
sizeof(connect),
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static void AsyncLookupCallback (
|
|
||||||
void * param,
|
|
||||||
const char name[],
|
|
||||||
unsigned addrCount,
|
|
||||||
const plNetAddress addrs[]
|
|
||||||
) {
|
|
||||||
if (!addrCount) {
|
|
||||||
ReportNetError(kNetProtocolCli2Auth, kNetErrNameLookupFailed);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only connect to one server
|
|
||||||
addrCount = MIN(addrCount, 1);
|
|
||||||
|
|
||||||
for (unsigned i = 0; i < addrCount; ++i) {
|
|
||||||
Connect(addrs[i], (ConnectParam *)param);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Message handlers
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool Recv_PingReply (
|
|
||||||
const uint8_t msg[],
|
|
||||||
unsigned bytes,
|
|
||||||
void *
|
|
||||||
) {
|
|
||||||
const Csr2Cli_PingReply & reply = *(const Csr2Cli_PingReply *)msg;
|
|
||||||
|
|
||||||
NetTransRecv(reply.transId, msg, bytes);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool Recv_RegisterReply (
|
|
||||||
const uint8_t msg[],
|
|
||||||
unsigned ,
|
|
||||||
void * param
|
|
||||||
) {
|
|
||||||
CliCsConn * conn = (CliCsConn *)param;
|
|
||||||
|
|
||||||
const Csr2Cli_RegisterReply & reply = *(const Csr2Cli_RegisterReply *)msg;
|
|
||||||
|
|
||||||
conn->serverChallenge = reply.serverChallenge;
|
|
||||||
conn->latestBuildId = reply.csrBuildId;
|
|
||||||
|
|
||||||
ConnectedNotifyTrans * trans = new ConnectedNotifyTrans(
|
|
||||||
conn->connectParam,
|
|
||||||
conn->latestBuildId
|
|
||||||
);
|
|
||||||
NetTransSend(trans);
|
|
||||||
|
|
||||||
conn->connectParam = nil;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool Recv_LoginReply (
|
|
||||||
const uint8_t msg[],
|
|
||||||
unsigned bytes,
|
|
||||||
void *
|
|
||||||
) {
|
|
||||||
const Csr2Cli_LoginReply & reply = *(const Csr2Cli_LoginReply *)msg;
|
|
||||||
|
|
||||||
NetTransRecv(reply.transId, msg, bytes);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Protocol
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#define MSG(s) kNetMsg_Cli2Csr_##s
|
|
||||||
static NetMsgInitSend s_send[] = {
|
|
||||||
{ MSG(PingRequest) },
|
|
||||||
{ MSG(RegisterRequest) },
|
|
||||||
{ MSG(LoginRequest) },
|
|
||||||
};
|
|
||||||
#undef MSG
|
|
||||||
|
|
||||||
#define MSG(s) kNetMsg_Csr2Cli_##s, Recv_##s
|
|
||||||
static NetMsgInitRecv s_recv[] = {
|
|
||||||
{ MSG(PingReply) },
|
|
||||||
{ MSG(RegisterReply) },
|
|
||||||
{ MSG(LoginReply) },
|
|
||||||
};
|
|
||||||
#undef MSG
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* CliCsConn
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//===========================================================================
|
|
||||||
static unsigned CliCsConnTimerDestroyed (void * param) {
|
|
||||||
|
|
||||||
CliCsConn * conn = (CliCsConn *) param;
|
|
||||||
conn->DecRef("PingTimer");
|
|
||||||
return kAsyncTimeInfinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
//===========================================================================
|
|
||||||
static unsigned CliCsConnPingTimerProc (void * param) {
|
|
||||||
|
|
||||||
((CliCsConn *) param)->TimerPing();
|
|
||||||
return kPingIntervalMs;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
CliCsConn::CliCsConn () {
|
|
||||||
|
|
||||||
AtomicAdd(&s_perf[kPerfConnCount], 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
CliCsConn::~CliCsConn () {
|
|
||||||
|
|
||||||
// Delete 'cli' after all refs have been removed
|
|
||||||
if (cli)
|
|
||||||
NetCliDelete(cli, true);
|
|
||||||
|
|
||||||
delete connectParam;
|
|
||||||
|
|
||||||
AtomicAdd(&s_perf[kPerfConnCount], -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CliCsConn::AutoPing () {
|
|
||||||
ASSERT(!pingTimer);
|
|
||||||
|
|
||||||
IncRef("PingTimer");
|
|
||||||
critsect.Enter();
|
|
||||||
{
|
|
||||||
AsyncTimerCreate(
|
|
||||||
&pingTimer,
|
|
||||||
CliCsConnPingTimerProc,
|
|
||||||
sock ? 0 : kAsyncTimeInfinite,
|
|
||||||
this
|
|
||||||
);
|
|
||||||
}
|
|
||||||
critsect.Leave();
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CliCsConn::StopAutoPing () {
|
|
||||||
critsect.Enter();
|
|
||||||
{
|
|
||||||
if (AsyncTimer * timer = pingTimer) {
|
|
||||||
pingTimer = nil;
|
|
||||||
AsyncTimerDeleteCallback(timer, CliCsConnTimerDestroyed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
critsect.Leave();
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CliCsConn::TimerPing () {
|
|
||||||
|
|
||||||
// Send a ping request
|
|
||||||
pingSendTimeMs = GetNonZeroTimeMs();
|
|
||||||
|
|
||||||
const uintptr_t msg[] = {
|
|
||||||
kCli2Auth_PingRequest,
|
|
||||||
0, // not a transaction
|
|
||||||
pingSendTimeMs,
|
|
||||||
0, // no payload
|
|
||||||
nil
|
|
||||||
};
|
|
||||||
|
|
||||||
Send(msg, arrsize(msg));
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CliCsConn::Send (const uintptr_t fields[], unsigned count) {
|
|
||||||
|
|
||||||
critsect.Enter();
|
|
||||||
{
|
|
||||||
NetCliSend(cli, fields, count);
|
|
||||||
NetCliFlush(cli);
|
|
||||||
}
|
|
||||||
critsect.Leave();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* ConnectedNotifyTrans
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void ConnectedNotifyTrans::Post () {
|
|
||||||
|
|
||||||
if (m_connectParam && m_connectParam->callback)
|
|
||||||
m_connectParam->callback(m_connectParam->param, m_latestBuildId);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* LoginRequestTrans
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
LoginRequestTrans::LoginRequestTrans (
|
|
||||||
const wchar_t csrName[],
|
|
||||||
const ShaDigest & namePassHash,
|
|
||||||
FNetCliCsrLoginCallback callback,
|
|
||||||
void * param
|
|
||||||
) : NetCsrTrans(kCsrLoginTrans)
|
|
||||||
, m_callback(callback)
|
|
||||||
, m_param(param)
|
|
||||||
{
|
|
||||||
ASSERT(callback);
|
|
||||||
memcpy(m_namePassHash, namePassHash, sizeof(ShaDigest));
|
|
||||||
StrCopy(m_csrName, csrName, arrsize(m_csrName));
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
bool LoginRequestTrans::Send () {
|
|
||||||
|
|
||||||
if (!AcquireConn())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
ShaDigest challengeHash;
|
|
||||||
uint32_t clientChallenge = 0;
|
|
||||||
|
|
||||||
CryptCreateRandomSeed(
|
|
||||||
sizeof(clientChallenge),
|
|
||||||
(uint8_t *) &clientChallenge
|
|
||||||
);
|
|
||||||
|
|
||||||
CryptHashPasswordChallenge(
|
|
||||||
clientChallenge,
|
|
||||||
s_active->serverChallenge,
|
|
||||||
m_namePassHash,
|
|
||||||
challengeHash
|
|
||||||
);
|
|
||||||
|
|
||||||
const uintptr_t msg[] = {
|
|
||||||
kCli2Csr_LoginRequest,
|
|
||||||
m_transId,
|
|
||||||
clientChallenge,
|
|
||||||
(uintptr_t) m_csrName,
|
|
||||||
(uintptr_t) &challengeHash
|
|
||||||
};
|
|
||||||
|
|
||||||
m_conn->Send(msg, arrsize(msg));
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void LoginRequestTrans::Post () {
|
|
||||||
m_callback(
|
|
||||||
m_result,
|
|
||||||
m_param,
|
|
||||||
m_csrId,
|
|
||||||
m_csrFlags
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
bool LoginRequestTrans::Recv (
|
|
||||||
const uint8_t msg[],
|
|
||||||
unsigned bytes
|
|
||||||
) {
|
|
||||||
const Csr2Cli_LoginReply & reply = *(const Csr2Cli_LoginReply *) msg;
|
|
||||||
|
|
||||||
m_result = reply.result;
|
|
||||||
m_csrId = reply.csrId;
|
|
||||||
m_csrFlags = reply.csrFlags;
|
|
||||||
|
|
||||||
m_state = kTransStateComplete;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} using namespace Csr;
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* NetCsrTrans
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
NetCsrTrans::NetCsrTrans (ETransType transType)
|
|
||||||
: NetTrans(kNetProtocolCli2Csr, transType)
|
|
||||||
, m_conn(nil)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
NetCsrTrans::~NetCsrTrans () {
|
|
||||||
ReleaseConn();
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
bool NetCsrTrans::AcquireConn () {
|
|
||||||
if (!m_conn)
|
|
||||||
m_conn = GetConnIncRef("AcquireConn");
|
|
||||||
return m_conn != nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void NetCsrTrans::ReleaseConn () {
|
|
||||||
if (m_conn) {
|
|
||||||
m_conn->DecRef("AcquireConn");
|
|
||||||
m_conn = nil;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Module functions
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrInitialize () {
|
|
||||||
|
|
||||||
s_running = true;
|
|
||||||
|
|
||||||
NetMsgProtocolRegister(
|
|
||||||
kNetProtocolCli2Csr,
|
|
||||||
false,
|
|
||||||
s_send, arrsize(s_send),
|
|
||||||
s_recv, arrsize(s_recv),
|
|
||||||
kCsrDhGValue,
|
|
||||||
plBigNum(sizeof(kCsrDhXData), kCsrDhXData),
|
|
||||||
plBigNum(sizeof(kCsrDhNData), kCsrDhNData)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void CsrDestroy (bool wait) {
|
|
||||||
|
|
||||||
s_running = false;
|
|
||||||
|
|
||||||
NetTransCancelByProtocol(
|
|
||||||
kNetProtocolCli2Csr,
|
|
||||||
kNetErrRemoteShutdown
|
|
||||||
);
|
|
||||||
NetMsgProtocolDestroy(
|
|
||||||
kNetProtocolCli2Csr,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
while (CliCsConn * conn = s_conns.Head())
|
|
||||||
UnlinkAndAbandonConn_CS(conn);
|
|
||||||
s_active = nil;
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
|
|
||||||
if (!wait)
|
|
||||||
return;
|
|
||||||
|
|
||||||
while (s_perf[kPerfConnCount]) {
|
|
||||||
NetTransUpdate();
|
|
||||||
AsyncSleep(10);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
bool CsrQueryConnected () {
|
|
||||||
|
|
||||||
bool result;
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
if (nil != (result = s_active))
|
|
||||||
result &= (nil != s_active->cli);
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
unsigned CsrGetConnId () {
|
|
||||||
|
|
||||||
unsigned connId;
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
connId = (s_active) ? s_active->seq : 0;
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
return connId;
|
|
||||||
}
|
|
||||||
|
|
||||||
} using namespace Ngl;
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Exports
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void NetCliCsrStartConnect (
|
|
||||||
const char* addrList[],
|
|
||||||
uint32_t addrCount,
|
|
||||||
FNetCliCsrConnectedCallback callback,
|
|
||||||
void * param
|
|
||||||
) {
|
|
||||||
// Only connect to one server
|
|
||||||
addrCount = min(addrCount, 1);
|
|
||||||
|
|
||||||
for (unsigned i = 0; i < addrCount; ++i) {
|
|
||||||
// Do we need to lookup the address?
|
|
||||||
const char* name = addrList[i];
|
|
||||||
while (unsigned ch = *name) {
|
|
||||||
++name;
|
|
||||||
if (!(isdigit(ch) || ch == L'.' || ch == L':')) {
|
|
||||||
ConnectParam * cp = new ConnectParam;
|
|
||||||
cp->callback = callback;
|
|
||||||
cp->param = param;
|
|
||||||
|
|
||||||
AsyncCancelId cancelId;
|
|
||||||
AsyncAddressLookupName(
|
|
||||||
&cancelId,
|
|
||||||
AsyncLookupCallback,
|
|
||||||
addrList[i],
|
|
||||||
kNetDefaultClientPort,
|
|
||||||
cp
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!name[0]) {
|
|
||||||
plNetAddress addr(addrList[i], kNetDefaultClientPort);
|
|
||||||
|
|
||||||
ConnectParam * cp = new ConnectParam;
|
|
||||||
cp->callback = callback;
|
|
||||||
cp->param = param;
|
|
||||||
|
|
||||||
Connect(addr, cp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void NetCliCsrDisconnect () {
|
|
||||||
|
|
||||||
s_critsect.Enter();
|
|
||||||
{
|
|
||||||
while (CliCsConn * conn = s_conns.Head())
|
|
||||||
UnlinkAndAbandonConn_CS(conn);
|
|
||||||
s_active = nil;
|
|
||||||
}
|
|
||||||
s_critsect.Leave();
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
void NetCliCsrLoginRequest (
|
|
||||||
const wchar_t csrName[],
|
|
||||||
const ShaDigest & namePassHash,
|
|
||||||
FNetCliCsrLoginCallback callback,
|
|
||||||
void * param
|
|
||||||
) {
|
|
||||||
LoginRequestTrans * trans = new LoginRequestTrans(
|
|
||||||
csrName,
|
|
||||||
namePassHash,
|
|
||||||
callback,
|
|
||||||
param
|
|
||||||
);
|
|
||||||
NetTransSend(trans);
|
|
||||||
}
|
|
@ -1,94 +0,0 @@
|
|||||||
/*==LICENSE==*
|
|
||||||
|
|
||||||
CyanWorlds.com Engine - MMOG client, server and tools
|
|
||||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Additional permissions under GNU GPL version 3 section 7
|
|
||||||
|
|
||||||
If you modify this Program, or any covered work, by linking or
|
|
||||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
|
||||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
|
||||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
|
||||||
(or a modified version of those libraries),
|
|
||||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
|
||||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
|
||||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
|
||||||
licensors of this Program grant you additional
|
|
||||||
permission to convey the resulting work. Corresponding Source for a
|
|
||||||
non-source form of such a combination shall include the source code for
|
|
||||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|
||||||
or by snail mail at:
|
|
||||||
Cyan Worlds, Inc.
|
|
||||||
14617 N Newport Hwy
|
|
||||||
Mead, WA 99021
|
|
||||||
|
|
||||||
*==LICENSE==*/
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* $/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCsr.h
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
#ifdef PLASMA20_SOURCES_PLASMA_PUBUTILLIB_PLNETGAMELIB_PRIVATE_PLNGLCSR_H
|
|
||||||
#error "Header $/Plasma20/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglCsr.h included more than once"
|
|
||||||
#endif
|
|
||||||
#define PLASMA20_SOURCES_PLASMA_PUBUTILLIB_PLNETGAMELIB_PRIVATE_PLNGLCSR_H
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* Client-side CSR functions
|
|
||||||
*
|
|
||||||
***/
|
|
||||||
|
|
||||||
typedef void (*FNetCliCsrConnectedCallback) (
|
|
||||||
void * param,
|
|
||||||
unsigned latestBuildId
|
|
||||||
);
|
|
||||||
void NetCliCsrStartConnect (
|
|
||||||
const char* addrList[],
|
|
||||||
uint32_t addrCount,
|
|
||||||
FNetCliCsrConnectedCallback callback = nil,
|
|
||||||
void * param = nil
|
|
||||||
);
|
|
||||||
void NetCliCsrDisconnect ();
|
|
||||||
|
|
||||||
typedef void (*FNetCliCsrLoginCallback)(
|
|
||||||
ENetError result,
|
|
||||||
void * param,
|
|
||||||
const Uuid & csrId,
|
|
||||||
unsigned csrFlags
|
|
||||||
);
|
|
||||||
void NetCliCsrLoginRequest (
|
|
||||||
const wchar_t csrName[],
|
|
||||||
const ShaDigest & namePassHash,
|
|
||||||
FNetCliCsrLoginCallback callback,
|
|
||||||
void * param
|
|
||||||
);
|
|
||||||
|
|
||||||
typedef void (*FNetCliCsrSetTicketFilterCallback)(
|
|
||||||
ENetError result,
|
|
||||||
void * param
|
|
||||||
);
|
|
||||||
void NetCliCsrSetTicketFilter (
|
|
||||||
const wchar_t filterSpec[],
|
|
||||||
FNetCliCsrSetTicketFilterCallback callback,
|
|
||||||
void * param
|
|
||||||
);
|
|
||||||
|
|
@ -79,7 +79,6 @@ unsigned ConnGetId (ENetProtocol protocol) {
|
|||||||
case kNetProtocolCli2Auth: return AuthGetConnId();
|
case kNetProtocolCli2Auth: return AuthGetConnId();
|
||||||
case kNetProtocolCli2Game: return GameGetConnId();
|
case kNetProtocolCli2Game: return GameGetConnId();
|
||||||
case kNetProtocolCli2File: return FileGetConnId();
|
case kNetProtocolCli2File: return FileGetConnId();
|
||||||
case kNetProtocolCli2Csr: return CsrGetConnId();
|
|
||||||
case kNetProtocolCli2GateKeeper: return GateKeeperGetConnId();
|
case kNetProtocolCli2GateKeeper: return GateKeeperGetConnId();
|
||||||
DEFAULT_FATAL(protocol);
|
DEFAULT_FATAL(protocol);
|
||||||
}
|
}
|
||||||
|
@ -144,7 +144,6 @@ bool NetTrans::CanStart () const {
|
|||||||
case kNetProtocolCli2Auth: return AuthQueryConnected();
|
case kNetProtocolCli2Auth: return AuthQueryConnected();
|
||||||
case kNetProtocolCli2Game: return GameQueryConnected();
|
case kNetProtocolCli2Game: return GameQueryConnected();
|
||||||
case kNetProtocolCli2File: return FileQueryConnected();
|
case kNetProtocolCli2File: return FileQueryConnected();
|
||||||
case kNetProtocolCli2Csr: return CsrQueryConnected();
|
|
||||||
case kNetProtocolCli2GateKeeper: return GateKeeperQueryConnected();
|
case kNetProtocolCli2GateKeeper: return GateKeeperQueryConnected();
|
||||||
DEFAULT_FATAL(m_protocol);
|
DEFAULT_FATAL(m_protocol);
|
||||||
}
|
}
|
||||||
|
@ -117,7 +117,6 @@ target_link_libraries(MaxMain pfCCR)
|
|||||||
target_link_libraries(MaxMain pfCharacter)
|
target_link_libraries(MaxMain pfCharacter)
|
||||||
target_link_libraries(MaxMain pfConditional)
|
target_link_libraries(MaxMain pfConditional)
|
||||||
target_link_libraries(MaxMain pfConsole)
|
target_link_libraries(MaxMain pfConsole)
|
||||||
target_link_libraries(MaxMain pfCsrSrv)
|
|
||||||
target_link_libraries(MaxMain pfGameGUIMgr)
|
target_link_libraries(MaxMain pfGameGUIMgr)
|
||||||
target_link_libraries(MaxMain pfGameMgr)
|
target_link_libraries(MaxMain pfGameMgr)
|
||||||
target_link_libraries(MaxMain pfGameScoreMgr)
|
target_link_libraries(MaxMain pfGameScoreMgr)
|
||||||
@ -175,7 +174,6 @@ target_link_libraries(MaxMain plVault)
|
|||||||
target_link_libraries(MaxMain pnAddrInfo)
|
target_link_libraries(MaxMain pnAddrInfo)
|
||||||
target_link_libraries(MaxMain pnAsyncCore)
|
target_link_libraries(MaxMain pnAsyncCore)
|
||||||
target_link_libraries(MaxMain pnAsyncCoreExe)
|
target_link_libraries(MaxMain pnAsyncCoreExe)
|
||||||
target_link_libraries(MaxMain pnCsrNet)
|
|
||||||
target_link_libraries(MaxMain pnDispatch)
|
target_link_libraries(MaxMain pnDispatch)
|
||||||
target_link_libraries(MaxMain pnEncryption)
|
target_link_libraries(MaxMain pnEncryption)
|
||||||
target_link_libraries(MaxMain pnFactory)
|
target_link_libraries(MaxMain pnFactory)
|
||||||
@ -191,7 +189,6 @@ target_link_libraries(MaxMain pnNetProtocol)
|
|||||||
target_link_libraries(MaxMain pnNucleusInc)
|
target_link_libraries(MaxMain pnNucleusInc)
|
||||||
target_link_libraries(MaxMain pnProduct)
|
target_link_libraries(MaxMain pnProduct)
|
||||||
target_link_libraries(MaxMain pnSceneObject)
|
target_link_libraries(MaxMain pnSceneObject)
|
||||||
target_link_libraries(MaxMain pnSimpleNet)
|
|
||||||
target_link_libraries(MaxMain pnTimer)
|
target_link_libraries(MaxMain pnTimer)
|
||||||
target_link_libraries(MaxMain pnUtils)
|
target_link_libraries(MaxMain pnUtils)
|
||||||
target_link_libraries(MaxMain pnUtilsExe)
|
target_link_libraries(MaxMain pnUtilsExe)
|
||||||
|
@ -53,7 +53,6 @@ target_link_libraries(MaxPlasmaLights pfCCR)
|
|||||||
target_link_libraries(MaxPlasmaLights pfCharacter)
|
target_link_libraries(MaxPlasmaLights pfCharacter)
|
||||||
target_link_libraries(MaxPlasmaLights pfConditional)
|
target_link_libraries(MaxPlasmaLights pfConditional)
|
||||||
target_link_libraries(MaxPlasmaLights pfConsole)
|
target_link_libraries(MaxPlasmaLights pfConsole)
|
||||||
target_link_libraries(MaxPlasmaLights pfCsrSrv)
|
|
||||||
target_link_libraries(MaxPlasmaLights pfGameGUIMgr)
|
target_link_libraries(MaxPlasmaLights pfGameGUIMgr)
|
||||||
target_link_libraries(MaxPlasmaLights pfGameMgr)
|
target_link_libraries(MaxPlasmaLights pfGameMgr)
|
||||||
target_link_libraries(MaxPlasmaLights pfGameScoreMgr)
|
target_link_libraries(MaxPlasmaLights pfGameScoreMgr)
|
||||||
@ -108,7 +107,6 @@ target_link_libraries(MaxPlasmaLights plVault)
|
|||||||
target_link_libraries(MaxPlasmaLights pnAddrInfo)
|
target_link_libraries(MaxPlasmaLights pnAddrInfo)
|
||||||
target_link_libraries(MaxPlasmaLights pnAsyncCore)
|
target_link_libraries(MaxPlasmaLights pnAsyncCore)
|
||||||
target_link_libraries(MaxPlasmaLights pnAsyncCoreExe)
|
target_link_libraries(MaxPlasmaLights pnAsyncCoreExe)
|
||||||
target_link_libraries(MaxPlasmaLights pnCsrNet)
|
|
||||||
target_link_libraries(MaxPlasmaLights pnDispatch)
|
target_link_libraries(MaxPlasmaLights pnDispatch)
|
||||||
target_link_libraries(MaxPlasmaLights pnEncryption)
|
target_link_libraries(MaxPlasmaLights pnEncryption)
|
||||||
target_link_libraries(MaxPlasmaLights pnFactory)
|
target_link_libraries(MaxPlasmaLights pnFactory)
|
||||||
@ -123,7 +121,6 @@ target_link_libraries(MaxPlasmaLights pnNetCommon)
|
|||||||
target_link_libraries(MaxPlasmaLights pnNucleusInc)
|
target_link_libraries(MaxPlasmaLights pnNucleusInc)
|
||||||
target_link_libraries(MaxPlasmaLights pnProduct)
|
target_link_libraries(MaxPlasmaLights pnProduct)
|
||||||
target_link_libraries(MaxPlasmaLights pnSceneObject)
|
target_link_libraries(MaxPlasmaLights pnSceneObject)
|
||||||
target_link_libraries(MaxPlasmaLights pnSimpleNet)
|
|
||||||
target_link_libraries(MaxPlasmaLights pnTimer)
|
target_link_libraries(MaxPlasmaLights pnTimer)
|
||||||
target_link_libraries(MaxPlasmaLights pnUtils)
|
target_link_libraries(MaxPlasmaLights pnUtils)
|
||||||
target_link_libraries(MaxPlasmaLights pnUtilsExe)
|
target_link_libraries(MaxPlasmaLights pnUtilsExe)
|
||||||
|
Reference in New Issue
Block a user