mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
NOT PART OF BUILD
first checkin of timing service so we can get rough timing of specific events
This commit is contained in:
parent
f671729e59
commit
cc581d0fdd
53
xpfe/appshell/public/nsITimingService.idl
Normal file
53
xpfe/appshell/public/nsITimingService.idl
Normal file
@ -0,0 +1,53 @@
|
||||
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
[scriptable, uuid(53510e04-0891-4fd0-bb63-5bf243100bf7)]
|
||||
interface nsITimingService : nsISupports
|
||||
{
|
||||
/**
|
||||
* startNamedTimer - start or reset the timer with the given name
|
||||
*/
|
||||
void startTimer(in string timername);
|
||||
|
||||
/**
|
||||
* getTimerElapsed()
|
||||
* get the elapsed time on the given timer
|
||||
*/
|
||||
long long getElapsedTime(in string timername);
|
||||
|
||||
/**
|
||||
* setNamedTimer()
|
||||
* for advanced users only - sets the start time for a given
|
||||
* timer. Only use if you could not call startNamedTimer() for
|
||||
* some reason
|
||||
*/
|
||||
void setTimer(in string timername, in long long starttime);
|
||||
|
||||
};
|
||||
|
||||
%{C++
|
||||
#define NS_TIMINGSERVICE_CONTRACTID \
|
||||
"@mozilla.org/appshell/timing-service;1"
|
||||
|
||||
%}
|
75
xpfe/appshell/src/nsTimingService.cpp
Normal file
75
xpfe/appshell/src/nsTimingService.cpp
Normal file
@ -0,0 +1,75 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsTimingService.h"
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsTimingService, nsITimingService)
|
||||
|
||||
nsTimingService::~nsTimingService()
|
||||
{
|
||||
// free up entries in hashtable
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsTimingService::StartTimer(const char *aTimerName)
|
||||
{
|
||||
PRTime now = PR_Now();
|
||||
|
||||
return SetTimer(aTimerName, now);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsTimingService::SetTimer(const char *aTimerName, PRInt64 aTime)
|
||||
{
|
||||
nsCStringKey timerKey(aTimerName);
|
||||
|
||||
PRInt64 *aTimerEntry = new PRInt64(aTime);
|
||||
if (!aTimerEntry) return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
#if 0
|
||||
PRInt64 *oldEntry =
|
||||
NS_STATIC_CAST(PRInt64 *, mTimers.Put(&timerKey,
|
||||
NS_STATIC_CAST(void *, aTimerEntry)));
|
||||
#endif
|
||||
mTimers.Put(&timerKey, (void *)aTimerEntry);
|
||||
#if 0
|
||||
if (oldEntry)
|
||||
delete oldEntry;
|
||||
#endif
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsTimingService::GetElapsedTime(const char *aTimerName, PRInt64* aResult)
|
||||
{
|
||||
PRTime now = PR_Now();
|
||||
|
||||
nsCStringKey timerKey(aTimerName);
|
||||
|
||||
PRInt64 *then = (PRInt64 *)mTimers.Get(&timerKey);
|
||||
if (!then) return NS_ERROR_FAILURE;
|
||||
|
||||
LL_SUB(*aResult, now, *then);
|
||||
|
||||
return NS_OK;
|
||||
}
|
45
xpfe/appshell/src/nsTimingService.h
Normal file
45
xpfe/appshell/src/nsTimingService.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsITimingService.h"
|
||||
#include "nsHashTable.h"
|
||||
|
||||
#define NS_TIMINGSERVICE_CID \
|
||||
{ /* ea74eba8-efb7-4ac5-a10d-25917e3d6ee4 */ \
|
||||
0xea74eba8, \
|
||||
0xefb7, \
|
||||
0x4ac5, \
|
||||
{0xa1, 0x0d, 0x25, 0x91, 0x7e, 0x3d, 0x6e, 0xe4}}
|
||||
|
||||
class nsTimingService : public nsITimingService
|
||||
{
|
||||
public:
|
||||
nsTimingService() { NS_INIT_ISUPPORTS();};
|
||||
virtual ~nsTimingService();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSITIMINGSERVICE
|
||||
|
||||
protected:
|
||||
|
||||
nsHashtable mTimers;
|
||||
};
|
Loading…
Reference in New Issue
Block a user