Revision: 5a82e43362d1
Author:   Sergey Vetyutnev <[email protected]>
Date:     Thu Aug  8 05:31:27 2013
Log:      Interfaces for TCAP counters + dialog adding failing log
http://code.google.com/p/jss7/source/detail?r=5a82e43362d1

Added:
/tcap/tcap-api/src/main/java/org/mobicents/protocols/ss7/tcap/api/TCAPCounterProvider.java /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/TCAPCounterProviderImpl.java
Modified:
/tcap/tcap-api/src/main/java/org/mobicents/protocols/ss7/tcap/api/TCAPStack.java /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/DialogImpl.java /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/TCAPProviderImpl.java /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/TCAPStackImpl.java

=======================================
--- /dev/null
+++ /tcap/tcap-api/src/main/java/org/mobicents/protocols/ss7/tcap/api/TCAPCounterProvider.java Thu Aug 8 05:31:27 2013
@@ -0,0 +1,237 @@
+/*
+ * TeleStax, Open Source Cloud Communications  Copyright 2012.
+ * 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.mobicents.protocols.ss7.tcap.api;
+
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ *
+ * @author servey vetyutnev
+ *
+ */
+public interface TCAPCounterProvider {
+
+    /**
+     * Return a unique sessionId.
+     * After stack/counters restart this value will be changed,
+ * all counters will be set to zero and all active campaigns will be removed
+     */
+    UUID getSessionId();
+
+    /**
+     * return a count of received since Stack restart TC-UNI messages
+     */
+    long getTcUniRecievedCount();
+
+    /**
+     * return a count of sent since Stack restart TC-UNI messages
+     */
+    long getTcUniSentCount();
+
+    /**
+     * return a count of received since Stack restart TC-BEGIN messages
+     */
+    long getTcBeginRecievedCount();
+
+    /**
+     * return a count of sent since Stack restart TC-BEGIN messages
+     */
+    long getTcBeginSentCount();
+
+    /**
+     * return a count of received since Stack restart TC-CONTINUE messages
+     */
+    long getTcContinueRecievedCount();
+
+    /**
+     * return a count of sent since Stack restart TC-CONTINUE messages
+     */
+    long getTcContinueSentCount();
+
+    /**
+     * return a count of received since Stack restart TC-END messages
+     */
+    long getTcEndRecievedCount();
+
+    /**
+     * return a count of sent since Stack restart TC-END messages
+     */
+    long getTcEndSentCount();
+
+    /**
+ * return a count of received since Stack restart TC-PROVIDER-ABORT messages
+     */
+    long getTcPAbortRecievedCount();
+
+    /**
+ * return a count of sent since Stack restart TC-PROVIDER-ABORT messages
+     */
+    long getTcPAbortSentCount();
+
+    /**
+ * return a count of received since Stack restart TC-USER-ABORT messages
+     */
+    long getTcUserAbortRecievedCount();
+
+    /**
+     * return a count of sent since Stack restart TC-USER-ABORT messages
+     */
+    long getTcUserAbortSentCount();
+
+    /**
+     * return a count of received since Stack restart Invoke components
+     */
+    long getInvokeRecievedCount();
+
+    /**
+     * return a count of sent since Stack restart Invoke components
+     */
+    long getInvokeSentCount();
+
+    /**
+ * return a count of received since Stack restart ReturtResult components
+     */
+    long getReturnResultRecievedCount();
+
+    /**
+     * return a count of sent since Stack restart ReturtResult components
+     */
+    long getReturnResultSentCount();
+
+    /**
+ * return a count of received since Stack restart ReturtResultLast components
+     */
+    long getReturnResultLastRecievedCount();
+
+    /**
+ * return a count of sent since Stack restart ReturtResultLast components
+     */
+    long getReturnResultLastSentCount();
+
+    /**
+ * return a count of received since Stack restart ReturnError components
+     */
+    long getReturnErrorRecievedCount();
+
+    /**
+     * return a count of sent since Stack restart ReturnError components
+     */
+    long getReturnErrorSentCount();
+
+    /**
+     * return a count of received since Stack restart Reject components
+     */
+    long getRejectRecievedCount();
+
+    /**
+     * return a count of sent since Stack restart Reject components
+     */
+    long getRejectSentCount();
+
+    /**
+     * return a count of received since Stack restart DialogRequests
+     */
+    long getDialogRequestCount();
+
+    /**
+     * return a count of received since Stack restart DialogTimeouts
+     */
+    long getDialogTimeoutCount();
+
+    /**
+     * return a count of received since Stack restart DialogReleases
+     */
+    long getDialogReleaseCount();
+
+
+    /**
+     * return a current count of established Dialogs
+     */
+    long getCurrentDialogsCount();
+
+    /**
+     * return a count of all established Dialogs since stack start
+     */
+    long getAllDialogsCount();
+
+    /**
+     * return a min count of established Dialogs
+     */
+    Long getMinDialogsCount(String compainName);
+
+    /**
+     * return a max current count of established Dialogs
+     */
+    Long getMaxDialogsCount(String compainName);
+
+    /**
+ * return a total durations of all released Dialogs since stack start (in seconds)
+     * this value is updated when a dialog is released
+     */
+    double getAllDialogsDuration();
+
+
+    /**
+ * return an outgoing Dialogs count per ApplicationContextNames (in string form)
+     * all MAP V1 operations will be assigned into empty string group ("")
+     */
+    Map<String,Long> getOutgoingDialogsPerApplicatioContextName();
+
+    /**
+ * return an incoming Dialogs count per ApplicationContextNames (in string form)
+     */
+    Map<String,Long> getIncomingDialogsPerApplicatioContextName();
+
+    /**
+     * return an outgoing Invokes count per OperationCodes
+     */
+    Map<String,Long> getOutgoingInvokesPerOperationCode();
+
+    /**
+     * return an incoming Invokes count per OperationCodes
+     */
+    Map<String,Long> getIncomingInvokesPerOperationCode();
+
+    /**
+     * return an outgoing ReturtError count per ErrorCodes
+     */
+    Map<String,Long> getOutgoingErrorsPerErrorCode();
+
+    /**
+     * return an incoming ReturtError count per ErrorCodes
+     */
+    Map<String,Long> getIncomingErrorsPerErrorCode();
+
+    /**
+     * return an outgoing Reject count per Problem
+     */
+    Map<String,Long> getOutgoingRejectPerProblem();
+
+    /**
+     * return an incoming Reject count per Problem
+     */
+    Map<String,Long> getIncomingRejectPerProblem();
+
+}
+
=======================================
--- /dev/null
+++ /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/TCAPCounterProviderImpl.java Thu Aug 8 05:31:27 2013
@@ -0,0 +1,327 @@
+/*
+ * TeleStax, Open Source Cloud Communications  Copyright 2012.
+ * 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.mobicents.protocols.ss7.tcap;
+
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.mobicents.protocols.ss7.tcap.api.TCAPCounterProvider;
+
+public class TCAPCounterProviderImpl implements TCAPCounterProvider {
+
+    private UUID sessionId = UUID.randomUUID();
+
+    private AtomicLong tcUniRecievedCount = new AtomicLong();
+    private AtomicLong tcUniSentCount = new AtomicLong();
+    private AtomicLong tcBeginRecievedCount = new AtomicLong();
+    private AtomicLong tcBeginSentCount = new AtomicLong();
+    private AtomicLong tcContinueRecievedCount = new AtomicLong();
+    private AtomicLong tcContinueSentCount = new AtomicLong();
+    private AtomicLong tcEndRecievedCount = new AtomicLong();
+    private AtomicLong tcEndSentCount = new AtomicLong();
+    private AtomicLong tcPAbortRecievedCount = new AtomicLong();
+    private AtomicLong tcPAbortSentCount = new AtomicLong();
+    private AtomicLong tcUserAbortRecievedCount = new AtomicLong();
+    private AtomicLong tcUserAbortSentCount = new AtomicLong();
+
+
+    public TCAPCounterProviderImpl() {
+    }
+
+
+    @Override
+    public UUID getSessionId() {
+        return sessionId;
+    }
+
+
+    @Override
+    public long getTcUniRecievedCount() {
+        return tcUniRecievedCount.get();
+    }
+
+    public void addTcUniRecievedCount() {
+        tcUniRecievedCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcUniSentCount() {
+        return tcUniSentCount.get();
+    }
+
+    public void addTcUniSentCount() {
+        tcUniSentCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcBeginRecievedCount() {
+        return tcBeginRecievedCount.get();
+    }
+
+    public void addTcBeginRecievedCount() {
+        tcBeginRecievedCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcBeginSentCount() {
+        return tcBeginSentCount.get();
+    }
+
+    public void addTcBeginSentCount() {
+        tcBeginSentCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcContinueRecievedCount() {
+        return tcContinueRecievedCount.get();
+    }
+
+    public void addTcContinueRecievedCount() {
+        tcContinueRecievedCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcContinueSentCount() {
+        return tcContinueSentCount.get();
+    }
+
+    public void addTcContinueSentCount() {
+        tcContinueSentCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcEndRecievedCount() {
+        return tcEndRecievedCount.get();
+    }
+
+    public void addTcEndRecievedCount() {
+        tcEndRecievedCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcEndSentCount() {
+        return tcEndSentCount.get();
+    }
+
+    public void addTcEndSentCount() {
+        tcEndSentCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcPAbortRecievedCount() {
+        return tcPAbortRecievedCount.get();
+    }
+
+    public void addTcPAbortRecievedCount() {
+        tcPAbortRecievedCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcPAbortSentCount() {
+        return tcPAbortSentCount.get();
+    }
+
+    public void addTcPAbortSentCount() {
+        tcPAbortSentCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcUserAbortRecievedCount() {
+        return tcUserAbortRecievedCount.get();
+    }
+
+    public void addTcUserAbortRecievedCount() {
+        tcUserAbortRecievedCount.addAndGet(1);
+    }
+
+    @Override
+    public long getTcUserAbortSentCount() {
+        return tcUserAbortSentCount.get();
+    }
+
+    public void addTcUserAbortSentCount() {
+        tcUserAbortSentCount.addAndGet(1);
+    }
+
+
+
+    //.............................
+
+    @Override
+    public long getInvokeRecievedCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getInvokeSentCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getReturnResultRecievedCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getReturnResultSentCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getReturnResultLastRecievedCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getReturnResultLastSentCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getReturnErrorRecievedCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getReturnErrorSentCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getRejectRecievedCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getRejectSentCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getDialogRequestCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getDialogTimeoutCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getDialogReleaseCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getCurrentDialogsCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getAllDialogsCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public Long getMinDialogsCount(String compainName) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Long getMaxDialogsCount(String compainName) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public double getAllDialogsDuration() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public Map<String, Long> getOutgoingDialogsPerApplicatioContextName() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Map<String, Long> getIncomingDialogsPerApplicatioContextName() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Map<String, Long> getOutgoingInvokesPerOperationCode() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Map<String, Long> getIncomingInvokesPerOperationCode() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Map<String, Long> getOutgoingErrorsPerErrorCode() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Map<String, Long> getIncomingErrorsPerErrorCode() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Map<String, Long> getOutgoingRejectPerProblem() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Map<String, Long> getIncomingRejectPerProblem() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
=======================================
--- /tcap/tcap-api/src/main/java/org/mobicents/protocols/ss7/tcap/api/TCAPStack.java Fri Jul 19 09:59:05 2013 +++ /tcap/tcap-api/src/main/java/org/mobicents/protocols/ss7/tcap/api/TCAPStack.java Thu Aug 8 05:31:27 2013
@@ -35,6 +35,8 @@
      */
     TCAPProvider getProvider();

