Figure 5: IDL for Load Balancing module interface IProxy

interface IProxy { };

typedef sequence<IAgent> LBAgentList;

interface IAgent
{
    enum ExceptionReason { SERVER_NOT_FOUND, 
                    MIXED_INTERFACE_TYPES,
                    MASTER_REGISTER_FAILED,
                    PROXY_REGISTER_FAILED,
                    MASTER_UNAVAILABLE,
                    UNKNOWN };
 
    exception LoadBalancingException 
    {
        ExceptionReason    reason;
    };

    void registerAgent(in IAgent agent);

    void unregisterAgent(in IAgent agent);

    void registerObject(in Object obj, in IAgent agent)
            raises (LoadBalancingException);

    void unregisterObject(in Object obj, in IAgent agent)
            raises (LoadBalancingException);

    oneway void updateLoadFactor(in double load, in IAgent agent);

    oneway void setAgentList(in LBAgentList agentList);
};