/*
* Copyright (c) 2006 jDiameter.
* https://jdiameter.dev.java.net/
*
* License: Lesser General Public License (LGPL)
*
* e-mail: erick.svenson@yahoo.com
*
*/
package org.jdiameter.common.impl.app.acc;
import static org.jdiameter.api.Avp.ACC_RECORD_NUMBER;
import org.jdiameter.api.Avp;
import org.jdiameter.api.AvpDataException;
import org.jdiameter.api.Request;
import org.jdiameter.api.acc.events.AccountRequest;
import org.jdiameter.api.app.AppSession;
import org.jdiameter.common.impl.app.AppRequestEventImpl;
public class AccountRequestImpl extends AppRequestEventImpl implements AccountRequest {
private static final long serialVersionUID = 1L;
public AccountRequestImpl(AppSession session, int accountRecordType, int accReqNumber, String destRealm, String destHost) {
super(session.getSessions().get(0).createRequest(code, session.getSessionAppId(), destRealm, destHost));
try {
getMessage().getAvps().addAvp(Avp.ACC_RECORD_TYPE, accountRecordType);
getMessage().getAvps().addAvp(Avp.ACC_RECORD_NUMBER, accReqNumber);
}
catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
public AccountRequestImpl(Request request) {
super(request);
}
public int getAccountingRecordType() throws AvpDataException {
if ( message.getAvps().getAvp(Avp.ACC_RECORD_TYPE) != null ) {
return message.getAvps().getAvp(Avp.ACC_RECORD_TYPE).getInteger32();
}
else {
throw new AvpDataException("Avp ACC_RECORD_NUMBER not found");
}
}
public long getAccountingRecordNumber() throws AvpDataException {
if ( message.getAvps().getAvp(ACC_RECORD_NUMBER) != null ) {
return message.getAvps().getAvp(ACC_RECORD_NUMBER).getUnsigned32();
}
else {
throw new AvpDataException("Avp ACC_RECORD_NUMBER not found");
}
}
}