blob: fbefc43da2dd7313039c8bd3f4ac59b12840e506 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.sessions;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.queries.*;
/**
* <p><b>Purpose</b>: This interface defines the link between the Session and the PerformanceProfiler tool.
* It is provide to decouple the session from tools and to allow other profilers to register with the session.
*
* @author James Sutherland
*/
public interface SessionProfiler {
//dms sensor weight constants
public static final int NONE = 0;
public static final int NORMAL = 5;
public static final int HEAVY = 10;
public static final int ALL = Integer.MAX_VALUE;
// Sensors display name
public static final String SessionName = "Info:SessionName";
public static final String LoginTime = "Info:LoginTime";
public static final String RcmStatus = "Info:CacheCoordinationStatus";
public static final String CacheSize = "Info:CacheSize";//TODO
public static final String ClientSessionCreated = "Counter:ClientSessionCreates";
public static final String ClientSessionReleased = "Counter:ClientSessionReleases";
public static final String UowCreated = "Counter:UnitOfWorkCreates";
public static final String UowReleased = "Counter:UnitOfWorkReleases";
public static final String UowCommits = "Counter:UnitOfWorkCommits";
public static final String UowRollbacks = "Counter:UnitOfWorkRollbacks";
public static final String OptimisticLockException = "Counter:OptimisticLocks";
public static final String RcmReceived = "Counter:MessagesReceived";
public static final String RcmSent = "Counter:MessagesSent";
public static final String RemoteChangeSet = "Counter:RemoteChangeSets";
public static final String Connects = "Counter:ConnectCalls";
public static final String Disconnects = "Counter:DisconnectCalls";
public static final String CacheHits = "Counter:CacheHits";
public static final String CacheMisses = "Counter:CacheMisses";
public static final String ChangeSetsProcessed = "Counter:ChangesProcessed";
public static final String ChangeSetsNotProcessed = "Counter:ChangesNotProcessed";
public static final String DescriptorEvent = "Timer:DescriptorEvents";
public static final String SessionEvent = "Timer:SessionEvents";
public static final String QueryPreparation = "Timer:QueryPreparation";
public static final String SqlGeneration = "Timer:SqlGeneration";
public static final String SqlPrepare = "Timer:SqlPrepare";
public static final String StatementExecute = "Timer:StatementExecute";
public static final String RowFetch = "Timer:RowFetch";
public static final String ObjectBuilding = "Timer:ObjectBuilding";
public static final String Register = "Timer:Register";
public static final String Merge = "Timer:Merge";
public static final String DistributedMerge = "Timer:DistributedMerge";
public static final String AssignSequence = "Timer:Sequencing";
public static final String Caching = "Timer:Caching";
public static final String CacheCoordinationSerialize = "Timer:CacheCoordinationSerialize";
public static final String CacheCoordination = "Timer:CacheCoordination";
public static final String ConnectionManagement = "Timer:ConnectionManagement";
public static final String Logging = "Timer:Logging";
public static final String JtsBeforeCompletion = "Timer:TXBeforeCompletion";
public static final String JtsAfterCompletion = "Timer:TXAfterCompletion";
public static final String Transaction = "Timer:Transactions";
public static final String UowCommit = "Timer:UnitOfWorkCommit";
public static final String ConnectionPing = "Timer:ConnectionPing";
public static final String Remote = "Timer:Remote";
public static final String RemoteLazy = "Timer:RemoteLazy";
public static final String RemoteMetadata = "Timer:RemoteMetadata";
/**
* INTERNAL:
* End the operation timing.
*/
public void endOperationProfile(String operationName);
/**
* INTERNAL:
* End the operation timing.
*/
public void endOperationProfile(String operationName, DatabaseQuery query, int weight);
/**
* INTERNAL:
* Finish a profile operation if profiling.
* This assumes the start operation proceeds on the stack.
* The session must be passed to allow units of work etc. to share their parents profiler.
*
* @return the execution result of the query.
*/
public Object profileExecutionOfQuery(DatabaseQuery query, Record row, AbstractSession session);
/**
* INTERNAL:
* Set the session.
*/
public void setSession(Session session);
/**
* INTERNAL:
* Start the operation timing.
*/
public void startOperationProfile(String operationName);
/**
* INTERNAL:
* Start the operation timing.
*/
public void startOperationProfile(String operationName, DatabaseQuery query, int weight);
/**
* INTERNAL:
* Update the value of the State sensor.(DMS)
*/
public void update(String operationName, Object value);
/**
* INTERNAL:
* Increase DMS Event sensor occurrence.(DMS)
*/
public void occurred(String operationName, AbstractSession session);
/**
* INTERNAL:
* Increase DMS Event sensor occurrence.(DMS)
*/
public void occurred(String operationName, DatabaseQuery query, AbstractSession session);
/**
* INTERNAL:
* Set DMS sensor weight(DMS)
*/
public void setProfileWeight(int weight);
/**
* INTERNAL:
* Return DMS sensor weight(DMS)
*/
public int getProfileWeight();
/**
* INTERNAL:
* Initialize EclipseLink noun tree(DMS)
*/
public void initialize();
}