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]); } }
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); }