// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// File error statistics gathering.

#ifndef NET_BASE_FILE_STREAM_METRICS_H_
#define NET_BASE_FILE_STREAM_METRICS_H_

namespace net {

enum FileErrorSource {
  FILE_ERROR_SOURCE_OPEN = 0,
  FILE_ERROR_SOURCE_WRITE,
  FILE_ERROR_SOURCE_READ,
  FILE_ERROR_SOURCE_SEEK,
  FILE_ERROR_SOURCE_FLUSH,
  FILE_ERROR_SOURCE_SET_EOF,
  FILE_ERROR_SOURCE_GET_SIZE,
  FILE_ERROR_SOURCE_CLOSE,
  FILE_ERROR_SOURCE_COUNT,
};

// UMA error statistics gathering.
// Put the error value into a bucket.
int GetFileErrorUmaBucket(int error);

// The largest bucket number, plus 1.
int MaxFileErrorUmaBucket();

// The highest error value we want to individually report.
int MaxFileErrorUmaValue();

// |error| is a platform-specific error (Windows or Posix).
// |source| indicates the operation that resulted in the error.
// |record| is a flag indicating that we are interested in this error.
void RecordFileError(int error, FileErrorSource source, bool record);

// Gets a description for the source of a file error.
const char* GetFileErrorSourceName(FileErrorSource source);

}  // namespace net

#endif  // NET_BASE_FILE_STREAM_METRICS_H_
