test/run_input, ...: RAII-style global initialization
This commit is contained in:
parent
4397fe3a13
commit
d2046de193
|
@ -36,6 +36,27 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
class GlobalInit {
|
||||||
|
const ScopeIOThread io_thread;
|
||||||
|
|
||||||
|
public:
|
||||||
|
GlobalInit() {
|
||||||
|
config_global_init();
|
||||||
|
#ifdef ENABLE_ARCHIVE
|
||||||
|
archive_plugin_init_all();
|
||||||
|
#endif
|
||||||
|
input_stream_global_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
~GlobalInit() {
|
||||||
|
input_stream_global_finish();
|
||||||
|
#ifdef ENABLE_ARCHIVE
|
||||||
|
archive_plugin_deinit_all();
|
||||||
|
#endif
|
||||||
|
config_global_finish();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dump_text_file(TextInputStream &is)
|
dump_text_file(TextInputStream &is)
|
||||||
{
|
{
|
||||||
|
@ -60,8 +81,6 @@ dump_input_stream(InputStreamPtr &&is)
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
try {
|
try {
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (argc != 2) {
|
if (argc != 2) {
|
||||||
fprintf(stderr, "Usage: run_input URI\n");
|
fprintf(stderr, "Usage: run_input URI\n");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
@ -69,37 +88,15 @@ try {
|
||||||
|
|
||||||
/* initialize MPD */
|
/* initialize MPD */
|
||||||
|
|
||||||
config_global_init();
|
const GlobalInit init;
|
||||||
|
|
||||||
const ScopeIOThread io_thread;
|
|
||||||
|
|
||||||
#ifdef ENABLE_ARCHIVE
|
|
||||||
archive_plugin_init_all();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
input_stream_global_init();
|
|
||||||
|
|
||||||
/* open the stream and dump it */
|
/* open the stream and dump it */
|
||||||
|
|
||||||
{
|
|
||||||
Mutex mutex;
|
Mutex mutex;
|
||||||
Cond cond;
|
Cond cond;
|
||||||
|
|
||||||
auto is = InputStream::OpenReady(argv[1], mutex, cond);
|
auto is = InputStream::OpenReady(argv[1], mutex, cond);
|
||||||
ret = dump_input_stream(std::move(is));
|
return dump_input_stream(std::move(is));
|
||||||
}
|
|
||||||
|
|
||||||
/* deinitialize everything */
|
|
||||||
|
|
||||||
input_stream_global_finish();
|
|
||||||
|
|
||||||
#ifdef ENABLE_ARCHIVE
|
|
||||||
archive_plugin_deinit_all();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
config_global_finish();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
LogError(e);
|
LogError(e);
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
|
@ -38,6 +38,27 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
class GlobalInit {
|
||||||
|
const ScopeIOThread io_thread;
|
||||||
|
|
||||||
|
public:
|
||||||
|
GlobalInit() {
|
||||||
|
config_global_init();
|
||||||
|
#ifdef ENABLE_ARCHIVE
|
||||||
|
archive_plugin_init_all();
|
||||||
|
#endif
|
||||||
|
input_stream_global_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
~GlobalInit() {
|
||||||
|
input_stream_global_finish();
|
||||||
|
#ifdef ENABLE_ARCHIVE
|
||||||
|
archive_plugin_deinit_all();
|
||||||
|
#endif
|
||||||
|
config_global_finish();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
tag_save(FILE *file, const Tag &tag)
|
tag_save(FILE *file, const Tag &tag)
|
||||||
{
|
{
|
||||||
|
@ -91,37 +112,14 @@ try {
|
||||||
|
|
||||||
/* initialize MPD */
|
/* initialize MPD */
|
||||||
|
|
||||||
config_global_init();
|
const GlobalInit init;
|
||||||
|
|
||||||
const ScopeIOThread io_thread;
|
|
||||||
|
|
||||||
#ifdef ENABLE_ARCHIVE
|
|
||||||
archive_plugin_init_all();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
input_stream_global_init();
|
|
||||||
|
|
||||||
/* open the stream and dump it */
|
/* open the stream and dump it */
|
||||||
|
|
||||||
int ret;
|
|
||||||
{
|
|
||||||
Mutex mutex;
|
Mutex mutex;
|
||||||
Cond cond;
|
Cond cond;
|
||||||
auto is = InputStream::OpenReady(argv[1], mutex, cond);
|
auto is = InputStream::OpenReady(argv[1], mutex, cond);
|
||||||
ret = dump_input_stream(is.get());
|
return dump_input_stream(is.get());
|
||||||
}
|
|
||||||
|
|
||||||
/* deinitialize everything */
|
|
||||||
|
|
||||||
input_stream_global_finish();
|
|
||||||
|
|
||||||
#ifdef ENABLE_ARCHIVE
|
|
||||||
archive_plugin_deinit_all();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
config_global_finish();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
LogError(e);
|
LogError(e);
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
|
@ -35,6 +35,27 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
class GlobalInit {
|
||||||
|
const ScopeIOThread io_thread;
|
||||||
|
|
||||||
|
public:
|
||||||
|
GlobalInit() {
|
||||||
|
config_global_init();
|
||||||
|
#ifdef ENABLE_ARCHIVE
|
||||||
|
archive_plugin_init_all();
|
||||||
|
#endif
|
||||||
|
input_stream_global_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
~GlobalInit() {
|
||||||
|
input_stream_global_finish();
|
||||||
|
#ifdef ENABLE_ARCHIVE
|
||||||
|
archive_plugin_deinit_all();
|
||||||
|
#endif
|
||||||
|
config_global_finish();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class MyArchiveVisitor final : public ArchiveVisitor {
|
class MyArchiveVisitor final : public ArchiveVisitor {
|
||||||
public:
|
public:
|
||||||
virtual void VisitArchiveEntry(const char *path_utf8) override {
|
virtual void VisitArchiveEntry(const char *path_utf8) override {
|
||||||
|
@ -55,13 +76,7 @@ try {
|
||||||
|
|
||||||
/* initialize MPD */
|
/* initialize MPD */
|
||||||
|
|
||||||
config_global_init();
|
const GlobalInit init;
|
||||||
|
|
||||||
const ScopeIOThread io_thread;
|
|
||||||
|
|
||||||
archive_plugin_init_all();
|
|
||||||
|
|
||||||
input_stream_global_init();
|
|
||||||
|
|
||||||
/* open the archive and dump it */
|
/* open the archive and dump it */
|
||||||
|
|
||||||
|
@ -79,14 +94,6 @@ try {
|
||||||
file->Visit(visitor);
|
file->Visit(visitor);
|
||||||
file->Close();
|
file->Close();
|
||||||
|
|
||||||
/* deinitialize everything */
|
|
||||||
|
|
||||||
input_stream_global_finish();
|
|
||||||
|
|
||||||
archive_plugin_deinit_all();
|
|
||||||
|
|
||||||
config_global_finish();
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
LogError(e);
|
LogError(e);
|
||||||
|
|
Loading…
Reference in New Issue