
org.restcomm.protocols.ss7.m3ua.impl.TransitionState Maven / Gradle / Ivy
/*
* JBoss, Home of Professional Open Source
* Copyright 2011, Red Hat, Inc. and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.restcomm.protocols.ss7.m3ua.impl;
import java.util.HashMap;
import org.restcomm.protocols.ss7.m3ua.message.M3UAMessage;
import org.restcomm.protocols.ss7.m3ua.message.MessageClass;
import org.restcomm.protocols.ss7.m3ua.message.MessageType;
import org.restcomm.protocols.ss7.m3ua.message.mgmt.Notify;
import org.restcomm.protocols.ss7.m3ua.parameter.ErrorCode;
import org.restcomm.protocols.ss7.m3ua.parameter.Status;
/**
*
* @author amit bhayani
*
*/
public class TransitionState {
public static final String COMM_UP = "commup";
public static final String COMM_DOWN = "commdown";
public static final String PAYLOAD = "payload";
public static final String DUNA = "duna";
public static final String DAVA = "dava";
public static final String DAUD = "daud";
public static final String SCON = "scon";
public static final String DUPU = "dupu";
public static final String DRST = "drst";
public static final String ASP_UP_SENT = "aspupsent";
public static final String ASP_UP = "aspup";
public static final String ASP_UP_ACK = "aspupack";
public static final String ASP_DOWN_SENT = "aspdownsent";
public static final String ASP_DOWN = "aspdown";
public static final String ASP_DOWN_ACK = "aspdownack";
public static final String HEARTBEAT = "heartbeat";
public static final String HEARTBEAT_ACK = "heartbeatack";
public static final String ASP_INACTIVE_SENT = "aspinactivesent";
public static final String ASP_INACTIVE = "aspinactive";
public static final String ASP_INACTIVE_ACK = "aspinactiveack";
public static final String ASP_ACTIVE = "aspactive";
public static final String ASP_ACTIVE_SENT = "aspactivesent";
public static final String ASP_ACTIVE_ACK = "aspactiveack";
public static final String AS_DOWN = "asdown";
public static final String AS_INACTIVE = "asinactive";
public static final String AS_STATE_CHANGE_RESERVE = "ntfyreserve";
public static final String AS_STATE_CHANGE_INACTIVE = "ntfyasinactive";
public static final String AS_STATE_CHANGE_ACTIVE = "ntfyasactive";
public static final String AS_STATE_CHANGE_PENDING = "ntfyaspending";
public static final String OTHER_INSUFFICIENT_ASP = "ntfyinsuffasp";
public static final String OTHER_ALTERNATE_ASP_ACTIVE = "ntfyaltaspact";
public static final String OTHER_ALTERNATE_ASP_FAILURE = "ntfyaltaspfail";
public static final String INVALID_RC = "invalidrc";
private static HashMap> transContainer = new HashMap>();
static {
// Transfer
HashMap trfrTransCont = new HashMap();
trfrTransCont.put(MessageType.PAYLOAD, PAYLOAD);
transContainer.put(MessageClass.TRANSFER_MESSAGES, trfrTransCont);
// SSNM
HashMap ssnmTransCont = new HashMap();
ssnmTransCont.put(MessageType.DESTINATION_UNAVAILABLE, DUNA);
ssnmTransCont.put(MessageType.DESTINATION_AVAILABLE, DAVA);
ssnmTransCont.put(MessageType.DESTINATION_STATE_AUDIT, DAUD);
ssnmTransCont.put(MessageType.SIGNALING_CONGESTION, SCON);
ssnmTransCont.put(MessageType.DESTINATION_USER_PART_UNAVAILABLE, DUPU);
ssnmTransCont.put(MessageType.DESTINATION_RESTRICTED, DRST);
transContainer.put(MessageClass.SIGNALING_NETWORK_MANAGEMENT, ssnmTransCont);
// ASPSM
HashMap aspsmTransCont = new HashMap();
aspsmTransCont.put(MessageType.ASP_UP, ASP_UP);
aspsmTransCont.put(MessageType.ASP_UP_ACK, ASP_UP_ACK);
aspsmTransCont.put(MessageType.ASP_DOWN, ASP_DOWN);
aspsmTransCont.put(MessageType.ASP_DOWN_ACK, ASP_DOWN_ACK);
aspsmTransCont.put(MessageType.HEARTBEAT, HEARTBEAT);
aspsmTransCont.put(MessageType.HEARTBEAT_ACK, HEARTBEAT_ACK);
transContainer.put(MessageClass.ASP_STATE_MAINTENANCE, aspsmTransCont);
// ASPTM
HashMap asptmTransCont = new HashMap();
asptmTransCont.put(MessageType.ASP_ACTIVE, ASP_ACTIVE);
asptmTransCont.put(MessageType.ASP_ACTIVE_ACK, ASP_ACTIVE_ACK);
asptmTransCont.put(MessageType.ASP_INACTIVE, ASP_INACTIVE);
asptmTransCont.put(MessageType.ASP_INACTIVE_ACK, ASP_INACTIVE_ACK);
transContainer.put(MessageClass.ASP_TRAFFIC_MAINTENANCE, asptmTransCont);
// MGMT
HashMap mgmtTransCont = new HashMap();
// NTFY
mgmtTransCont.put((Status.STATUS_AS_State_Change << 16 | Status.INFO_Reserved), AS_STATE_CHANGE_RESERVE);
mgmtTransCont.put((Status.STATUS_AS_State_Change << 16 | Status.INFO_AS_INACTIVE), AS_STATE_CHANGE_INACTIVE);
mgmtTransCont.put((Status.STATUS_AS_State_Change << 16 | Status.INFO_AS_ACTIVE), AS_STATE_CHANGE_ACTIVE);
mgmtTransCont.put((Status.STATUS_AS_State_Change << 16 | Status.INFO_AS_PENDING), AS_STATE_CHANGE_PENDING);
mgmtTransCont.put((Status.STATUS_Other << 16 | Status.INFO_Insufficient_ASP_Resources_Active), OTHER_INSUFFICIENT_ASP);
mgmtTransCont.put((Status.STATUS_Other << 16 | Status.INFO_Alternate_ASP_Active), OTHER_ALTERNATE_ASP_ACTIVE);
mgmtTransCont.put((Status.STATUS_Other << 16 | Status.INFO_Alternate_ASP_Failure), OTHER_ALTERNATE_ASP_FAILURE);
// Err cde
mgmtTransCont.put(ErrorCode.Invalid_Routing_Context, INVALID_RC);
transContainer.put(MessageClass.MANAGEMENT, mgmtTransCont);
}
public static String getTransition(M3UAMessage message) {
switch (message.getMessageClass()) {
case MessageClass.MANAGEMENT:
switch (message.getMessageType()) {
case MessageType.ERROR:
case MessageType.NOTIFY:
Status status = ((Notify) message).getStatus();
return transContainer.get(message.getMessageClass()).get((status.getType() << 16 | status.getInfo()));
}
default:
return transContainer.get(message.getMessageClass()).get(message.getMessageType());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy