// Ryzom - MMORPG Framework
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
#ifndef RY_BG_DOWNLOADER_MSG_H
#define RY_BG_DOWNLOADER_MSG_H
namespace BGDownloader // Ryzom background downloader
{
enum TMsgType
{
// from background downloader to client
BGD_UpdateStatusString = 0, // Sent by background downloader to reflect an update of its status string in the client
BGD_State, // The downloader gives its state to the client
BGD_Mode, // The downloader gives its mode to the client
BGD_TaskResult, // Return the result of the last task after a 'GetTaskResult' request
// will be followed by a uint32 bitfield giving the name of the available downloads
// (as indexed by TDownloadID)
// (or 0 else)
BGD_DescFile, // The downloader send the desc file to the client
BGD_Error, // The downloader signal a download problem to the client
BGD_Priority,
// from client to background downloader
CL_GetMode, // Client ask its mode to the downloader
CL_GetState, // Client ask its state to the downloader
CL_GetTaskResult, // Client ask the result of the last task
CL_Stop, // Client ask the downloader to stop (interrupt) its current task, then remain in 'idle' state
CL_StartTask, // Client ask the downloader to start a new specific task, the downloader should be in 'idle' state
CL_SetMode, // Put the downloader in 'slave' mode or autonomous, 1 param is 'TDownloaderMode'
CL_SetVerbose, // Followed by 'true' or 'false'
// In verbose mode, the downloader will send a status string
CL_Shutdown, // Client wants the downloader to be shutdown. Happens before a reboot of both client & downloader
CL_GetDescFile, // Client ask the description file that is updated when the last "CheckPatch" succeeded
CL_Show,
CL_Hide,
CL_SetPriority,
// probe / ack for init
CL_Probe,
BGD_Ack,
UnknownMessageType
};
enum TDownloaderState
{
DLState_Idle = 0,
DLState_CheckPatch, // both slave & autonomous modes
DLState_GetPatch, // autonomous mode only
DLState_GetAndApplyPatch, // slave mode only
DLState_Count
};
enum TDownloaderMode
{
DownloaderMode_Autonomous = 0, // for future standalone downloader
DownloaderMode_Slave, // In this mode, the downloader won't take the initiative
// to start a download task. Client has authority on the tasks to start
DownloaderMode_Unknown
};
enum TDownloadID
{
DownloadID_RoS = 0, // ruin of silans
DownloadID_MainLand = 1, // mainland
DownloadID_Count,
DownloadID_Unknown = DownloadID_Count
};
enum TThreadPriority
{
ThreadPriority_DownloaderError = -1,
ThreadPriority_Paused = 0,
ThreadPriority_Low,
ThreadPriority_Normal,
ThreadPriority_Count,
ThreadPriority_Unknown = ThreadPriority_Count
};
// description of current task of the bg downloader
class CTaskDesc
{
public:
TDownloaderState State;
uint32 DownloadBitfield;
public:
CTaskDesc(TDownloaderState state = DLState_Idle, uint32 downloadBitfield = 0) : State(state), DownloadBitfield(downloadBitfield) {}
bool operator == (const CTaskDesc &rhs) const
{
return State == rhs.State && DownloadBitfield == rhs.DownloadBitfield;
}
bool operator != (const CTaskDesc &rhs) const { return !(*this == rhs); }
void serial(NLMISC::IStream &s)
{
s.serialVersion(0);
s.serialEnum(State);
s.serialEnum(DownloadBitfield);
}
};
enum TTaskResult
{
TaskResult_Success = 0,
TaskResult_Error,
TaskResult_Interrupted,
TaskResult_Unknown
};
// windows ids for inter window communication
const int ClientWndID = 0xc6e526b;
const int DownloaderWndID = 0x5ce37c22;
const uint RYZOM_PID_SHM_ID = 0x6b833f31;
// name of the background downloader system-wide mutex
extern const char *DownloaderMutexName;
// get patch written size in megabytes
ucstring getWrittenSize(uint32 nSize);
std::string toString(TMsgType msgType);
}
#endif