Example #1
0
        public static bool OnProcessAnswer(List<object> adminSessionArray, HttpSessionState userSession, IGAnswer answer)
        {
            int nAnswerId = answer.GetId();
            XmlNode xmlNodeRequestGuid = answer.GetAttribute(IGAnswer.IGANSWER_REQGUID);
            IGPEOutput output = null;
            if (adminSessionArray != null)
            {
                foreach (HttpSessionState adminSession in adminSessionArray)
                {
                    //  stack output for admins
                    if ((nAnswerId != IGSMAnswer.IGSMANSWER_GETSTATUS) &&
                        (nAnswerId != (int)IGAnswer.IGANSWER_ID.IGANSWER_WORKSPACE_HEARTHBEAT))
                    {
                        output = (IGPEOutput)adminSession[IGPEMultiplexing.SESSIONMEMBER_OUTPUT];
                        if (output != null)
                            output.Stack(true, answer);
                    }
                }
            }

            // process server answer
            if (nAnswerId >= IGSMAnswer.IGSMANSWER_ERROR)
                stackError(adminSessionArray, answer.ToString());

            if (userSession == null)
                return false;

            // process user answer
            if (nAnswerId != (int)IGAnswer.IGANSWER_ID.IGANSWER_WORKSPACE_DISCONNECTED)
            {
                // update user session
                answer.GetParams(userSession);

                // stack output for current user
                output = (IGPEOutput)userSession[IGPEMultiplexing.SESSIONMEMBER_OUTPUT];
                if (output != null)
                    output.Stack(false, answer);
            }
            return true;
        }