package net.java.slee.resource.diameter.cca;
import net.java.slee.resource.diameter.base.CreateActivityException;
import net.java.slee.resource.diameter.base.events.avp.DiameterIdentity;
/**
*
* Provider to create Credit-Control sessions and obtain Messages/AVP Factories.
*
* <br>Super project: mobicents
* <br>10:58:30 AM Dec 30, 2008
* <br>
* @author <a href="mailto:baranowb@gmail.com"> Bartosz Baranowski </a>
* @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
*/
public interface CreditControlProvider {
/**
* Create a new client session to send and receive Diameter messages.
* All messages sent on an activity created by this method must contain valid
* routing AVPs (one or both of Destination-Realm and Destination-Host as
* defined by RFC3588).
*
* @return a instance of a CreditControlClientSession to send credit control messages
*/
public CreditControlClientSession createClientSession()throws CreateActivityException;
/**
* Create a new client session to send and receive Diameter messages.
* Messages sent on an activity created by this method will automatically
* have the Destination-Host and Destination-Realm AVPs set to the provided
* values.
*
* @param destinationHost a destination host to automatically put in all messages, may be null if not needed
* @param destinationRealm a destination realm to automatically put in all messages
* @return a instance of a CreditControlClientSession to send credit control messages
* @throws CreateActivityException
*/
public CreditControlClientSession createClientSession(
DiameterIdentity destinationHost,
DiameterIdentity destinationRealm) throws CreateActivityException;
/**
* Return a message factory to be used to create credit control messages
*
* @return a CreditControlMessageFactory implementation
*/
public CreditControlMessageFactory getCreditControlMessageFactory();
/**
* Return a AVP factory to be used to create credit control AVPs
*
* @return a CreditControlAVPFactory implementation
*/
public CreditControlAVPFactory getCreditControlAVPFactory();
/**
* Return the number of peers this Diameter resource adaptor is connected
* to.
*
* @return connected peer count
*/
int getPeerCount();
/**
* Returns array containing identities of connected peers FIXME: baranowb; -
* should it be InetAddres, Port pair?
*
* @return
*/
DiameterIdentity[] getConnectedPeers();
}