package net.java.slee.resource.diameter.cxdx;
import java.io.IOException;
import net.java.slee.resource.diameter.cxdx.events.LocationInfoAnswer;
import net.java.slee.resource.diameter.cxdx.events.MultimediaAuthenticationAnswer;
import net.java.slee.resource.diameter.cxdx.events.PushProfileRequest;
import net.java.slee.resource.diameter.cxdx.events.RegistrationTerminationAnswer;
import net.java.slee.resource.diameter.cxdx.events.RegistrationTerminationRequest;
import net.java.slee.resource.diameter.cxdx.events.ServerAssignmentAnswer;
import net.java.slee.resource.diameter.cxdx.events.UserAuthorizationAnswer;
/**
*
* Represents a CxDxClientSession session for Cx/Dx servers.
*
* @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
* @author <a href="mailto:baranowb@gmail.com"> Bartosz Baranowski </a>
*/
public interface CxDxServerSession extends CxDxSession {
/**
* Create a User-Authorization-Answer message pre-populated with the AVPs appropriate for this session.
*
* @return a new UserAuthorizationAnswer
*/
UserAuthorizationAnswer createUserAuthorizationAnswer();
/**
* Send an event User-Authorization-Answer in response to a User-Authorization-Request received on this activity.
*
* @param userAuthorizationAnswer the User-Authorization-Answer message to send
* @throws IOException
*/
void sendUserAuthorizationAnswer(UserAuthorizationAnswer userAuthorizationAnswer) throws IOException;
/**
* Create a ServerAssignmentAnswer message pre-populated with the AVPs appropriate for this session.
*
* @return a new ServerAssignmentAnswer
*/
ServerAssignmentAnswer createServerAssignmentAnswer();
/**
* Send an event Registration-Termination-Answer in response to a Registration-Termination-Request received on this activity.
*
* @param serverAssignmentAnswer the Registration-Termination-Answer message to send
* @throws IOException
*/
void sendServerAssignmentAnswer(ServerAssignmentAnswer serverAssignmentAnswer) throws IOException;
/**
* Create a LocationInfoAnswer message pre-populated with the AVPs appropriate for this session.
*
* @return a new LocationInfoAnswer
*/
LocationInfoAnswer createLocationInfoAnswer();
/**
* Send an event Location-Info-Answer in response to a Location-Info-Request received on this activity.
*
* @param locationInfoAnswer the Location-Info-Answer message to send
* @throws IOException
*/
void sendLocationInfoAnswer(LocationInfoAnswer locationInfoAnswer) throws IOException;
/**
* Create a MultimediaAuthenticationAnswer message pre-populated with the AVPs appropriate for this session.
*
* @return a new MultimediaAuthenticationAnswer
*/
MultimediaAuthenticationAnswer createMultimediaAuthenticationAnswer();
/**
* Send an event Multimedia-Authentication-Answer in response to a Multimedia-Authentication-Request received on this activity.
*
* @param multimediaAuthenticationAnswer the Multimedia-Authentication-Answer message to send
* @throws IOException
*/
void sendMultimediaAuthenticationAnswer(MultimediaAuthenticationAnswer multimediaAuthenticationAnswer) throws IOException;
/**
* Create a RegistrationTerminationAnswer message pre-populated with the AVPs appropriate for this session.
*
* @return a new RegistrationTerminationAnswer
*/
RegistrationTerminationRequest createRegistrationTerminationRequest();
/**
* Send an event Registration-Termination-Answer in response to a Registration-Termination-Request received on this activity.
*
* @param registrationTerminationAnswer the Registration-Termination-Answer message to send
* @throws IOException
*/
void sendRegistrationTerminationRequest(RegistrationTerminationRequest registrationTerminationRequest) throws IOException;
/**
* Create a Push-Profile-Request pre-populated with the AVPs appropriate for this session.
*
* @return a new PushProfileRequest
*/
PushProfileRequest createPushProfileRequest();
/**
* Send an event Push-Profile-Request. An event containing the answer will be fired on this activity.
*
* @param PushProfileRequest the Push-Profile-Request message to send
* @throws IOException
*/
void sendPushProfileRequest(PushProfileRequest pushProfileRequest) throws IOException;
}