package net.java.slee.resource.diameter.ro;
import java.io.IOException;
import net.java.slee.resource.diameter.cca.CreditControlClientSession;
import net.java.slee.resource.diameter.cca.events.CreditControlRequest;
/**
*
* An RoClientSessionActivity represents a charging control session for Credit Control clients.
*
* All requests for the session must be sent via the same RoClientSessionActivity.
*
* All responses related to the session will be received as events fired on the same RoClientSessionActivity.
*
* @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
* @author <a href="mailto:baranowb@gmail.com"> Bartosz Baranowski </a>
*/
public interface RoClientSession extends RoSession, CreditControlClientSession {
/**
* Send an event Credit-Control-Request.
*
* @param ccr the CreditControlRequest to send
* @throws IOException if an error occured sending the request to the peer
*/
public void sendEventCreditControlRequest(CreditControlRequest ccr) throws IOException;
/**
* Send an initial Credit-Control-Request.
*
* @param ccr the CreditControlRequest to send
* @throws IOException if an error occured sending the request to the peer
*/
public void sendInitialCreditControlRequest(CreditControlRequest ccr) throws IOException;
/**
* Send an update (intermediate) Credit-Control-Request.
*
* @param ccr the CreditControlRequest to send
* @throws IOException if an error occured sending the request to the peer
*/
public void sendUpdateCreditControlRequest(CreditControlRequest ccr) throws IOException;
/**
* Send a termination Credit-Control-Request.
*
* @param ccr the CreditControlRequest to send
* @throws IOException if an error occured sending the request to the peer
*/
public void sendTerminationCreditControlRequest(CreditControlRequest ccr) throws IOException;
}