This file is indexed.

/usr/include/simgrid/s4u/file.hpp is in libsimgrid-dev 3.14.159-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/* Copyright (c) 2006-2015. The SimGrid Team. All rights reserved.          */

/* This program is free software; you can redistribute it and/or modify it
 * under the terms of the license (GNU LGPL) which comes with this package. */

#ifndef SIMGRID_S4U_FILE_HPP
#define SIMGRID_S4U_FILE_HPP

#include <xbt/base.h>

#include <simgrid/simix.h>

namespace simgrid {
namespace s4u {

class Actor;
class Storage;

/** @brief A simulated file
 *
 * Used to simulate the time it takes to access to a file, but does not really store any information.
 *
 * They are located on @ref simgrid::s4u::Storage that are accessed from a given @ref simgrid::s4u::Host through mountpoints.
 * For now, you cannot change the mountpoints programatically, and must declare them from your platform file.
 */
XBT_PUBLIC_CLASS File {
public:
  File(const char *fullpath, void* userdata);
  ~File();

  /** Retrieves the path to the file */
  const char *path() { return path_;}

  /** Simulates a read action. Returns the size of data actually read
   *
   *  FIXME: reading from a remotely mounted disk is not implemented yet.
   *  Any storage is considered as local, and no network communication ever occur.
   */
  sg_size_t read(sg_size_t size);
  /** Simulates a write action. Returns the size of data actually written.
   *
   *  FIXME: reading from a remotely mounted disk is not implemented yet.
   *  Any storage is considered as local, and no network communication ever occur.
   */
  sg_size_t write(sg_size_t size);

  /** Allows to store user data on that host */
  void setUserdata(void *data) {userdata_ = data;}
  /** Retrieves the previously stored data */
  void* userdata() {return userdata_;}

  /** Retrieve the datasize */
  sg_size_t size();

  /** Sets the file head to the given position. */
  void seek(sg_size_t pos);
  /** Retrieves the current file position */
  sg_size_t tell();

  /** Rename a file
   *
   * WARNING: It is forbidden to move the file to another mount point */
  void move(const char*fullpath);

  /** Remove a file from disk */
  void unlink();

  /* FIXME: add these to the S4U API:
  XBT_PUBLIC(const char *) MSG_file_get_name(msg_file_t file);
  XBT_PUBLIC(msg_error_t) MSG_file_rcopy(msg_file_t fd, msg_host_t host, const char* fullpath);
  XBT_PUBLIC(msg_error_t) MSG_file_rmove(msg_file_t fd, msg_host_t host, const char* fullpath);
  */

private:
  smx_file_t pimpl_ = nullptr;
  const char *path_ = nullptr;
  void *userdata_ = nullptr;
};

}} // namespace simgrid::s4u

#endif /* SIMGRID_S4U_HOST_HPP */