/*==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 . 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==*/ #include "plgDispatch.h" #include "plNetClientMgr.h" #include "../pnNetCommon/pnNetCommon.h" #include "../pnMessage/plTimeMsg.h" #include "../plNetClientRecorder/plNetClientRecorder.h" // // make a recording of current play // bool plNetClientMgr::RecordMsgs(const char* recType, const char* recName) { if (!fMsgRecorder) { if (stricmp(recType,"stream") == 0) fMsgRecorder = TRACKED_NEW plNetClientStreamRecorder; if (stricmp(recType,"stressstream") == 0) fMsgRecorder = TRACKED_NEW plNetClientStressStreamRecorder; if (stricmp(recType,"stats") == 0) fMsgRecorder = TRACKED_NEW plNetClientStatsRecorder; if (stricmp(recType,"streamandstats") == 0) fMsgRecorder = TRACKED_NEW plNetClientStreamAndStatsRecorder(TRACKED_NEW plNetClientStreamRecorder(), TRACKED_NEW plNetClientStatsRecorder()); if (stricmp(recType,"stressstreamandstats") == 0) fMsgRecorder = TRACKED_NEW plNetClientStreamAndStatsRecorder(TRACKED_NEW plNetClientStressStreamRecorder(), TRACKED_NEW plNetClientStatsRecorder()); if (!fMsgRecorder || !fMsgRecorder->BeginRecording(recName)) { delete fMsgRecorder; fMsgRecorder = nil; return false; } return true; } return false; } // // play a recording // bool plNetClientMgr::PlaybackMsgs(const char* recName) { hsLogEntry(DebugMsg("DEMO: Beginning Playback")); plNetClientRecorder* player = TRACKED_NEW plNetClientStreamRecorder; if (player->BeginPlayback(recName)) { fMsgPlayers.push_back(player); // plgDispatch::Dispatch()->RegisterForExactType(plEvalMsg::Index(), GetKey()); return true; } else { delete player; return false; } } // // // void plNetClientMgr::IPlaybackMsgs() { for (int i = 0; i < fMsgPlayers.size(); i++) { plNetClientRecorder* recorder = fMsgPlayers[i]; if (recorder->IsQueueEmpty()) { delete recorder; fMsgPlayers.erase(fMsgPlayers.begin()+i); i--; if (fMsgPlayers.empty()) { // plgDispatch::Dispatch()->UnRegisterForExactType(plEvalMsg::Index(), GetKey()); } } else { while (plNetMessage* msg = recorder->GetNextMessage()) { hsLogEntry(DebugMsg("")); fMsgHandler.ReceiveMsg(msg); } } } }