ViewPoint Manual

Sample Custom Status Server
ViewPoint Manual426801-001
D-8
Custom Server Code
--
-------------------------------------------------------------------------------
FIXED Primary^Process^Time := 0F;
FIXED Backup^Process^Time := 0F;
INT .Processname [ 0:Fname^Wsz - 1 ]; ! internal form of name.
INT .Temp^Fname [ 0:Fname^Wsz - 1 ]; ! temp file name.
STRUCT .Item^Name ( Zvpt^Item^Name^Def );
INT Cpu^Pin;
INT .PPD[0:8];
INT Length;
Zerow(Reply);
Return^Error := 0;
Return^Error^Detail := 0;
Item^Name ':=' Request.Z^Item^Name
FOR Len^Wsz ( Item^Name ) WORDS;
CALL PROGRAMFILENAME ( Temp^Fname );
Length := FNAMEEXPAND ( Item^Name.Z^Object^Name, Processname, Temp^Fname );
IF Length < 2 OR Length > 14
THEN RETURN ( Zerr^Stat^No^Such^Object );
Temp^Fname ':=' " " & Temp^Fname FOR 7;
IF Processname[4] <> Temp^Fname FOR 8
THEN RETURN ( Zerr^Stat^No^Such^Object );
PPD ':=' Processname FOR 9 WORDS;
CALL LOOKUPPROCESSNAME (PPD);
IF <> THEN RETURN ( Zerr^Stat^Object^Unavailable );
IF PPD <> 0 THEN Cpu^Pin := PPD[3];
IF ( Primary^Process^Time := Processtime ( Cpu^Pin ) ) < 0F
THEN RETURN ( Zerr^Stat^Object^Unavailable )
ELSE IF PPD[4] <> 0 THEN
BEGIN
Cpu^Pin := PPD[4];
IF ( Backup^Process^Time := Processtime ( Cpu^Pin ) ) < 0F
THEN Backup^Process^Time := 0F;
END;
Reply.Z^Status^Value := Primary^Process^Time + Backup^Process^Time;
Reply.Z^Timestamp := Juliantimestamp;
RETURN ( Z^All^Ok^Code );
END; ! Sample^Process^Busy
?PAGE "SAMPLE^PROCESS^COUNT"
INT PROC Sample^Process^Count ( Request, Reply );
INT .EXT Request ( Zvpt^Sample^Item^Request^Def ); ! Input
INT .EXT Reply ( Zvpt^Sample^Item^Reply^Def ); ! Output
BEGIN
-------------------------------------------------------------------------------
--
-- Check to see if a process exist Usefull May be ...
--
-------------------------------------------------------------------------------
STRUCT .Item^Name ( Zvpt^Item^Name^Def );
INT .Processname [ 0:Fname^Wsz - 1 ]; ! internal form of name.
INT .Temp^Fname [ 0:Fname^Wsz - 1 ]; ! temp file name.
INT Cpu^Pin;
INT .PPD[0:8];
INT Length;
Zerow ( Reply );
Return^Error := 0;
Return^Error^Detail := 0;
Item^Name ':=' Request.Z^Item^Name
FOR Len^Wsz ( Item^Name ) WORDS;
CALL PROGRAMFILENAME ( Temp^Fname );
Length := FNAMEEXPAND ( Item^Name.Z^Object^Name, Processname, Temp^Fname );
IF Length < 2 OR Length > 14
THEN RETURN ( Zerr^Stat^No^Such^Object );
Temp^Fname ':=' " " & Temp^Fname FOR 7;
IF Processname[4] <> Temp^Fname FOR 8
THEN RETURN ( Zerr^Stat^No^Such^Object );
PPD ':=' Processname FOR 9 WORDS;
CALL LOOKUPPROCESSNAME ( PPD );
IF <> THEN RETURN ( Zerr^Stat^Object^Unavailable );
Reply.Z^Maximum^Value := 1F;
Reply.Z^Status^Value := 1F;
Reply.Z^Timestamp := Juliantimestamp;
RETURN ( Z^All^Ok^Code );
END; ! Sample^Process^Count