public StepProbeResultModel HandleStepProbe(StepProbeDto buildActionDto) { BuildSessionManager buildSession = GetBuildSessionByMac(buildActionDto.Mac); if (buildSession == null) { throw new NotFoundException("build session"); } StepProbeResultModel result = buildSession.HandleConnectionProbe(buildActionDto); if (result.Status == ProbeStatus.FINISHED) { lock (buildSession) { bool buildSessionAlive = BuildSessions.ContainsKey(buildSession.BuildSession.BuildSessionToken); if (!buildSessionAlive) { return(result); } RemoveSessionByUserId(buildSession.UserId); ConcretePartRepo.MarkInUse(buildSession.UsedPartIds); } } return(result); }
public IEnumerable <StepProbeResultModel> GetStepProbeResults(BuildSessionDto buildSession) { CheckBuildSession(buildSession); BuildSessionManager sessionInfo = BuildSessions[buildSession.BuildSessionToken]; return(sessionInfo.StepProbesResults.ToList()); }
private void CheckBuildSession(BuildSessionDto buildSession) { SessionService.CheckSession(buildSession.Session); if (!BuildSessions.ContainsKey(buildSession.BuildSessionToken)) { throw new NotFoundException("build session"); } BuildSessionManager sessionInfo = BuildSessions[buildSession.BuildSessionToken]; if (buildSession.Session.UserId.Value != sessionInfo.UserId) { throw new NotFoundException("build session"); } }
public IndicatorMapModel HandlePing(ControllerPingDto pingDto) { BuildSessionManager buildSession = GetBuildSessionByMac(pingDto.Mac); if (buildSession == null) { throw new NotFoundException("build session"); } if (!buildSession.IndicatorMaps.ContainsKey(pingDto.Mac)) { return(new IndicatorMapModel()); } //throw new NotFoundException("indicator map"); return(buildSession.IndicatorMaps[pingDto.Mac]); }
public BuildSessionModel InitBuildSession(StartBuildDto startBuildDto) { SessionService.CheckSession(startBuildDto.Session); FurnitureItemModel furniture = FurnitureRepo.Get(startBuildDto.FurnitureId.Value); if (furniture == null) { throw new NotFoundException("furniture"); } bool canBuild = FurnitureService.CanBuild(startBuildDto.Session, startBuildDto.FurnitureId.Value); if (!canBuild) { throw new NotFoundException("all owned parts"); } int userId = startBuildDto.Session.UserId.Value; if (UserBuildTokens.ContainsKey(userId)) { RemoveSessionByUserId(userId); } //throw new ConflictException("build sessions"); string token = HashingService.GetHash(Guid.NewGuid().ToString()); IEnumerable <ConcretePartModel> possiblePartsToUse = ConcretePartRepo .GetOwnedByUser(userId) .Where(part => !part.IsForSell && !part.IsInUse) .ToList(); BuildSessionManager buildSessionInfo = new BuildSessionManager( userId, possiblePartsToUse, furniture, new BuildSessionModel(token, furniture.Id) ); UserBuildTokens.Add(userId, token); BuildSessions.Add(token, buildSessionInfo); return(buildSessionInfo.BuildSession); }