7cfa648007e98965c193a27db42d5de80e224678
[anna.git] / functions.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite                           //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7
8
9 #ifndef anna_io_functions_hpp
10 #define anna_io_functions_hpp
11
12 #include <sys/stat.h>
13 #include <unistd.h>
14
15 #include <anna/config/defines.hpp>
16 #include <anna/core/RuntimeException.hpp>
17 #include <anna/core/util/Millisecond.hpp>
18
19 namespace anna {
20
21 namespace io {
22
23 /**
24    Grupo de metodos relacionadas con operaciones de entrada/salida
25 */
26 struct functions {
27   /**
28      Crea el arbol de directorios recibido como parametro.
29   */
30   static void mkdir(const std::string& path) noexcept(false);
31
32   /**
33      Indica si el PATH recibido como parametro existe o no.
34      \return Devuelve \em true si el PATH recibido como parametro existe o \em false
35      en otro caso.
36   */
37   static bool exists(const std::string& path) noexcept(false) { return exists(path.c_str()); }
38
39   /**
40      Indica si el PATH recibido como parametro existe o no.
41      \return Devuelve \em true si el PATH recibido como parametro existe o \em false
42      en otro caso.
43   */
44   static bool exists(const char* path) noexcept(false);
45
46   /**
47      Indica si el PATH recibido como parametro es un directorio o no.
48      \return Devuelve \em true si el PATH recibido como parametro es un directorio o \em false
49      en otro caso.
50   */
51   static bool isADirectory(const std::string& path) noexcept(false) { return isADirectory(path.c_str()); }
52
53   /**
54      Indica si el PATH recibido como parametro es un directorio o no.
55      \return Devuelve \em true si el PATH recibido como parametro es un directorio o \em false
56      en otro caso.
57   */
58   static bool isADirectory(const char* path) noexcept(false);
59
60   /**
61    * Devuelve el i-nodo asociado al nombre de fichero de recibido como parámetro.
62    * \param path Ruta completa del fichero a comprobar.
63    * \return El nº de i-nodo asociado al fichero
64    */
65   static ino_t getINode(const std::string& path) noexcept(false) { return getINode(path.c_str()); }
66
67   /**
68    * Devuelve el i-nodo asociado al nombre de fichero de recibido como parámetro.
69    * \param path Ruta completa del fichero a comprobar.
70    * \return El nº de i-nodo asociado al fichero
71    */
72   static ino_t getINode(const char* path) noexcept(false);
73
74   /**
75    * Espera a que haya actividad de entrada en el fd recibido como parámetro.
76    * \param fd File descriptor sobre el que vamos a comprobar la actividad.
77    * \param timeout Número máximo de milisegundos que puede quedar a la espera. Si vale 0 no realiza ninguna espera.
78    * \return \em true si el proceso detecta actividad o \em false si se cumplió el timeout sin recibir información.
79    */
80   static bool waitInput(const int fd, const Millisecond&) noexcept(false);
81 };
82
83 }
84 }
85 #endif