gecko-dev/netwerk/cache/nsCache.cpp
Wes Kocher 4e9f80ed2e Backed out 14 changesets (bug 1165515) for b2g mochitest-6 permafail CLOSED TREE
Backed out changeset 9b97e2aa2ed9 (bug 1165515)
Backed out changeset 150606c022a2 (bug 1165515)
Backed out changeset 4e875a488349 (bug 1165515)
Backed out changeset 467e7feeb546 (bug 1165515)
Backed out changeset d6b6cc373197 (bug 1165515)
Backed out changeset 0615265b593c (bug 1165515)
Backed out changeset fafd1dce9f08 (bug 1165515)
Backed out changeset d1df869245f9 (bug 1165515)
Backed out changeset 6876a7c63611 (bug 1165515)
Backed out changeset b7841c94a9a3 (bug 1165515)
Backed out changeset e5e3617f7c73 (bug 1165515)
Backed out changeset 39be3db95978 (bug 1165515)
Backed out changeset 0ec74176f8de (bug 1165515)
Backed out changeset 5b928dd10d71 (bug 1165515)
2015-06-01 17:57:58 -07:00

106 lines
2.4 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsCache.h"
#include "nsReadableUtils.h"
#include "nsDependentSubstring.h"
#include "nsString.h"
/**
* Cache Service Utility Functions
*/
PRLogModuleInfo * gCacheLog = nullptr;
void
CacheLogInit()
{
if (gCacheLog) return;
gCacheLog = PR_NewLogModule("cache");
NS_ASSERTION(gCacheLog, "\nfailed to allocate cache log.\n");
}
void
CacheLogPrintPath(PRLogModuleLevel level, const char * format, nsIFile * item)
{
nsAutoCString path;
nsresult rv = item->GetNativePath(path);
if (NS_SUCCEEDED(rv)) {
MOZ_LOG(gCacheLog, level, (format, path.get()));
} else {
MOZ_LOG(gCacheLog, level, ("GetNativePath failed: %x", rv));
}
}
uint32_t
SecondsFromPRTime(PRTime prTime)
{
int64_t microSecondsPerSecond = PR_USEC_PER_SEC;
return uint32_t(prTime / microSecondsPerSecond);
}
PRTime
PRTimeFromSeconds(uint32_t seconds)
{
int64_t intermediateResult = seconds;
PRTime prTime = intermediateResult * PR_USEC_PER_SEC;
return prTime;
}
nsresult
ClientIDFromCacheKey(const nsACString& key, char ** result)
{
nsresult rv = NS_OK;
*result = nullptr;
nsReadingIterator<char> colon;
key.BeginReading(colon);
nsReadingIterator<char> start;
key.BeginReading(start);
nsReadingIterator<char> end;
key.EndReading(end);
if (FindCharInReadable(':', colon, end)) {
*result = ToNewCString( Substring(start, colon));
if (!*result) rv = NS_ERROR_OUT_OF_MEMORY;
} else {
NS_ASSERTION(false, "FindCharInRead failed to find ':'");
rv = NS_ERROR_UNEXPECTED;
}
return rv;
}
nsresult
ClientKeyFromCacheKey(const nsCString& key, nsACString &result)
{
nsresult rv = NS_OK;
nsReadingIterator<char> start;
key.BeginReading(start);
nsReadingIterator<char> end;
key.EndReading(end);
if (FindCharInReadable(':', start, end)) {
++start; // advance past clientID ':' delimiter
result.Assign(Substring(start, end));
} else {
NS_ASSERTION(false, "FindCharInRead failed to find ':'");
rv = NS_ERROR_UNEXPECTED;
result.Truncate(0);
}
return rv;
}