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