diff options
Diffstat (limited to 'utils/vmpi/vmpi_defs.h')
| -rw-r--r-- | utils/vmpi/vmpi_defs.h | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/utils/vmpi/vmpi_defs.h b/utils/vmpi/vmpi_defs.h new file mode 100644 index 0000000..7d65508 --- /dev/null +++ b/utils/vmpi/vmpi_defs.h @@ -0,0 +1,147 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef VMPI_DEFS_H +#define VMPI_DEFS_H +#ifdef _WIN32 +#pragma once +#endif + + +// This goes in front of all packets. +#define VMPI_PROTOCOL_VERSION 5 + +// This represents the protocol between the service and its UI. +#define VMPI_SERVICE_UI_PROTOCOL_VERSION 1 + +// NOTE: the service version (embedded in vmpi_service.exe as a resource) is the version +// that is used to apply patches. +#define VMPI_SERVICE_IDS_VERSION_STRING 102 // This matches IDS_VERSION_STRING in vmpi_service.exe. + +// Known packet IDs in various systems. +#define VMPI_PACKETID_FILESYSTEM 0 // The file system reserves this packet ID. + // All application traffic must set its first byte to something other + // than this value. +#define VMPI_SHARED_PACKET_ID 10 + + +// Turn this on, and the various service apps will log stuff. +//#define VMPI_SERVICE_LOGS + + +// This value is put in the RunningTimeMS until the job is finished. This is how +// the job_search app knows if a job never finished. +#define RUNNINGTIME_MS_SENTINEL 0xFEDCBAFD + + + +#define VMPI_SERVICE_NAME_INTERNAL "VMPI" +#define VMPI_SERVICE_NAME "Valve MPI Service" + +// Stuff in the registry goes under here (in HKEY_LOCAL_MACHINE). +#define VMPI_SERVICE_KEY "Software\\Valve\\VMPI" +#define SERVICE_INSTALL_LOCATION_KEY "InstallLocation" + +// The VMPI service listens on one of these ports to talk to the UI. +#define VMPI_SERVICE_FIRST_UI_PORT 23300 +#define VMPI_SERVICE_LAST_UI_PORT 23310 + +// Port numbers that the master will use to broadcast unless -mpi_port is used. +#define VMPI_MASTER_FIRST_PORT 23311 +#define VMPI_MASTER_LAST_PORT 23330 + + +// Packet IDs for vmpi_service to talk to UI clients. +#define VMPI_SERVICE_TO_UI_CONSOLE_TEXT 0 // Print some text to the UI's console. +#define VMPI_SERVICE_TO_UI_STATE 1 // Updates state reflecting whether it's idle, busy, etc. +#define VMPI_SERVICE_TO_UI_PATCHING 2 // Updates state reflecting whether it's idle, busy, etc. +#define VMPI_SERVICE_TO_UI_EXIT 3 // Updates state reflecting whether it's idle, busy, etc. + + // Application state.. these are communicated between the service and the UI. + enum + { + VMPI_SERVICE_STATE_IDLE=0, + VMPI_SERVICE_STATE_BUSY, + VMPI_SERVICE_STATE_DISABLED + }; +#define VMPI_SERVICE_DISABLE 2 // Stop waiting for jobs.. +#define VMPI_SERVICE_ENABLE 3 +#define VMPI_SERVICE_UPDATE_PASSWORD 4 // New password. +#define VMPI_SERVICE_EXIT 5 // User chose "exit" from the menu. Kill the service. +#define VMPI_SERVICE_SKIP_CSX_JOBS 6 +#define VMPI_SERVICE_SCREENSAVER_MODE 7 + + +// The worker service waits on this range of ports. +#define VMPI_SERVICE_PORT 23397 +#define VMPI_LAST_SERVICE_PORT (VMPI_SERVICE_PORT + 15) + + +#define VMPI_WORKER_PORT_FIRST 22340 +#define VMPI_WORKER_PORT_LAST 22350 + +// The VMPI service downloader is still a worker but it uses this port range so the +// master knows it's just downloading the exes. +#define VMPI_SERVICE_DOWNLOADER_PORT_FIRST 22351 +#define VMPI_SERVICE_DOWNLOADER_PORT_LAST 22360 + +// Give it a small range so they can have multiple masters running. +#define VMPI_MASTER_PORT_FIRST 21140 +#define VMPI_MASTER_PORT_LAST 21145 +#define VMPI_MASTER_FILESYSTEM_BROADCAST_PORT 21146 + + + + +// Protocol. + +// The message format is: +// - VMPI_PROTOCOL_VERSION +// - null-terminated password string (or VMPI_PASSWORD_OVERRIDE followed by a zero to process it regardless of pw). +// - packet ID +// - payload + + +#define VMPI_PASSWORD_OVERRIDE -111 + + +#define VMPI_MESSAGE_BASE 71 + + +// This is the broadcast message from the main (rank 0) process looking for workers. +#define VMPI_LOOKING_FOR_WORKERS (VMPI_MESSAGE_BASE+0) + +// This is so an app can find out what machines are running the service. +#define VMPI_PING_REQUEST (VMPI_MESSAGE_BASE+2) +#define VMPI_PING_RESPONSE (VMPI_MESSAGE_BASE+3) + +// This tells the service to quit. +#define VMPI_STOP_SERVICE (VMPI_MESSAGE_BASE+6) + +// This tells the service to kill any process it has running. +#define VMPI_KILL_PROCESS (VMPI_MESSAGE_BASE+7) + +// This tells the service to patch itself. +#define VMPI_SERVICE_PATCH (VMPI_MESSAGE_BASE+8) + +// Sent back to the master via UDP to tell it if its job has started and ended. +#define VMPI_NOTIFY_START_STATUS (VMPI_MESSAGE_BASE+9) +#define VMPI_NOTIFY_END_STATUS (VMPI_MESSAGE_BASE+10) + +#define VMPI_FORCE_PASSWORD_CHANGE (VMPI_MESSAGE_BASE+11) + + +// These states are sent from the service to the services browser. +#define VMPI_STATE_IDLE 0 +#define VMPI_STATE_BUSY 1 +#define VMPI_STATE_PATCHING 2 +#define VMPI_STATE_DISABLED 3 +#define VMPI_STATE_SCREENSAVER_DISABLED 4 +#define VMPI_STATE_DOWNLOADING 5 + + +#endif // VMPI_DEFS_H |