forked from PlayFab/MpsAgent
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNoOpSessionHostManager.cs
185 lines (149 loc) · 5.16 KB
/
NoOpSessionHostManager.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
namespace Microsoft.Azure.Gaming.LocalMultiplayerAgent
{
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using AgentInterfaces;
using VmAgent.Core.Interfaces;
using VmAgent.Model;
public class NoOpSessionHostManager : ISessionHostManager
{
private ConcurrentDictionary<string, SessionHostInfo> SessionHostsMap = new ConcurrentDictionary<string, SessionHostInfo>();
public bool LinuxContainersOnWindows
{
get
{
return Globals.GameServerEnvironment == GameServerEnvironment.Linux &&
RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
}
}
public int StateChangeSequenceNumber { get; }
public VmAgentSettings VmAgentSettings { get; } = new VmAgentSettings()
{
MaxLogUploadTimeInSeconds = 300,
};
public void Assign(SessionHostsStartInfo request)
{
}
public bool TrySetGoalStateInfo(string sessionHostId, SessionHostGoalStateInfo goalStateInfo)
{
return false;
}
public (bool sessionHostExists, SessionHostHeartbeatInfo response) TryProcessHeartbeat(string sessionHostId, SessionHostHeartbeatInfo heartbeatRequest)
{
return (false, heartbeatRequest);
}
public void UpdateStateForAssignment(VmState vmState, ResourceRetrievalResult? assetRetrievalResult = null,
ResourceRetrievalResult? imageRetrievalResult = null, bool forceSave = false)
{
}
public SessionHostInfo AddNewSessionHost(string sessionHostId, string assignmentId, int instanceNumber, string logFolderId,
SessionHostType type = SessionHostType.Container)
{
var sessionHostInfo = new SessionHostInfo(sessionHostId, assignmentId, instanceNumber, logFolderId, type)
{
SessionHostHeartbeatRequest = new SessionHostHeartbeatInfo()
{
AssignmentId = assignmentId,
CurrentGameState = SessionHostStatus.PendingHeartbeat,
LastStateTransitionTimeUtc = DateTime.UtcNow
}
};
SessionHostsMap.TryAdd(sessionHostId, sessionHostInfo);
return sessionHostInfo;
}
public void UpdateSessionHostTypeSpecificId(string sessionHostId, string typeSpecificId)
{
SessionHostsMap.TryGetValue(sessionHostId, out SessionHostInfo sessionHostInfo);
sessionHostInfo.TypeSpecificId = typeSpecificId;
}
public void RemoveSessionHost(string sessionHostId)
{
}
public AssignmentData GetAssignmentData()
{
return null;
}
public void ClearSecrets()
{
}
public GameResourceDetails GetGameResourceDetails()
{
return new GameResourceDetails();
}
public VmState SetPendingUnassignment(string assignmentId)
{
return VmState.Unassigned;
}
public bool IsPendingUnassignment()
{
return false;
}
public void CompleteUnassignment()
{
}
public SessionHost AllocateSessionHost(string assignmentId, SessionConfig sessionConfig)
{
return new SessionHost();
}
public List<SessionHost> ListAllocatedSessions()
{
return new List<SessionHost>() { new SessionHost() };
}
public IEnumerable<KeyValuePair<string, SessionHostInfo>> GetExpiredTerminatedSessions()
{
return Enumerable.Empty<KeyValuePair<string, SessionHostInfo>>();
}
public IEnumerable<KeyValuePair<string, SessionHostInfo>> GetSessionHosts()
{
return Enumerable.Empty<KeyValuePair<string, SessionHostInfo>>();
}
public void EvaluateSessionHostStateDuration()
{
}
public VmState GetVmState()
{
return VmState.Assigned;
}
public bool IsAssigned()
{
return true;
}
public void SetStartupScriptExecutionComplete()
{
}
public bool IsStartupScriptExecutionComplete()
{
return true;
}
public bool IsUnassignable()
{
return true;
}
public void SetCrashDumpState(string sessionHostId, CrashDumpState crashDumpState)
{
}
public void SetProfilingOutputFlag(string sessionHostId)
{
}
public string GetLogFolderForSessionHostId(string sessionHostId)
{
return "";
}
public string GetTypeSpecificIdForSessionHost(string sessionHostId)
{
return "";
}
public void MarkForMaintenance(MaintenanceSchedule schedule)
{
}
public bool IsMarkedForMaintenance()
{
return false;
}
}
}