NOT PART OF BUILD

first checkin of timing service so we can get rough timing of specific events
This commit is contained in:
alecf%netscape.com 2001-03-20 23:39:25 +00:00
parent f671729e59
commit cc581d0fdd
3 changed files with 173 additions and 0 deletions

View 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"
%}

View 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;
}

View 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;
};