ViewPoint Manual
Sample Custom Status Server
ViewPoint Manual—426801-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'.










