mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-23 06:36:54 +00:00
148 lines
4.7 KiB
C
148 lines
4.7 KiB
C
//========= 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
|