summaryrefslogtreecommitdiff
path: root/public/gcsdk/gcconstants.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/gcsdk/gcconstants.h')
-rw-r--r--public/gcsdk/gcconstants.h202
1 files changed, 202 insertions, 0 deletions
diff --git a/public/gcsdk/gcconstants.h b/public/gcsdk/gcconstants.h
new file mode 100644
index 0000000..bbaf068
--- /dev/null
+++ b/public/gcsdk/gcconstants.h
@@ -0,0 +1,202 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: declares a variety of constants
+//
+// $NoKeywords: $
+//=============================================================================
+
+#ifndef GCCONSTANTS_H
+#define GCCONSTANTS_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "steam/steamtypes.h"
+#include "tier0/t0constants.h"
+#include "gamecoordinator/igcsqlquery.h"
+
+namespace GCSDK
+{
+
+//-----------------------------------------------------------------------------
+// Timing constants
+//-----------------------------------------------------------------------------
+
+// How long each frame should last
+const int k_cMicroSecPerShellFrame = 50 * k_nThousand;
+
+// How many frames per second should we have
+const uint32 k_cFramesPerSec = k_nMillion / k_cMicroSecPerShellFrame;
+
+// Task granularity -- the longest time in microseconds you should spend without yielding
+const int k_cMicroSecTaskGranularity = 5 * k_nThousand;
+
+// If a frame runs longer than it's supposed to (which they always will by at least a little),
+// we subtract the overage from the next frame. This is the maximum amount to correct each frame.
+const int k_cMicroSecMaxFrameCorrection = 25 * k_nThousand;
+
+// if server time is too far behind, we will start skipping frames to re-synchronize it with real time
+const int k_cMicroSecBehindToStartFrameSkipping = (k_nMillion * 2);
+
+// Default Max time to allow a job to be blocked on I/O
+const int k_cMicroSecJobPausedTimeout = 20 * k_nMillion;
+
+// How much time a job should run before heartbeating
+const int k_cMicroSecJobHeartbeat = k_cMicroSecJobPausedTimeout / 4;
+
+// Default Max number of job heartbeat intervals to allow a job to be blocked on I/O
+const int k_cJobHeartbeatsBeforeTimeoutDefault = k_cMicroSecJobPausedTimeout / k_cMicroSecJobHeartbeat;
+
+// Number of seconds to take to cycle through all active sessions
+const int k_nUserSessionRunInterval = 5 * k_nMillion;
+const int k_nGSSessionRunInterval = 5 * k_nMillion;
+const int k_nAccountDetailsRunInterval = 30 * k_nMillion;
+const int k_nLocksRunInterval = 120 * k_nMillion;
+
+// Time to keep an unused lock before removing it
+const uint64 k_cMicroSecLockLifetime = (uint64)k_nSecondsPerHour * (uint64)k_nMillion;
+
+//-----------------------------------------------------------------------------
+// Server types
+//-----------------------------------------------------------------------------
+// EServerType
+// Specifies the type of a specific server
+// MUST BE KEPT IN SYNC with g_rgchServerTypeName !!!
+enum EServerType
+{
+ k_EServerTypeInvalid = -1,
+
+ k_EServerTypeShell = 0,
+ k_EServerTypeGC = 1,
+ k_EServerTypeGCClient = 2,
+
+ // Must be last!!!
+ k_EServerTypeMax = 2,
+};
+const EServerType k_EServerTypeFirst = k_EServerTypeShell;
+
+
+//-----------------------------------------------------------------------------
+// Alert constants
+//-----------------------------------------------------------------------------
+enum EAlertType
+{
+ k_EAlertTypeAssert,
+ k_EAlertTypeInfo,
+ k_EAlertTypeReport,
+};
+
+//-----------------------------------------------------------------------------
+// Spew / EmitEvent constants
+//-----------------------------------------------------------------------------
+
+#define SPEW_ALWAYS 1
+#define SPEW_NEVER 5
+
+#define LOG_ALWAYS 1
+#define LOG_NEVER 5
+
+
+//-----------------------------------------------------------------------------
+// string constants
+//-----------------------------------------------------------------------------
+
+const char k_rgchUnknown[] = "Unknown";
+
+#ifdef GC
+//-----------------------------------------------------------------------------
+// SQL constants
+//-----------------------------------------------------------------------------
+
+const int k_cSQLObjectNameMax = 128; // max length of a SQL identifier (column name, index name, table name ... )
+const int k_cchSQLStatementTextMax = 8192; // nominal max length of a SQL statement
+const uint32 k_cubRecordMax = 4 * k_nMillion; // Max size of a single record
+const uint32 k_cubVarFieldMax = 1 * k_nMillion; // Max size of a variable-length field
+const int k_cMaxCol = 50;
+const uint32 k_cMaxBindParams = 500; // the largest number of bind parameters allowed in a single query
+const uint32 k_cMaxFreeBindParamBuffers = 2000; // How many bind param buffers should we leave free before we start deleting some
+const uint32 k_cMaxFreeBindWebAPIBuffers = 32; // How many WebAPI buffers should we leave free before we start deleting some
+
+// iTable constants
+const int k_iTableNil = -1; // No table at all
+const int k_iFieldNil = -1; // No field at all
+
+
+enum EForeignKeyAction
+{
+ k_EForeignKeyActionNoAction = 0,
+ k_EForeignKeyActionCascade = 1,
+ k_EForeignKeyActionSetNULL = 2,
+};
+const char *PchNameFromEForeignKeyAction( EForeignKeyAction eForeignKeyAction );
+EForeignKeyAction EForeignKeyActionFromName( const char *pchName );
+
+const char *PchNameFromEGCSQLType( EGCSQLType eForeignKeyAction );
+
+#ifndef SQLRETURN
+typedef short SQLRETURN;
+#endif // SQLRETURN
+#endif // GC
+
+
+//-----------------------------------------------------------------------------
+// WebAPI constants
+//-----------------------------------------------------------------------------
+
+const uint32 k_cubWebAPIKey = 16; // size of the web api key
+const uint32 k_cchWebAPIKeyStringMax = (k_cubWebAPIKey * 2) + 1; // size of string representing web API key (hex encoded so twice the size + NUL)
+typedef unsigned char WebAPIKey_t[ k_cubWebAPIKey ];
+
+// used to revoke WebAPI keys. Stored in the database... do not reorder.
+enum EWebAPIKeyStatus
+{
+ k_EWebAPIKeyValid = 0,
+ k_EWebAPIKeyRevoked = 1,
+
+ k_EWebAPIKeyInvalid = 255,
+};
+
+
+//-----------------------------------------------------------------------------
+// Game Server constants
+//-----------------------------------------------------------------------------
+
+const uint32 k_cubGameServerToken = 16; // size of the game server identity token key
+const uint32 k_cchGameServerTokenStringMax = (k_cubGameServerToken * 2) + 1; // size of string representing game server identity token (hex encoded so twice the size + NUL)
+typedef unsigned char GameServerIdentityToken_t[ k_cubGameServerToken ];
+
+
+
+//-----------------------------------------------------------------------------
+// Other constants
+//-----------------------------------------------------------------------------
+
+const int k_cSmallBuff = 255; // smallish buffer
+const int k_cMedBuff = 1024; // medium buffer
+
+const int k_cubMsgSizeSmall = 512; // small sized packet
+
+const int k_cInitialNetworkBuffers = 10; // # of network buffers to see the system with
+
+const int k_cubMaxExpectedMsgDataSize = 5 * k_nMegabyte;// the maximum application data that we EXPECT to be sent in a single message
+
+#define STRINGIFY(x) #x
+#define TOSTRING(x) STRINGIFY(x)
+#define FILE_AND_LINE __FILE__ ":" TOSTRING(__LINE__)
+
+// Default capacity for session hash tables
+const int k_cGCUserSessionInit = 10 * k_nThousand; // Can grow indefinitely by this increment
+const int k_cBucketGCUserSession = 100 * k_nThousand; // Fixed size
+const int k_cGCGSSessionInit = 1 * k_nThousand; // Can grow indefinitely by this increment
+const int k_cBucketGCGSSession = 10 * k_nThousand; // Fixed size
+const int k_cAccountDetailsInit = 10 * k_nThousand; // Can grow indefinitely by this increment
+const int k_cBucketAccountDetails = 100 * k_nThousand; // Fixed size
+const int k_cGCLocksInit = 50 * k_nThousand; // Can grow indefinitely by this increment
+const int k_cBucketGCLocks = 500 * k_nThousand; // Fixed size
+
+const char *PchNameFromEUniverse( EUniverse eUniverse );
+EUniverse EUniverseFromName( const char *pchName );
+
+} // namespace GCSDK
+
+#endif // GCCONSTANTS_H