Function TEST_REVCAPI(inContextFlag)
/*
**  Purpose:  Test calling revCapi
**    
**  Usage:
**  run TEST_REVCAPI 'SUB' to test callsubroutine
*  rjc  12-07-10  Created
*/


$Insert revcapi_equates
$Insert Msg_Equates

If Assigned(method) Else method = ''

* Connect to an oinsight
* make a unique name
declare Function getCurrentPRocessId
processid = getcurrentprocessID()
serverSpec = "\\.\O":date()+time()
debug
databasename = 'LSL2'
username = 'LSL2'
password = 'LSL22022'
queueName = ''
flags = 65
shutdownSessions = 1

engine = 0
queue = 0
error = 0
returnvalue = ''
statustext = ''
Error = CreateEngine(Engine, ServerSpec, DatabaseName,  Flags, ShutdownSessions)
If Not(error) then
	Error = CreateQueue(Queue, Engine, QueueName, DatabaseName, UserName, Password)
End

oiFuncName = 'TEST_REVCAPI_SUB'
oiParam = databasename : ' ' : timedate()
method = 'Func'
Begin Case
	Case error
		
	Case indexc(method, 'Func', 1)
		Call WinYield()
		Error = CallFunction(Queue, returnvalue, oiFuncName, oiParam)
		Call WinYield()
	Case indexc(method, 'Sub', 1)
		Call WinYield()
		Error = CallSubroutine(Queue, oiFuncName, oiParam)
		Call WinYield()
	Case 1
		script = "RUN " : oiFuncName : " '" : oiParam : "'";
		statusText = "";
		request = 0;
		Status = ''
		statusText = ''
		returnvalue = ''
		this_reply = ''
		
		Error = CreateRequest(request, Queue, Script, '')
		if ( request ne 0 )  then
			loop
				Error = PollForReply(Request, Status)
				begin case
					case Status eq UNPROCESSED$      // Server has not begun request.
						null
					case Status eq PROCESSING$       // Server is processing request.
						null
					case Status eq DATA_AVAILABLE$   // Server has data available.
						Error = GetReply(Request, this_reply)
						returnvalue := this_Reply
						
					case Status eq COMPLETED$        // Server has completed request, status information is available.						
						Error = GetStatusText(Request, @vm, StatusText)					
						
					case Status eq PROC_ERROR$       // Server process failed, status information is available.
						// Get the status data
						// Get the status data
						
						Error = GetStatusText(Request, @vm, StatusText)
						
						
						
					case Status eq INFO_AVAILABLE$   // Server has intermediate status information available.
						this_Text = ''
						Error = GetStatusText(Request, @vm, this_Text)
						Call send_dyn(this_text)
						
					case Status eq INFO_REQUEST$   // Server is requesting info
						this_Text = ''
						Error = GetStatusText(Request, @vm, this_Text)
						def = ''
						def<mType$> = 'RC'
						def<mCaption$> = 'Info Needed'
						def<mText$> = this_text
						ans = Msg(@window, def)
						
				end case
			while ( (Status ne COMPLETED$) and ( Status ne PROC_ERROR$) )
			repeat
			CloseRequest(Request)
		end		
End case

// Clean Up
if queue then   x = CloseQueue(Queue)
if engine then  x = CloseEngine(Engine)

Call Send_Dyn(' Response = ' : Quote(returnvalue))
Call Send_Dyn(' Status = ' : Quote(statustext))
Call Send_Dyn(' error = ' : Quote(error))

Return ''

