libdballe 9.13
traced.h
1#ifndef DBALLE_FORTRAN_TRACED_H
2#define DBALLE_FORTRAN_TRACED_H
3
4#include <dballe/fortran/api.h>
5#include <memory>
6
7namespace dballe {
8namespace fortran {
9
10struct Tracer
11{
12 virtual ~Tracer() {}
13
14 virtual std::unique_ptr<API> wrap_api(int handle,
15 std::unique_ptr<API> api) = 0;
16
17 std::unique_ptr<API> begin(int dbahandle, int handle,
18 const DBConnectOptions& options,
19 const char* anaflag, const char* dataflag,
20 const char* attrflag);
21 std::unique_ptr<API> begin_messages(int handle, const char* filename,
22 const char* mode, const char* type);
23
24 virtual void log_connect_url(int handle, const char* chosen_dsn) = 0;
25 virtual void log_disconnect(int handle) = 0;
26 virtual void log_begin(int dbahandle, int handle, const char* anaflag,
27 const char* dataflag, const char* attrflag) = 0;
28 virtual void log_begin_messages(int handle, const char* filename,
29 const char* mode, const char* type) = 0;
30
31 static std::unique_ptr<Tracer> create();
32};
33
34struct FileTracer;
35
36struct TracedAPI : public API
37{
38 FileTracer& tracer;
39 std::string name;
40 std::unique_ptr<API> api;
41
42 TracedAPI(FileTracer& tracer, const std::string& name,
43 std::unique_ptr<API> api);
44
45 void reinit_db(const char* repinfofile = 0) override;
46 void remove_all() override;
47 int enqi(const char* param) override;
48 signed char enqb(const char* param) override;
49 float enqr(const char* param) override;
50 double enqd(const char* param) override;
51 bool enqc(const char* param, char* res, unsigned res_len) override;
52 void seti(const char* param, int value) override;
53 void setb(const char* param, signed char value) override;
54 void setr(const char* param, float value) override;
55 void setd(const char* param, double value) override;
56 void setc(const char* param, const char* value) override;
57 void set_station_context() override;
58 void enqlevel(int& ltype1, int& l1, int& ltype2, int& l2) override;
59 void setlevel(int ltype1, int l1, int ltype2, int l2) override;
60 void enqtimerange(int& pind, int& p1, int& p2) override;
61 void settimerange(int pind, int p1, int p2) override;
62 void enqdate(int& year, int& month, int& day, int& hour, int& min,
63 int& sec) override;
64 void setdate(int year, int month, int day, int hour, int min,
65 int sec) override;
66 void setdatemin(int year, int month, int day, int hour, int min,
67 int sec) override;
68 void setdatemax(int year, int month, int day, int hour, int min,
69 int sec) override;
70 void unset(const char* param) override;
71 void unsetall() override;
72 void unsetb() override;
73 int query_stations() override;
74 void next_station() override;
75 int query_data() override;
76 wreport::Varcode next_data() override;
77 void insert_data() override;
78 void remove_data() override;
79 int query_attributes() override;
80 const char* next_attribute() override;
81 void insert_attributes() override;
82 void remove_attributes() override;
83 void messages_open_input(const char* filename, const char* mode,
84 Encoding format, bool simplified = true) override;
85 void messages_open_output(const char* filename, const char* mode,
86 Encoding format) override;
87 bool messages_read_next() override;
88 void messages_write_next(const char* template_name = 0) override;
89 const char* describe_level(int ltype1, int l1, int ltype2, int l2) override;
90 const char* describe_timerange(int ptype, int p1, int p2) override;
91 const char* describe_var(const char* varcode, const char* value) override;
92 void commit() override;
93};
94
95} // namespace fortran
96} // namespace dballe
97
98#endif
Options controlling how to connect to a database.
Definition db.h:18
C++ implementation for the Fortran API.
Definition api.h:16
Definition traced.h:11