public Guid SetActiveVirtualMachineForUser(Guid userId, Guid vmId, string connectionId, IEnumerable <Guid> teamIds) { var activeVm = new ActiveVirtualMachine(vmId, connectionId, teamIds); return(_activeVirtualMachines.AddOrUpdate(userId, activeVm, (userId, v) => { return activeVm; }).VmId); }
public ActiveVirtualMachine UnsetActiveVirtualMachineForUser(Guid userId, string connectionId) { // Only remove if connectionId matches previous // This avoids unsetting when a background tab gets closed/disconnected if (_activeVirtualMachines.TryGetValue(userId, out ActiveVirtualMachine currentVm)) { var activeVm = new ActiveVirtualMachine(currentVm.VmId, connectionId, currentVm.TeamIds); var entry = new KeyValuePair <Guid, ActiveVirtualMachine>(userId, activeVm); var collection = (ICollection <KeyValuePair <Guid, ActiveVirtualMachine> >)_activeVirtualMachines; if (collection.Remove(entry)) { return(activeVm); } } return(null); }