flowsim.core
Interface LinkManager

All Known Implementing Classes:
LinkManagerImpl

public abstract interface LinkManager

Admission Control/Queuing for a Link. A LinkManager decides which flows are blocked and which are accepted. It does also modify the bandwidth of the flows on the link. LinkManagers are used to model network interfaces on a node.

See Also:
Link, Node

Method Summary
 long add(Flow flow)
          Add new flow.
 void attach_monitor(LinkManagerMonitor lmm)
          Attach a LinkManagerMonitor, which will then be notified when a flow is added, removed or when it's bandwidth was changed.
 void bw_changed(Flow flow)
          Called when the bandwidth of a flow is changed (usually when it is made smaller by other linkmanagers.
 void detach_monitor(LinkManagerMonitor lmm)
          Detach a LinkManagerMonitor.
 com.sun.java.util.collections.Iterator flows()
          Get the flows managed by this LinkManager.
 Link get_link()
          Get managed link.
 Node get_peer()
          Get node on the other side of the link.
 int get_rbw_notbe()
          Get residual bandwith without counting best-effort.
 int get_reservable_bw()
          Get reservable bandwidth (bandwidth useable by non-be flows).
 void remove(Flow flow)
          Remove flow.
 

Method Detail

flows

public com.sun.java.util.collections.Iterator flows()
Get the flows managed by this LinkManager.

get_peer

public Node get_peer()
Get node on the other side of the link.
Returns:
peer node.

get_link

public Link get_link()
Get managed link.

get_rbw_notbe

public int get_rbw_notbe()
Get residual bandwith without counting best-effort.
Returns:
residual bandwith in bits/second.

get_reservable_bw

public int get_reservable_bw()
Get reservable bandwidth (bandwidth useable by non-be flows).

add

public long add(Flow flow)
Add new flow.
Returns:
delay in micro-seconds.

bw_changed

public void bw_changed(Flow flow)
Called when the bandwidth of a flow is changed (usually when it is made smaller by other linkmanagers.

remove

public void remove(Flow flow)
Remove flow.

attach_monitor

public void attach_monitor(LinkManagerMonitor lmm)
Attach a LinkManagerMonitor, which will then be notified when a flow is added, removed or when it's bandwidth was changed. Note that it should be possible to attach multiple monitors.

detach_monitor

public void detach_monitor(LinkManagerMonitor lmm)
Detach a LinkManagerMonitor.