libsaria: Replace SaveTask and LoadTask
I put in a generic IOTask function. I'm sure this could eventually be expanded to open and pass the appropriate stream to functions using this task. Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
a9abe28d84
commit
aaeb4d8fba
|
@ -1,41 +1,13 @@
|
|||
#ifndef LIBSARIA_FILES_H
|
||||
#define LIBSARIA_FILES_H
|
||||
|
||||
#include <libsaria/idle.h>
|
||||
#include <libsaria/task.h>
|
||||
#include <libsaria/print.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <fstream>
|
||||
using namespace std;
|
||||
|
||||
class SaveTask : public IdleTask
|
||||
{
|
||||
private:
|
||||
void (*save_func)();
|
||||
void (*save_func_aux)(void *);
|
||||
void *save_aux;
|
||||
|
||||
public:
|
||||
SaveTask(void (*func)());
|
||||
SaveTask(void (*func)(void *), void *);
|
||||
~SaveTask();
|
||||
void run_task();
|
||||
};
|
||||
|
||||
class LoadTask : public IdleTask
|
||||
{
|
||||
private:
|
||||
void (*load_func)();
|
||||
void (*load_func_aux)(void *);
|
||||
void *load_aux;
|
||||
|
||||
public:
|
||||
LoadTask(void (*func)());
|
||||
LoadTask(void (*func)(void *), void *);
|
||||
~LoadTask();
|
||||
void run_task();
|
||||
};
|
||||
|
||||
class OutFile : public ofstream
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -1,17 +1,6 @@
|
|||
#ifndef LIBSARIA_IDLE_H
|
||||
#define LIBSARIA_IDLE_H
|
||||
|
||||
class IdleTask
|
||||
{
|
||||
public:
|
||||
IdleTask();
|
||||
virtual ~IdleTask() = 0;
|
||||
virtual void run_task() = 0;
|
||||
|
||||
void queue();
|
||||
void queue_front();
|
||||
};
|
||||
|
||||
namespace libsaria
|
||||
{
|
||||
namespace idle
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
#ifndef LIBSARIA_IDLE_TASK_H
|
||||
#define LIBSARIA_IDLE_TASK_H
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
class IdleTask
|
||||
{
|
||||
public:
|
||||
IdleTask();
|
||||
virtual ~IdleTask() = 0;
|
||||
virtual void run_task() = 0;
|
||||
|
||||
void queue();
|
||||
void queue_front();
|
||||
};
|
||||
|
||||
class IOTask : public IdleTask
|
||||
{
|
||||
private:
|
||||
void (*func)();
|
||||
void (*func_aux)(void *);
|
||||
void *aux;
|
||||
|
||||
public:
|
||||
IOTask(void (*)());
|
||||
IOTask(void (*)(void *), void *);
|
||||
~IOTask();
|
||||
void run_task();
|
||||
};
|
||||
|
||||
#endif /* LIBSARIA_IDLE_TASK_H */
|
|
@ -2,6 +2,7 @@
|
|||
#define LIBSARIA_IDLE_COMPONENT_H
|
||||
|
||||
#include <libsaria/idle.h>
|
||||
#include <libsaria/task.h>
|
||||
|
||||
namespace libsaria
|
||||
{
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (c) 2012 Bryan Schumaker.
|
||||
#include <libsaria/task.h>
|
||||
|
||||
IOTask::IOTask(void (*fn)())
|
||||
{
|
||||
func = fn;
|
||||
func_aux = NULL;
|
||||
aux = NULL;
|
||||
}
|
||||
|
||||
IOTask::IOTask(void (*fn)(void *), void *data)
|
||||
{
|
||||
func = NULL;
|
||||
func_aux = fn;
|
||||
aux = data;
|
||||
}
|
||||
|
||||
IOTask::~IOTask()
|
||||
{
|
||||
}
|
||||
|
||||
void IOTask::run_task()
|
||||
{
|
||||
if (func)
|
||||
func();
|
||||
else
|
||||
func_aux(aux);
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
* Manages the libsaria library save file
|
||||
*/
|
||||
|
||||
#include <libsaria/idle.h>
|
||||
#include <libsaria/task.h>
|
||||
#include <libsaria/library.h>
|
||||
#include <libsaria/libpath.h>
|
||||
#include "library.h"
|
||||
|
@ -31,7 +31,7 @@ namespace libsaria
|
|||
|
||||
void library::load()
|
||||
{
|
||||
LoadTask *task = new LoadTask(do_load);
|
||||
IOTask *task = new IOTask(do_load);
|
||||
task->queue();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// Copyright (c) 2011 Bryan Schumaker.
|
||||
#include <libsaria/path.h>
|
||||
#include <libsaria/task.h>
|
||||
#include <libsaria/index.h>
|
||||
#include <libsaria/libpath.h>
|
||||
#include <libsaria/print.h>
|
||||
|
@ -52,7 +53,7 @@ static ScanTask *scandir(string dir, libsaria::LibraryPath *lib_path, ScanTask *
|
|||
void ScanTask::run_task()
|
||||
{
|
||||
list<pair<string, sid_t> >::iterator it;
|
||||
SaveTask *save;
|
||||
IOTask *save;
|
||||
bool dirty = false;
|
||||
|
||||
for (it = files.begin(); it != files.end(); it++) {
|
||||
|
@ -66,7 +67,7 @@ void ScanTask::run_task()
|
|||
|
||||
if (dirty) {
|
||||
/* Save the library */
|
||||
save = new SaveTask(libsaria::library::save);
|
||||
save = new IOTask(libsaria::library::save);
|
||||
save->queue_front();
|
||||
|
||||
/* Bookkeeping for the UI */
|
||||
|
|
|
@ -2,58 +2,6 @@
|
|||
#include <libsaria/files.h>
|
||||
#include <libsaria/path.h>
|
||||
|
||||
SaveTask::SaveTask(void (*func)())
|
||||
{
|
||||
save_func = func;
|
||||
save_func_aux = NULL;
|
||||
save_aux = NULL;
|
||||
}
|
||||
|
||||
SaveTask::SaveTask(void (*func)(void *), void *aux)
|
||||
{
|
||||
save_func = NULL;
|
||||
save_func_aux = func;
|
||||
save_aux = aux;
|
||||
}
|
||||
|
||||
SaveTask::~SaveTask()
|
||||
{
|
||||
}
|
||||
|
||||
void SaveTask::run_task()
|
||||
{
|
||||
if (save_func)
|
||||
save_func();
|
||||
else
|
||||
save_func_aux(save_aux);
|
||||
}
|
||||
|
||||
LoadTask::LoadTask(void (*func)())
|
||||
{
|
||||
load_func = func;
|
||||
load_func_aux = NULL;
|
||||
load_aux = NULL;
|
||||
}
|
||||
|
||||
LoadTask::LoadTask(void (*func)(void *), void *aux)
|
||||
{
|
||||
load_func = NULL;
|
||||
load_func_aux= func;
|
||||
load_aux = aux;
|
||||
}
|
||||
|
||||
LoadTask::~LoadTask()
|
||||
{
|
||||
}
|
||||
|
||||
void LoadTask::run_task()
|
||||
{
|
||||
if (load_func)
|
||||
load_func();
|
||||
else
|
||||
load_func_aux(load_aux);
|
||||
}
|
||||
|
||||
OutFile::OutFile(string path)
|
||||
{
|
||||
string out_file = get_saria_dir() + "/" + path;
|
||||
|
|
|
@ -36,10 +36,12 @@ namespace libsaria
|
|||
|
||||
void Playlist::load()
|
||||
{
|
||||
IOTask *task;
|
||||
|
||||
if (filename == "")
|
||||
return;
|
||||
|
||||
LoadTask *task = new LoadTask(load_playlist, this);
|
||||
task = new IOTask(load_playlist, this);
|
||||
task->queue();
|
||||
}
|
||||
|
||||
|
@ -55,10 +57,12 @@ namespace libsaria
|
|||
|
||||
void Playlist::save()
|
||||
{
|
||||
IOTask *task;
|
||||
|
||||
if (filename == "")
|
||||
return;
|
||||
|
||||
SaveTask *task = new SaveTask(save_playlist, this);
|
||||
task = new IOTask(save_playlist, this);
|
||||
task->queue();
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
using namespace std;
|
||||
|
||||
#include <libsaria/queue.h>
|
||||
#include <libsaria/task.h>
|
||||
#include <libsaria/library.h>
|
||||
#include <libsaria/callback.h>
|
||||
#include <libsaria/playlist.h>
|
||||
|
@ -43,7 +44,7 @@ namespace libsaria
|
|||
|
||||
void queue::load()
|
||||
{
|
||||
LoadTask *task = new LoadTask(refresh);
|
||||
IOTask *task = new IOTask(refresh);
|
||||
task->queue();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue