/* Copyright (C) 2021-2024 Free Software Foundation, Inc.
   Contributed by Oracle.

   This file is part of GNU Binutils.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */

#ifndef _FILEDATA_H
#define _FILEDATA_H

#include "gp-defs.h"
#include "gp-time.h"

#include "vec.h"
#include "data_pckts.h"
#include "Histable.h"

#define FSTYPESZ  16

#define VIRTUAL_FD_TOTAL    0
#define VIRTUAL_FD_STDIN    1
#define VIRTUAL_FD_STDOUT   2
#define VIRTUAL_FD_STDERR   3
#define VIRTUAL_FD_OTHERIO  4
#define VIRTUAL_FD_NONE     -1

#define STDIN_FD            0
#define STDOUT_FD           1
#define STDERR_FD           2
#define OTHERIO_FD          -1

#define OTHERIO_FILENAME    "<Other IO activity>"
#define STDIN_FILENAME      "<stdin>"
#define STDOUT_FILENAME     "<stdout>"
#define STDERR_FILENAME     "<stderr>"
#define TOTAL_FILENAME      NTXT("<Total>")
#define UNKNOWNFD_FILENAME  "<pipe(), socket(), or other fds>"

#define _1KB        1024
#define _8KB        8192
#define _32KB       32768
#define _128KB      131072
#define _256KB      262144
#define _512KB      524288
#define _1000KB     1048576
#define _10MB       10485760
#define _100MB      104857600
#define _1GB        1073741824
#define _10GB       10737418240
#define _100GB      107374182400
#define _1TB        1099511627776
#define _10TB       10995116277760

class FileData : public Histable
{
  friend class IOActivity;
public:
  FileData (const char *fName);
  FileData (FileData *fData);
  ~FileData ();

  virtual char *get_name (Histable::NameFormat nfmt);
  virtual Histable *convertto (Histable_type, Histable* = NULL);

  char *get_raw_name (Histable::NameFormat nfmt);
  void setFsType (FileSystem_type fst);
  void setFsType (const char* fst);

  virtual Histable_type
  get_type ()
  {
    return histType;
  };

  virtual uint64_t
  get_addr ()
  {
    return virtualFd;
  };

  uint64_t
  get_index ()
  {
    return virtualFd;
  };

  void init ();

  char *
  getFileName ()
  {
    return fileName;
  }

  void
  addReadEvent (hrtime_t rt, int64_t nb)
  {
    readTime += rt;
    readBytes += nb;
    readCnt++;
  }

  hrtime_t
  getReadTime ()
  {
    return readTime;
  }

  int64_t
  getReadBytes ()
  {
    return readBytes;
  }

  int32_t
  getReadCnt ()
  {
    return readCnt;
  }

  void
  addWriteEvent (hrtime_t wt, int64_t nb)
  {
    writeTime += wt;
    writeBytes += nb;
    writeCnt++;
  }

  hrtime_t
  getWriteTime ()
  {
    return writeTime;
  }

  int64_t
  getWriteBytes ()
  {
    return writeBytes;
  }

  int32_t
  getWriteCnt ()
  {
    return writeCnt;
  }

  void
  addOtherEvent (hrtime_t ot)
  {
    otherTime += ot;
    otherCnt++;
  }

  hrtime_t
  getOtherTime ()
  {
    return otherTime;
  }

  int32_t
  getOtherCnt ()
  {
    return otherCnt;
  }

  void
  addErrorEvent (hrtime_t er)
  {
    errorTime += er;
    errorCnt++;
  }

  hrtime_t
  getErrorTime ()
  {
    return errorTime;
  }

  int32_t
  getErrorCnt ()
  {
    return errorCnt;
  }

  void setFileDesList (int fd);

  Vector<int> *
  getFileDesList ()
  {
    return fileDesList;
  }

  void
  setFileDes (int fd)
  {
    fileDes = fd;
  }

  int32_t
  getFileDes ()
  {
    return fileDes;
  }

  void setVirtualFds (int64_t vfd);

  Vector<int64_t> *
  getVirtualFds ()
  {
    return virtualFds;
  }

  char *
  getFsType ()
  {
    return fsType;
  }

  void
  setVirtualFd (int64_t vFd)
  {
    virtualFd = vFd;
  }

  int64_t
  getVirtualFd ()
  {
    return virtualFd;
  }

  void
  setHistType (Histable::Type hType)
  {
    histType = hType;
  }

  Histable::Type
  getHistType ()
  {
    return histType;
  }

  void setWriteStat (hrtime_t wt, int64_t nb);

  hrtime_t
  getWSlowestBytes ()
  {
    return wSlowestBytes;
  }

  int64_t
  getWSmallestBytes ()
  {
    return wSmallestBytes;
  }

  int64_t
  getWLargestBytes ()
  {
    return wLargestBytes;
  }

  int32_t
  getW0KB1KBCnt ()
  {
    return w0KB1KBCnt;
  }

  int32_t
  getW1KB8KBCnt ()
  {
    return w1KB8KBCnt;
  }

  int32_t
  getW8KB32KBCnt ()
  {
    return w8KB32KBCnt;
  }

  int32_t
  getW32KB128KBCnt ()
  {
    return w32KB128KBCnt;
  }

  int32_t
  getW128KB256KBCnt ()
  {
    return w128KB256KBCnt;
  }

  int32_t
  getW256KB512KBCnt ()
  {
    return w256KB512KBCnt;
  }

  int32_t
  getW512KB1000KBCnt ()
  {
    return w512KB1000KBCnt;
  }

  int32_t
  getW1000KB10MBCnt ()
  {
    return w1000KB10MBCnt;
  }

  int32_t
  getW10MB100MBCnt ()
  {
    return w10MB100MBCnt;
  }

  int32_t
  getW100MB1GBCnt ()
  {
    return w100MB1GBCnt;
  }

  int32_t
  getW1GB10GBCnt ()
  {
    return w1GB10GBCnt;
  }

  int32_t
  getW10GB100GBCnt ()
  {
    return w10GB100GBCnt;
  }

  int32_t
  getW100GB1TBCnt ()
  {
    return w100GB1TBCnt;
  }

  int32_t
  getW1TB10TBCnt ()
  {
    return w1TB10TBCnt;
  }

  void setReadStat (hrtime_t rt, int64_t nb);

  hrtime_t
  getRSlowestBytes ()
  {
    return rSlowestBytes;
  }

  int64_t
  getRSmallestBytes ()
  {
    return rSmallestBytes;
  }

  int64_t
  getRLargestBytes ()
  {
    return rLargestBytes;
  }

  int32_t
  getR0KB1KBCnt ()
  {
    return r0KB1KBCnt;
  }

  int32_t
  getR1KB8KBCnt ()
  {
    return r1KB8KBCnt;
  }

  int32_t
  getR8KB32KBCnt ()
  {
    return r8KB32KBCnt;
  }

  int32_t
  getR32KB128KBCnt ()
  {
    return r32KB128KBCnt;
  }

  int32_t
  getR128KB256KBCnt ()
  {
    return r128KB256KBCnt;
  }

  int32_t
  getR256KB512KBCnt ()
  {
    return r256KB512KBCnt;
  }

  int32_t
  getR512KB1000KBCnt ()
  {
    return r512KB1000KBCnt;
  }

  int32_t
  getR1000KB10MBCnt ()
  {
    return r1000KB10MBCnt;
  }

  int32_t
  getR10MB100MBCnt ()
  {
    return r10MB100MBCnt;
  }

  int32_t
  getR100MB1GBCnt ()
  {
    return r100MB1GBCnt;
  }

  int32_t
  getR1GB10GBCnt ()
  {
    return r1GB10GBCnt;
  }

  int32_t
  getR10GB100GBCnt ()
  {
    return r10GB100GBCnt;
  }

  int32_t
  getR100GB1TBCnt ()
  {
    return r100GB1TBCnt;
  }

  int32_t
  getR1TB10TBCnt ()
  {
    return r1TB10TBCnt;
  }

private:
  char *fileName;           // File name
  hrtime_t readTime;        // The Total time for read operations;
  hrtime_t writeTime;       // The Total time for write operations;
  hrtime_t otherTime;       // The Total time for other IO operations;
  hrtime_t errorTime;       // The Total time for failed IO operations;
  int64_t readBytes;        //The total bytes read
  int64_t writeBytes;       //The total bytes written
  int32_t readCnt;          // The read count
  int32_t writeCnt;         // The write count
  int32_t otherCnt;         // The other IO count
  int32_t errorCnt;         // The failed IO count
  Vector<int> *fileDesList; // The list of file descriptors
  Vector<int64_t> *virtualFds; // The list of file virtual descriptors
  char fsType[FSTYPESZ];    // The file system type
  int64_t virtualFd;        // The virtual file descriptor
  int32_t fileDes;          // The file descriptor
  Histable::Type histType;  // The Histable type: IOACTFILE, IOACTVFD, ...

  // Write statistics
  hrtime_t wSlowestBytes;
  int64_t wSmallestBytes;
  int64_t wLargestBytes;
  int32_t w0KB1KBCnt;
  int32_t w1KB8KBCnt;
  int32_t w8KB32KBCnt;
  int32_t w32KB128KBCnt;
  int32_t w128KB256KBCnt;
  int32_t w256KB512KBCnt;
  int32_t w512KB1000KBCnt;
  int32_t w1000KB10MBCnt;
  int32_t w10MB100MBCnt;
  int32_t w100MB1GBCnt;
  int32_t w1GB10GBCnt;
  int32_t w10GB100GBCnt;
  int32_t w100GB1TBCnt;
  int32_t w1TB10TBCnt;

  // Read statistics
  hrtime_t rSlowestBytes;
  int64_t rSmallestBytes;
  int64_t rLargestBytes;
  int32_t r0KB1KBCnt;
  int32_t r1KB8KBCnt;
  int32_t r8KB32KBCnt;
  int32_t r32KB128KBCnt;
  int32_t r128KB256KBCnt;
  int32_t r256KB512KBCnt;
  int32_t r512KB1000KBCnt;
  int32_t r1000KB10MBCnt;
  int32_t r10MB100MBCnt;
  int32_t r100MB1GBCnt;
  int32_t r1GB10GBCnt;
  int32_t r10GB100GBCnt;
  int32_t r100GB1TBCnt;
  int32_t r1TB10TBCnt;
};

#endif
