| /* |
| libparted - a library for manipulating disk partitions |
| Copyright (C) 2001, 2002 Free Software Foundation, Inc. |
| |
| 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 2 of the License, 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, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| /** |
| * \addtogroup PedTimer |
| * @{ |
| */ |
| |
| /** \file timer.h */ |
| |
| #ifndef PED_TIMER_H_INCLUDED |
| #define PED_TIMER_H_INCLUDED |
| |
| #include <time.h> |
| |
| typedef struct _PedTimer PedTimer; |
| |
| typedef void PedTimerHandler (PedTimer* timer, void* context); |
| |
| /* |
| * Structure keeping track of progress and time |
| */ |
| struct _PedTimer { |
| float frac; /**< fraction of operation done */ |
| time_t start; /**< time of start of op */ |
| time_t now; /**< time of last update (now!) */ |
| time_t predicted_end; /**< expected finish time */ |
| const char* state_name; /**< eg: "copying data" */ |
| PedTimerHandler* handler; /**< who to notify on updates */ |
| void* context; /**< context to pass to handler */ |
| }; |
| |
| extern PedTimer* ped_timer_new (PedTimerHandler* handler, void* context); |
| extern void ped_timer_destroy (PedTimer* timer); |
| |
| /* a nested timer automatically notifies it's parent. You should only |
| * create one when you are going to use it (not before) |
| */ |
| extern PedTimer* ped_timer_new_nested (PedTimer* parent, float nest_frac); |
| extern void ped_timer_destroy_nested (PedTimer* timer); |
| |
| extern void ped_timer_touch (PedTimer* timer); |
| extern void ped_timer_reset (PedTimer* timer); |
| extern void ped_timer_update (PedTimer* timer, float new_frac); |
| extern void ped_timer_set_state_name (PedTimer* timer, const char* state_name); |
| |
| #endif /* PED_TIMER_H_INCLUDED */ |
| |
| |
| /** @} */ |