SeeView Manual

SeeView Language Elements
HP NonStop SeeView Manual526355-004
5-38
ServerMode
When the SeeView program executes the script shown in Example 5-17, ?SECTION
ReadReceive declares a request taskid socket named Requestor. The section then
repeatedly reads the Requestor $receive socket. Each time a message is received, the
READ requestor PEEROK statement completes. If SERVERMODE=3, the request
appears as shown in Example 5-18.
Each time a WRITEREAD message is received, the ?PROC HandleRequest is called
to process the request contained in string variable #request. The taskid of the
requestor is also passed to the ?PROC HandleRequest with the intrinsic
#TASKIDLASTREAD. This intrinsic determines the taskid number of the last message
received since the PEEROK option was used.
Example 5-17. Example of a SeeView ServerMode Script
?PROC HandleRequest ( #request, ReqTaskid )
{-----------------------------------------}
{ Use <ci> and <cmd> contained in #request to perform operation.
{ Return result to ReqTaskid in a single large blocked reply msg.
{---------------------------------------------------------------}
PARM #Request, { Request = <ciname> <command>
ReqTaskid; { <taskid> sending request
VAR #ciname:= #TAKE #request,{ <ciname>
#cmd := #DROP #request,{ <command>
citaskid; { <ci taskid number>
EXECUTE "TASK " & #ciname; { Start ci.
EXECUTE "WITH " & #ciname; { Get with ci.
citaskid := #TASKID; { Get ci taskid.
DELETE citaskid!; { Clear ci cache.
WRITE citaskid, #cmd; { Send command to ci.
WHILE NOT #TASKPROMPTING DO { Wait for ci prompt.
READ citaskid;
WRITE ReqTaskid,#cmd { Reply to Requestor with
FROM citaskid;{ cmd and entire ci response
?SECTION ReadReceive
{-------------------}
VAR secs:=300, { $Receive timeout in seconds
#request, { Request from $receive
error; { Error= 0 write, 1 writeread, 40 timeout
{ Declare requestor $receive socket
TASK requestor:= $xxxx TIMEOUT secs,secs;
DO BEGIN
READ requestor PEEROK, #request, error;
MSG #TIME &" $SEEV Received: "& #request;
IF error=1 THEN CALL HandleRequest(#request, #TASKIDLASTREAD);
IF error=40 THEN SHUTDOWN;
END UNTIL #TAKE #request = "STOP";