aboutsummaryrefslogtreecommitdiff
path: root/sp/src/utils/vmpi/vmpi_defs.h
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /sp/src/utils/vmpi/vmpi_defs.h
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'sp/src/utils/vmpi/vmpi_defs.h')
-rw-r--r--sp/src/utils/vmpi/vmpi_defs.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/sp/src/utils/vmpi/vmpi_defs.h b/sp/src/utils/vmpi/vmpi_defs.h
new file mode 100644
index 00000000..7845d9f9
--- /dev/null
+++ b/sp/src/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