Beispiel #1
0
        public void ProcessRequest(HttpContext context)
        {
            var request = context.Request;

            var authorizationHeader = request.Headers["Authorization"];
            var accessMethod        = request.HttpMethod.ToUpper();

            var paramsList = ParseSegments("Service", context);

            var session = new Session();

            var subroutineName = paramsList[0];

            var subroutine = new MvSubroutine(subroutineName, 2, new[] { "", paramsList[1] });

            session.Call(subroutine);
            if (subroutine.ReturnParameters == null)
            {
                context.Response.Write("No Return");
            }
            else
            {
                context.Response.Write(accessMethod + " " + subroutine.ReturnParameters[0]);
            }
        }
Beispiel #2
0
        public bool Call(MvSubroutine subroutine)
        {
            var successful = false;

            if (subroutine == null)
            {
                throw new ArgumentNullException(nameof(subroutine));
            }
            U2Connection con;

            try
            {
                con = this.GetConnection();
            }
            catch (Exception ex)
            {
                throw new SessionException("Unable to Connect to Server", ex);
            }

            var dbSession = con.UniSession;

            dbSession.BlockingStrategy = UniObjectsTokens.UVT_WAIT_LOCKED;
            dbSession.LockStrategy     = UniObjectsTokens.UVT_NO_LOCKS;
            dbSession.ReleaseStrategy  = UniObjectsTokens.UVT_READ_RELEASE;
            dbSession.Timeout          = 600;


            var dbSub = dbSession.CreateUniSubroutine(subroutine.Name, subroutine.NumberOfParameters);

            var paramCnt = 0;

            foreach (var param in subroutine.CallParameters)
            {
                if (paramCnt + 1 > subroutine.CallParameters.Length)
                {
                    break;
                }

                if (paramCnt + 1 > subroutine.NumberOfParameters)
                {
                    break;
                }

                dbSub.SetArg(paramCnt, param);
                paramCnt += 1;
            }

            try
            {
                dbSub.Call();

                subroutine.ReturnParameters = new string[subroutine.NumberOfParameters];
                var pCnt = subroutine.NumberOfParameters - 1;

                for (var i = 0; i <= pCnt; i++)
                {
                    subroutine.ReturnParameters[i] = dbSub.GetArg(i);
                }

                successful = true;
            }
            catch (Exception ex)
            {
                subroutine.LastException = ex;
                successful = false;
            }
            finally
            {
                CloseConnection(con);
            }


            return(successful);
        }