Package org.mule.management.stats

Source Code of org.mule.management.stats.ServiceStatistics

/*
* $Id: ServiceStatistics.java 21939 2011-05-18 13:32:09Z aperepel $
* --------------------------------------------------------------------------------------
* Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
*
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/

package org.mule.management.stats;

import org.mule.management.stats.printers.SimplePrinter;

import java.io.PrintWriter;
import java.util.concurrent.atomic.AtomicLong;

public class ServiceStatistics extends FlowConstructStatistics implements QueueStatistics
{
    private static final long serialVersionUID = -2086999226732861675L;

    private final AtomicLong sentEventSync = new AtomicLong(0);
    private final AtomicLong sentReplyToEvent = new AtomicLong(0);
    private final AtomicLong sentEventASync = new AtomicLong(0);

    // these can't sensibly converted to AtomicLong as they are processed together
    // in incQueuedEvent
    private long queuedEvent = 0;
    private long maxQueuedEvent = 0;
    private long averageQueueSize = 0;
    private long totalQueuedEvent = 0;

    private RouterStatistics inboundRouterStat = null;
    private ComponentStatistics componentStat = null;
    private RouterStatistics outboundRouterStat = null;

    public ServiceStatistics(String name)
    {
        this(name, 0);
    }

    public ServiceStatistics(String name, int threadPoolSize)
    {
        super("Service", name, threadPoolSize);
        clear();
    }

    /**
     * Enable statistics logs (this is a dynamic parameter)
     */
    @Override
    public synchronized void setEnabled(boolean b)
    {
        super.setEnabled(b);

        if (inboundRouterStat != null)
        {
            inboundRouterStat.setEnabled(b);
        }
        if (componentStat != null)
        {
            componentStat.setEnabled(b);
        }
        if (outboundRouterStat != null)
        {
            outboundRouterStat.setEnabled(b);
        }
    }

    public void incSentEventSync()
    {
        sentEventSync.addAndGet(1);
    }

    public void incSentEventASync()
    {
        sentEventASync.addAndGet(1);
    }

    public void incSentReplyToEvent()
    {
        sentReplyToEvent.addAndGet(1);
    }

    public synchronized void incQueuedEvent()
    {
        queuedEvent++;
        totalQueuedEvent++;
        if (queuedEvent > maxQueuedEvent)
        {
            maxQueuedEvent = queuedEvent;
        }
        averageQueueSize = receivedEventASync.get() / totalQueuedEvent;
    }

    public synchronized void decQueuedEvent()
    {
        queuedEvent--;
    }

    public long getAverageExecutionTime()
    {
        return componentStat.getAverageExecutionTime();
    }

    public synchronized long getAverageQueueSize()
    {
        return averageQueueSize;
    }

    public synchronized long getMaxQueueSize()
    {
        return maxQueuedEvent;
    }

    /**
     * @deprecated
     */
    @Deprecated
    public long getMaxExecutionTime()
    {
        return componentStat.getMaxExecutionTime();
    }

    /**
     * @deprecated
     */
    @Deprecated
    public long getMinExecutionTime()
    {
        return componentStat.getMinExecutionTime();
    }

    /**
     * @deprecated
     */
    @Deprecated
    public long getTotalExecutionTime()
    {
        return componentStat.getTotalExecutionTime();
    }

    public synchronized long getQueuedEvents()
    {
        return queuedEvent;
    }

    public long getReplyToEventsSent()
    {
        return sentReplyToEvent.get();
    }

    public long getSyncEventsSent()
    {
        return sentEventSync.get();
    }

    public long getAsyncEventsSent()
    {
        return sentEventASync.get();
    }

    public long getTotalEventsSent()
    {
        return getSyncEventsSent() + getAsyncEventsSent();
    }

    public long getExecutedEvents()
    {
        return componentStat.getExecutedEvents();
    }

    public void logSummary()
    {
        logSummary(new SimplePrinter(System.out));
    }

    public void logSummary(PrintWriter printer)
    {
        printer.print(this);
    }

    @Override
    public synchronized void clear()
    {
        super.clear();
        queuedEvent = 0;
        maxQueuedEvent = 0;
        totalQueuedEvent = 0;
        averageQueueSize = 0;

        sentEventSync.set(0);
        sentEventASync.set(0);
        sentReplyToEvent.set(0);

        if (getComponentStat() != null)
        {
            getComponentStat().clear();
        }
        if (getInboundRouterStat() != null)
        {
            getInboundRouterStat().clear();
        }
        if (getOutboundRouterStat() != null)
        {
            getOutboundRouterStat().clear();
        }
    }

    public RouterStatistics getInboundRouterStat()
    {
        return inboundRouterStat;
    }

    public void setInboundRouterStat(RouterStatistics inboundRouterStat)
    {
        this.inboundRouterStat = inboundRouterStat;
        this.inboundRouterStat.setEnabled(enabled);
    }

    public RouterStatistics getOutboundRouterStat()
    {
        return outboundRouterStat;
    }

    public void setOutboundRouterStat(RouterStatistics outboundRouterStat)
    {
        this.outboundRouterStat = outboundRouterStat;
        this.outboundRouterStat.setEnabled(enabled);
    }

    public ComponentStatistics getComponentStat()
    {
        return componentStat;
    }

    public void setComponentStat(ComponentStatistics componentStat)
    {
        this.componentStat = componentStat;
        this.componentStat.setEnabled(enabled);
    }
}
TOP

Related Classes of org.mule.management.stats.ServiceStatistics

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.