+    TCAPCounterProvider getCounterProvider();
+
     /**
      * Stops this stack and transport layer(SCCP)
      */
=======================================
--- /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/DialogImpl.java Fri Jul 19 09:59:05 2013 +++ /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/DialogImpl.java Thu Aug 8 05:31:27 2013
@@ -525,6 +525,7 @@
             try {
                 tcbm.encode(aos);
                 this.setState(TRPseudoState.InitialSent);
+ this.provider.getStack().getCounterProviderImpl().addTcBeginSentCount(); this.provider.send(aos.toByteArray(), event.getReturnMessageOnError(), this.remoteAddress, this.localAddress,
                         this.seqControl);
                 this.scheduledComponentList.clear();
@@ -602,6 +603,7 @@
                 AsnOutputStream aos = new AsnOutputStream();
                 try {
                     tcbm.encode(aos);
+ this.provider.getStack().getCounterProviderImpl().addTcContinueSentCount(); this.provider.send(aos.toByteArray(), event.getReturnMessageOnError(), this.remoteAddress,
                             this.localAddress, this.seqControl);
                     this.setState(TRPseudoState.Active);
@@ -632,6 +634,7 @@
                 AsnOutputStream aos = new AsnOutputStream();
                 try {
                     tcbm.encode(aos);
+ this.provider.getStack().getCounterProviderImpl().addTcContinueSentCount(); this.provider.send(aos.toByteArray(), event.getReturnMessageOnError(), this.remoteAddress,
                             this.localAddress, this.seqControl);
                     this.scheduledComponentList.clear();
@@ -752,6 +755,7 @@
             AsnOutputStream aos = new AsnOutputStream();
             try {
                 tcbm.encode(aos);
+ this.provider.getStack().getCounterProviderImpl().addTcEndSentCount(); this.provider.send(aos.toByteArray(), event.getReturnMessageOnError(), this.remoteAddress, this.localAddress,
                         this.seqControl);

@@ -814,6 +818,7 @@
             AsnOutputStream aos = new AsnOutputStream();
             try {
                 msg.encode(aos);
+ this.provider.getStack().getCounterProviderImpl().addTcUniSentCount(); this.provider.send(aos.toByteArray(), event.getReturnMessageOnError(), this.remoteAddress, this.localAddress,
                         this.seqControl);
                 this.scheduledComponentList.clear();
@@ -910,6 +915,7 @@
                 AsnOutputStream aos = new AsnOutputStream();
                 try {
                     msg.encode(aos);
+ this.provider.getStack().getCounterProviderImpl().addTcUserAbortSentCount(); this.provider.send(aos.toByteArray(), event.getReturnMessageOnError(), this.remoteAddress,
                             this.localAddress, this.seqControl);

@@ -1641,6 +1647,7 @@
                 AsnOutputStream aos = new AsnOutputStream();
                 try {
                     msg.encode(aos);
+ this.provider.getStack().getCounterProviderImpl().addTcPAbortSentCount(); this.provider.send(aos.toByteArray(), false, this.remoteAddress, this.localAddress, this.seqControl);
                 } catch (Exception e) {
                     if (logger.isEnabledFor(Level.ERROR)) {
=======================================
--- /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/TCAPProviderImpl.java Fri Jul 19 09:59:05 2013 +++ /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/TCAPProviderImpl.java Thu Aug 8 05:31:27 2013
@@ -290,6 +290,7 @@

     public void deliver(DialogImpl dialogImpl, TCBeginIndicationImpl msg) {

+        this.stack.getCounterProviderImpl().addTcBeginRecievedCount();
         try {
             for (TCListener lst : this.tcListeners) {
                 lst.onTCBegin(msg);
@@ -303,6 +304,8 @@
     }

public void deliver(DialogImpl dialogImpl, TCContinueIndicationImpl tcContinueIndication) {
+
+        this.stack.getCounterProviderImpl().addTcContinueRecievedCount();
         try {
             for (TCListener lst : this.tcListeners) {
                 lst.onTCContinue(tcContinueIndication);
@@ -316,6 +319,8 @@
     }

public void deliver(DialogImpl dialogImpl, TCEndIndicationImpl tcEndIndication) {
+
+        this.stack.getCounterProviderImpl().addTcEndRecievedCount();
         try {
             for (TCListener lst : this.tcListeners) {
                 lst.onTCEnd(tcEndIndication);
@@ -328,6 +333,8 @@
     }

public void deliver(DialogImpl dialogImpl, TCPAbortIndicationImpl tcAbortIndication) {
+
+        this.stack.getCounterProviderImpl().addTcPAbortRecievedCount();
         try {
             for (TCListener lst : this.tcListeners) {
                 lst.onTCPAbort(tcAbortIndication);
@@ -341,6 +348,8 @@
     }

public void deliver(DialogImpl dialogImpl, TCUserAbortIndicationImpl tcAbortIndication) {
+
+        this.stack.getCounterProviderImpl().addTcUserAbortRecievedCount();
         try {
             for (TCListener lst : this.tcListeners) {
                 lst.onTCUserAbort(tcAbortIndication);
@@ -354,6 +363,8 @@
     }

public void deliver(DialogImpl dialogImpl, TCUniIndicationImpl tcUniIndication) {
+
+        this.stack.getCounterProviderImpl().addTcUniRecievedCount();
         try {
             for (TCListener lst : this.tcListeners) {
                 lst.onTCUni(tcUniIndication);
@@ -468,6 +479,7 @@
         AsnOutputStream aos = new AsnOutputStream();
         try {
             msg.encode(aos);
+            this.stack.getCounterProviderImpl().addTcPAbortSentCount();
this.send(aos.toByteArray(), false, remoteAddress, localAddress, seqControl);
         } catch (Exception e) {
             if (logger.isEnabledFor(Level.ERROR)) {
@@ -503,6 +515,7 @@
         AsnOutputStream aos = new AsnOutputStream();
         try {
             msg.encode(aos);
+            this.stack.getCounterProviderImpl().addTcPAbortSentCount();
this.send(aos.toByteArray(), false, remoteAddress, localAddress, seqControl);
         } catch (Exception e) {
             if (logger.isEnabledFor(Level.ERROR)) {
@@ -639,7 +652,7 @@

                 } catch (TCAPException e) {
this.sendProviderAbort(PAbortCauseType.ResourceLimitation, tcb.getOriginatingTransactionId(), remoteAddress, localAddress, message.getSls()); - logger.error("Too many registered current dialogs when receiving TCBeginMessage"); + logger.error("Too many registered current dialogs when receiving TCBeginMessage: " + e.getMessage(), e);
                     return;
                 }
                 di.processBegin(tcb, localAddress, remoteAddress);
=======================================
--- /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/TCAPStackImpl.java Fri Jul 19 09:59:05 2013 +++ /tcap/tcap-impl/src/main/java/org/mobicents/protocols/ss7/tcap/TCAPStackImpl.java Thu Aug 8 05:31:27 2013
@@ -25,6 +25,7 @@
 import org.apache.log4j.Logger;
 import org.mobicents.protocols.ss7.sccp.SccpProvider;
 import org.mobicents.protocols.ss7.sccp.parameter.SccpAddress;
+import org.mobicents.protocols.ss7.tcap.api.TCAPCounterProvider;
 import org.mobicents.protocols.ss7.tcap.api.TCAPProvider;
 import org.mobicents.protocols.ss7.tcap.api.TCAPStack;

@@ -44,6 +45,7 @@
     public static final long _EMPTY_INVOKE_TIMEOUT = -1;
     // TCAP state data, it is used ONLY on client side
     protected TCAPProviderImpl tcapProvider;
+    protected TCAPCounterProviderImpl tcapCounterProvider;
     private SccpProvider sccpProvider;
     private SccpAddress address;

@@ -68,6 +70,7 @@
     public TCAPStackImpl(SccpProvider sccpProvider, int ssn) {
         this.sccpProvider = sccpProvider;
         this.tcapProvider = new TCAPProviderImpl(sccpProvider, this, ssn);
+        this.tcapCounterProvider = new TCAPCounterProviderImpl();
     }

     public void start() throws Exception {
@@ -96,6 +99,7 @@
throw new IllegalArgumentException("InvokeTimeout value must be greater or equal to zero.");
         }

+        this.tcapCounterProvider = new TCAPCounterProviderImpl();
         tcapProvider.start();

         this.started = true;
@@ -122,6 +126,15 @@

         return tcapProvider;
     }
+
+    @Override
+    public TCAPCounterProvider getCounterProvider() {
+        return tcapCounterProvider;
+    }
+
+    public TCAPCounterProviderImpl getCounterProviderImpl() {
+        return tcapCounterProvider;
+    }

     /*
      * (non-Javadoc)

--

--- You received this message because you are subscribed to the Google Groups "mobicents-commits" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to