[
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 ]