GNU Radio Manual and C++ API Reference 3.8.5.0
The Free & Open Software Radio Ecosystem
 
Loading...
Searching...
No Matches
file_sink_base.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2004,2007,2008,2013 Free Software Foundation, Inc.
4 *
5 * This file is part of GNU Radio
6 *
7 * GNU Radio is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3, or (at your option)
10 * any later version.
11 *
12 * GNU Radio is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with GNU Radio; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street,
20 * Boston, MA 02110-1301, USA.
21 */
22
23#ifndef INCLUDED_GR_FILE_SINK_BASE_H
24#define INCLUDED_GR_FILE_SINK_BASE_H
25
26#include <gnuradio/blocks/api.h>
27#include <boost/thread.hpp>
28#include <cstdio>
29
30namespace gr {
31namespace blocks {
32
33/*!
34 * \brief Common base class for file sinks
35 */
37{
38protected:
39 FILE* d_fp; // current FILE pointer
40 FILE* d_new_fp; // new FILE pointer
41 bool d_updated; // is there a new FILE pointer?
43 boost::mutex d_mutex;
46
47protected:
48 file_sink_base(const char* filename, bool is_binary, bool append);
49
50public:
53
54 /*!
55 * \brief Open filename and begin output to it.
56 */
57 bool open(const char* filename);
58
59 /*!
60 * \brief Close current output file.
61 *
62 * Closes current output file and ignores any output until
63 * open is called to connect to another file.
64 */
65 void close();
66
67 /*!
68 * \brief if we've had an update, do it now.
69 */
70 void do_update();
71
72 /*!
73 * \brief turn on unbuffered writes for slower outputs
74 */
75 void set_unbuffered(bool unbuffered);
76};
77
78} /* namespace blocks */
79} /* namespace gr */
80
81#endif /* INCLUDED_GR_FILE_SINK_BASE_H */
Common base class for file sinks.
Definition file_sink_base.h:37
bool d_updated
Definition file_sink_base.h:41
bool open(const char *filename)
Open filename and begin output to it.
void close()
Close current output file.
void set_unbuffered(bool unbuffered)
turn on unbuffered writes for slower outputs
FILE * d_fp
Definition file_sink_base.h:39
bool d_unbuffered
Definition file_sink_base.h:44
bool d_is_binary
Definition file_sink_base.h:42
file_sink_base()
Definition file_sink_base.h:51
boost::mutex d_mutex
Definition file_sink_base.h:43
file_sink_base(const char *filename, bool is_binary, bool append)
FILE * d_new_fp
Definition file_sink_base.h:40
bool d_append
Definition file_sink_base.h:45
void do_update()
if we've had an update, do it now.
#define BLOCKS_API
Definition gr-blocks/include/gnuradio/blocks/api.h:30
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition basic_block.h:46