/*
* Copyright (c) 2014-2015 Enrico M. Crisostomo
*
* 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, see .
*/
/**
* @file
* @brief Header of the fsw::event class.
*
* @copyright Copyright (c) 2014-2015 Enrico M. Crisostomo
* @license GNU General Public License v. 3.0
* @author Enrico M. Crisostomo
* @version 1.8.0
*/
#ifndef FSW_EVENT_H
# define FSW_EVENT_H
# include
# include
# include
# include
# include "../c/cevent.h"
namespace fsw {
/**
* @brief Type representing a file change event.
*
* This class represents a file change event in the `libfswatch` API. An
* event contains:
*
* - The path.
* - The time the event was raised.
* - A vector of flags specifying the type of the event.
*/
class event {
public:
/**
* @brief Constructs an event.
*
* @param path The path the event refers to.
* @param evt_time The time the event was raised.
* @param flags The vector of flags specifying the type of the event.
*/
event(std::string path, time_t evt_time, std::vector flags);
/**
* @brief Destructs an event.
*
* This is a virtual destructor that performs no operations.
*/
virtual ~event();
/**
* @brief Returns the path of the event.
*
* @return The path of the event.
*/
std::string get_path() const;
/**
* @brief Returns the time of the event.
*
* @return The time of the event.
*/
time_t get_time() const;
/**
* @brief Returns the flags of the event.
*
* @return The flags of the event.
*/
std::vector get_flags() const;
/**
* @brief Get event flag by name.
*
* @param name The name of the event flag to look for.
* @return The event flag whose name is @p name, otherwise
* @exception libfsw_exception if no event flag is found.
*/
static fsw_event_flag get_event_flag_by_name(const std::string& name);
/**
* @brief Get the name of an event flag.
*
* @param flag The event flag.
* @return The name of @p flag.
* @exception libfsw_exception if no event flag is found.
*/
static std::string get_event_flag_name(const fsw_event_flag& flag);
private:
std::string path;
time_t evt_time;
std::vector evt_flags;
};
/**
* @brief Overload of the `<<` operator to print an event using `iostreams`.
*
* @param out A reference to the output stream.
* @param flag The flag to print.
* @return A reference to the stream.
*/
std::ostream& operator<<(std::ostream& out, const fsw_event_flag flag);
}
#endif /* FSW_EVENT_H */