/**
* Start time:12:14:57 2009-09-04<br>
* Project: mobicents-isup-stack<br>
*
* @author <a href="mailto:baranowb@gmail.com">Bartosz Baranowski </a>
*/
package org.mobicents.ss7.isup.impl;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import org.mobicents.ss7.SS7Provider;
import org.mobicents.ss7.isup.ISUPProvider;
import org.mobicents.ss7.isup.ISUPStack;
/**
* Start time:12:14:57 2009-09-04<br>
* Project: mobicents-isup-stack<br>
*
* @author <a href="mailto:baranowb@gmail.com">Bartosz Baranowski </a>
*/
public class ISUPStackImpl implements ISUPStack {
private SS7Provider transportProvider;
private ISUPProviderImpl isupProvider;
private boolean started = false;
private ScheduledExecutorService executor = Executors.newScheduledThreadPool(8);
private long _GENERAL_TRANSACTION_TIMEOUT=60*1000;
private long _CLIENT_TRANSACTION_ANSWER_TIMEOUT=30*1000;
public ISUPStackImpl(SS7Provider transportProvider) {
super();
this.transportProvider = transportProvider;
this.isupProvider = new ISUPProviderImpl(this.transportProvider, this);
}
/*
* (non-Javadoc)
*
* @see org.mobicents.ss7.isup.ISUPStack#getTransportProvider()
*/
public SS7Provider getTransportProvider() {
return this.transportProvider;
}
public ISUPProvider getIsupProvider() {
return isupProvider;
}
public void start() {
if (!started) {
configure();
this.transportProvider.addSS7PayloadListener(this.isupProvider);
this.started = true;
}
}
public void stop() {
if (started) {
this.transportProvider.removeSS7PayloadListener(this.isupProvider);
termiante();
this.started = false;
}
}
// ///////////////
// CONF METHOD //
// ///////////////
/**
*
*/
private void configure() {
this.executor = Executors.newScheduledThreadPool(8);
}
/**
*
*/
private void termiante() {
this.executor.shutdownNow();
}
//possibly something similar as in MGCP
ScheduledExecutorService getExecutors() {
return this.executor;
}
/**
* @return
*/
public long getTransactionGeneralTimeout() {
return _GENERAL_TRANSACTION_TIMEOUT;
}
/**
* @return
*/
public long getClientTransactionAnswerTimeout() {
return _CLIENT_TRANSACTION_ANSWER_TIMEOUT;
}
}