Esempio n. 1
0
        /// <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());
                }
            }
        }
Esempio n. 2
0
        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);
        }