ViewPoint Manual

Sample Custom Status Server
ViewPoint Manual426801-001
D-12
Custom Server Code
--
-- Check^Item implements the checking of a defined items. The defined item
-- index is determined by a search of the list of items. The actual checking
-- is then performed by a procedure Check^Valid^........
--
-------------------------------------------------------------------------------
INT Index; ! Index of item in item^array.
Return^Error := 0;
IF Request^Len < Len^Bsz ( Zvpt^Check^Item^Request^Def ) THEN
RETURN ( Zerr^Stat^Collect^Request );
IF NOT Find^Item^Type ( Request.Z^Status^Item.Z^Item^Name, Index ) THEN
RETURN ( Zerr^Stat^No^Such^Type );
Reply.Z^Status^Item ':=' Request.Z^Status^Item FOR 1 ELEMENTS;
CASE Index OF
BEGIN
1 -> Return^Error := Check^Valid^Process^Name ( Request, Reply );
2 -> Return^Error := Check^Valid^Process^Name ( Request, Reply );
3 -> Return^Error := Check^Valid^File^Name ( Request, Reply );
4 -> Return^Error := Check^Valid^Disk^Name ( Request, Reply );
5 -> Return^Error := Check^Valid^Disk^Name ( Request, Reply );
6 -> Return^Error := Check^Valid^Disk^Name ( Request, Reply );
OTHERWISE -> RETURN ( Zerr^Stat^No^Such^Type );
END; ! case on item index
IF ( Return^Error = 0 ) THEN
BEGIN
Reply^Len := Len^Bsz ( Zvpt^Check^Item^Reply^Def );
RETURN ( Return^Error );
END
ELSE RETURN ( Return^Error );
END; ! Check^Item.
?PAGE "SAMPLE ITEM"
INT PROC Sample^Item ( Request, Request^Len, Reply, Reply^Len );
INT .EXT Request ( Zvpt^Sample^Item^Request^Def ); ! Input
INT .EXT Request^Len; ! Length of data in 'Request
INT .EXT Reply ( Zvpt^Sample^Item^Reply^Def ); ! Output
INT .EXT Reply^Len; ! Length of data in 'Reply'
BEGIN
------------------------------------------------------------------------
--
-- Procedure implements the sample of a defined item. The defined item
-- index is determined by a search of the list of items. The actual
-- sample is then performed by a procedures Sample^.....
--
------------------------------------------------------------------------
INT Index; ! index of item in item^array.
Return^Error := 0;
IF Request^Len < Len^Bsz ( Zvpt^Sample^Item^Request^Def ) THEN
RETURN ( Zerr^Stat^Collect^Request );
IF NOT Find^item^type ( Request.Z^Item^Name, Index ) THEN
RETURN ( Zerr^Stat^No^Such^Type );
CASE Index OF
BEGIN
1 -> Return^Error := Sample^Process^Busy ( Request, Reply );
2 -> Return^Error := Sample^Process^Count ( Request, Reply );
3 -> Return^Error := Sample^File^Usage ( Request, Reply );
4 -> Return^Error := Sample^Disk^Usage ( Request, Reply );
5 -> Return^Error := Sample^Disk^Largest^Free ( Request, Reply );
6 -> Return^Error := Sample^Disk^Fragmentation ( Request, Reply );
OTHERWISE -> CALL ABEND;
END; ! case on item index
IF ( Return^Error = 0 ) THEN
BEGIN
Reply^Len := Len^Bsz ( Zvpt^Sample^Item^Reply^Def );
RETURN ( Return^Error );
END
ELSE RETURN ( Return^Error );
END; ! Sample^Item.
?PAGE "SERVER PERFORM REQUEST"
PROC Server^Perform^Request( Request^Buffer, Request^Len,
Reply^Buffer, Reply^Len );
INT .EXT Request^Buffer; ! IN The request to process.
INT .EXT Request^Len; ! IN Length of data in 'RequestBuffer'.
INT .EXT Reply^Buffer; ! OUT Reply message to the request.
INT .EXT Reply^Len; ! OUT Length of data in 'ReplyBuffer'.