/// <summary> /// Removes the user from all operations in the event of a crash or /// connection loss. /// </summary> private void UnsubAllOperations() { logger.Error($"{GetLogIdentifier()} lost connection. Removing them" + $" from {subscribedOps.Count} operations."); foreach (string uuid in subscribedOps) { ActiveOperation op = GetOperation(uuid); if (op != null) { op.UnsubscribeUser(GetTokenCookie()); } } }
ProcessRequestMessage(ANWI.Messaging.IMessagePayload p) { ANWI.Messaging.Request req = p as ANWI.Messaging.Request; switch (req.type) { case ANWI.Messaging.Request.Type.GetOperations: { List <LiteOperation> ops = OperationManager.Instance.GetOpsList( GetUser().profile.id ); return(new ANWI.Messaging.FullOperationsList(ops)); } case ANWI.Messaging.Request.Type.GetOperation: { ANWI.Messaging.ReqExp.IdString det = req.detail as ANWI.Messaging.ReqExp.IdString; ActiveOperation op = GetOperation(det.str); if (op != null) { subscribedOps.Add(det.str); op.SubscribeUser(GetUser()); return(new ANWI.Messaging.Ops.FullOperationSnapshot( op.ToSnapshot())); } else { return(null); } } case ANWI.Messaging.Request.Type.CloseOperation: { ANWI.Messaging.ReqExp.IdString det = req.detail as ANWI.Messaging.ReqExp.IdString; subscribedOps.Remove(det.str); ActiveOperation op = GetOperation(det.str); if (op != null) { op.UnsubscribeUser(GetTokenCookie()); } return(null); } case ANWI.Messaging.Request.Type.AdvanceOpLifecycle: { ANWI.Messaging.ReqExp.IdString det = req.detail as ANWI.Messaging.ReqExp.IdString; ActiveOperation op = GetOperation(det.str); if (op != null) { op.AdvanceLifecycle(); } return(null); } case ANWI.Messaging.Request.Type.JoinOperation: { ANWI.Messaging.ReqExp.IdString det = req.detail as ANWI.Messaging.ReqExp.IdString; ActiveOperation op = GetOperation(det.str); if (op != null) { op.JoinUser(GetTokenCookie()); } return(null); } case ANWI.Messaging.Request.Type.LeaveOperation: { ANWI.Messaging.ReqExp.IdString det = req.detail as ANWI.Messaging.ReqExp.IdString; ActiveOperation op = GetOperation(det.str); if (op != null) { op.RemoveUser(det.id); } return(null); } } return(null); }