public DiameterAvp[] getAvps() { DiameterAvp[] avps = new DiameterAvp[0]; try { avps = getAvpsInternal(message.getAvps()); } catch (Exception e) { log.error("Failed to obtain/decode AVP/data.", e); } return avps; }
/** * * @param eventLookupFacility * @param message * @return */ public FireableEventType getEventId(EventLookupFacility eventLookupFacility, Message message) { FireableEventType eventID = null; // Error is always the same. if (message.isError()) { //eventID = getEventId(eventLookupFacility, ERROR_ANSWER); //TODO: x? } else { final int commandCode = message.getCommandCode(); final boolean isRequest = message.isRequest(); String eventName = eventNames.get(commandCode); if(eventName != null) { eventID = getEventId(eventLookupFacility, eventName + (isRequest ? "Request" : "Answer")); } } return eventID; }
private Message createShMessage(DiameterHeader diameterHeader, DiameterAvp[] avps, int _commandCode) throws IllegalArgumentException { // List<DiameterAvp> list = (List<DiameterAvp>) this.avpList.clone(); boolean isRequest = diameterHeader == null; Message msg = null; if (!isRequest) { Message raw = createMessage(diameterHeader, avps,0); raw.setProxiable(diameterHeader.isProxiable()); raw.setRequest(false); raw.setReTransmitted(false); // just in case. answers never have T flag set msg = raw; } else { Message raw = createMessage(null, avps,_commandCode); raw.setProxiable(true); raw.setRequest(true); msg = raw; } return msg; }
/** * * @param msg */ public PushNotificationAnswerImpl(Message msg) { super(msg); msg.setRequest(false); msg.setReTransmitted(false); // just in case. answers never have T flag set super.longMessageName = "Push-Notificaton-Answer"; super.shortMessageName = "PNA"; }
private String makeRoutingKey(Message message) { String sessionId = message.getSessionId(); return new StringBuilder(sessionId != null ? sessionId : "null").append(message.getEndToEndIdentifier()) .append(message.getHopByHopIdentifier()).toString(); }
public Message createRequest(int code, DiameterAvp[] avps) { Message raw = createMessage(code, new DiameterAvp[] {}); raw.setProxiable(true); raw.setRequest(true); return raw; }
private DiameterActivity createActivity(Message message) throws CreateActivityException { DiameterActivity activity = activities.get(getActivityHandle(message.getSessionId())); if (message.isRequest()) { return createRoServerSessionActivity((Request) message); AvpSet avps = message.getAvps(); Avp avp = null;
@Override public GqSessionTerminationAnswer createGqSessionTerminationAnswer(GqSessionTerminationRequest str) { Message raw = createMessage(str.getHeader(), new DiameterAvp[] {}); raw.setRequest(false); // this should be different ... raw.setReTransmitted(false); // just in case. answers never have T flag set GqSessionTerminationAnswerImpl sta = new GqSessionTerminationAnswerImpl(raw); sta.getGenericData().getAvps().removeAvp(DiameterAvpCodes.DESTINATION_HOST); sta.getGenericData().getAvps().removeAvp(DiameterAvpCodes.DESTINATION_REALM); sta.getGenericData().getAvps().removeAvp(DiameterAvpCodes.ORIGIN_HOST); sta.getGenericData().getAvps().removeAvp(DiameterAvpCodes.ORIGIN_REALM); sta.setSessionId(str.getSessionId()); addOrigin(sta); return sta; }
msg.setRequest(isRequest); msg.setProxiable(isProxiable); msg.setError(isError); msg.setReTransmitted(isRequest && isPotentiallyRetransmitted);
raw.setProxiable(ccr.getHeader().isProxiable()); raw.setRequest(false); raw.setReTransmitted(false); // just in case. answers never have T flag set final GxCreditControlAnswerImpl msg = new GxCreditControlAnswerImpl(raw); msg.getGenericData().getAvps().removeAvp(DiameterAvpCodes.DESTINATION_HOST); msg.getGenericData().getAvps().removeAvp(DiameterAvpCodes.DESTINATION_REALM); msg.getGenericData().getAvps().removeAvp(DiameterAvpCodes.ORIGIN_HOST); msg.getGenericData().getAvps().removeAvp(DiameterAvpCodes.ORIGIN_REALM); msg.setSessionId(request.getSessionId());
public void setData(Object data) { try { if (((AppEvent) data).getMessage().isRequest()) { request = (AppEvent) data; } else { answer = (AppEvent) data; } } catch (InternalException e) { throw new IllegalArgumentException(e); } }
private DiameterActivity createActivity(Message message) throws CreateActivityException { DiameterActivity activity = activities.get(getActivityHandle(message.getSessionId())); if(activity == null) { if (message.isRequest()) { if(message.getCommandCode() == PushProfileRequest.COMMAND_CODE || message.getCommandCode() == RegistrationTerminationRequest.COMMAND_CODE) { return createCxDxClientSessionActivity((Request) message, false); } else { return createCxDxServerSessionActivity((Request) message); } } else { throw new IllegalStateException("Got answer, there should already be activity."); } } return activity; }
public DiameterCommand getCommand() { return new DiameterCommandImpl(this.message.getCommandCode(), this.message.getApplicationId(), this.getShortName(), this.getLongName(), this.message.isRequest(), this.message.isProxiable()); }
@Override public void validate(Message msg, boolean incoming) throws AvpNotAllowedException { if (!enabled || !configured) { return; } MessageRepresentationImpl rep = new MessageRepresentationImpl(msg.getCommandCode(), msg.getApplicationId(), msg.isRequest()); rep = (MessageRepresentationImpl) this.commandMap.get(rep); if (rep == null) { // no notion, lets leave it. logger.warn("Validation could not be performed, command not defined!. Code={}, Application-Id={}, Req={}", new Object[] { msg.getCommandCode(), msg.getApplicationId(), msg.isRequest() }); return; } rep.validate(msg, (incoming ? receiveValidationLevel : sendValidationLevel)); }
/** * * @param message */ public JDeleteSubscriberDataRequestImpl(Message message) { super(message); message.setRequest(true); }
DiameterActivity activity = activities.get(getActivityHandle(message.getSessionId())); DiameterIdentity destinationRealm = null; AvpSet avps = message.getAvps(); return this.createActivity(destinationHost, destinationRealm, message.getSessionId());
/** * This method is for internal use only, it creates activities for requests that * do not fall in certain app range or no activities were found <br> * It should distinguish between initial requests, requests with different domains etc. * Answer for creating XXXServerSession or basic diameter activity lies in this method * * @param message * @return */ DiameterActivity createActivity(Message message) throws CreateActivityException { DiameterActivity activity = activities.get(getActivityHandle(message.getSessionId())); if (activity == null) { //FIXME: baranowb: here we can receive only (valid) PNR, other message are errors? if(message.getCommandCode() != PushNotificationRequestImpl.commandCode) { throw new CreateActivityException("Cant create activity for unexpected message:\r\n" + message); } return (ShClientSubscriptionActivityImpl) this.createShClientSubscriptionActivity(new PushNotificationRequestImpl( message)); } return activity; }
@Override public int getCommandCode() { return message.getCommandCode(); }
public boolean isError() { return this.msg.isError(); }
private DiameterActivity createActivity(final Message message) throws CreateActivityException { DiameterActivity activity = activities.get(getActivityHandle(message.getSessionId())); if (activity == null) { if (message.isRequest()) { return createGxServerSessionActivity((Request) message); } else { final AvpSet avps = message.getAvps(); Avp avp = null; DiameterIdentity destinationHost = null; DiameterIdentity destinationRealm = null; if ((avp = avps.getAvp(Avp.DESTINATION_HOST)) != null) { try { destinationHost = new DiameterIdentity(avp.getDiameterIdentity()); } catch (AvpDataException e) { tracer.severe("Failed to extract Destination-Host from Message.", e); } } if ((avp = avps.getAvp(Avp.DESTINATION_REALM)) != null) { try { destinationRealm = new DiameterIdentity(avp.getDiameterIdentity()); } catch (AvpDataException e) { tracer.severe("Failed to extract Destination-Realm from Message.", e); } } return (DiameterActivity) createGxClientSessionActivity(destinationHost, destinationRealm); } } return activity; }