[ Back ]
type Action_Type is enum Add_Node, Delete_Node, Document_Request,
	Request_Advice, New_Inquiry_Diagram, List_Inquiry_Diagram, 
	Open_Inquiry_Diagram, Add_Edge, Update_Node, Move_Node,
	Delete_Edge, Exit_Diagram, Reference_This end;


type processorratetype is integer;
PRate : processorratetype is 20;


type Res_Mang_Iface is interface
provides
   function Latency(A : Action_Type; I : Integer) return integer;
behavior
   workload : var integer := 0;
   ic : var integer := 0;   -- internal clock
   ad : var integer := 0;   -- approximate delay
   temp : var integer := 0;
   action_value : var integer := 0;
function Latency(A : Action_Type; I : Integer) return integer is
   begin
      case A of
         Add_Node => action_value := 30; else
         Add_Edge => action_value := 80; else
         List_Inquiry_Diagram => action_value := 40; else
	 Open_Inquiry_Diagram => action_value := 50; else
	 Update_Node => action_value := 20;
         default => action_value := 1000;
         end case;
      if not($ic = I) then 
         workload := $workload - (PRate * (I - $ic));
         if ($workload < 0) then 
	    workload := 0;
	    end if;
         ic := I;
         end if;
      workload := $workload + $action_value;
      ad := $workload/ PRate;
      temp := $workload mod PRate;
      if ($temp = 0) then
	 return($ad);
	 end if;
      return($ad + 1);
   end;
end;



[ Back ]

© 1996 TRW Inc. All rights reserved.