Exemplo n.º 1
0
nsresult
ChunkSet::Read(nsIInputStream* aIn, uint32_t aNumElements)
{
    nsTArray<uint32_t> chunks(IO_BUFFER_SIZE);

    while (aNumElements != 0) {
        chunks.Clear();

        uint32_t numToRead = aNumElements > IO_BUFFER_SIZE ? IO_BUFFER_SIZE : aNumElements;

        nsresult rv = ReadTArray(aIn, &chunks, numToRead);

        if (NS_FAILED(rv)) {
            return rv;
        }

        aNumElements -= numToRead;

        for (uint32_t c : chunks) {
            rv = Set(c);

            if (NS_FAILED(rv)) {
                return rv;
            }
        }
    }

    return NS_OK;
}
Exemplo n.º 2
0
nsresult
LookupCache::ReadCompletions(nsIInputStream* aInputStream)
{
  if (!mHeader.numCompletions) {
    mCompletions.Clear();
    return NS_OK;
  }

  nsCOMPtr<nsISeekableStream> seekable = do_QueryInterface(aInputStream);
  nsresult rv = seekable->Seek(nsISeekableStream::NS_SEEK_SET, sizeof(Header));
  NS_ENSURE_SUCCESS(rv, rv);

  rv = ReadTArray(aInputStream, &mCompletions, mHeader.numCompletions);
  NS_ENSURE_SUCCESS(rv, rv);

  LOG(("Read %d completions", mCompletions.Length()));

  return NS_OK;
}