DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
LocalContext.hpp
Go to the documentation of this file.
1/*
2 * LocalContext.h
3 * ers
4 *
5 * Created by Serguei Kolos on 26.11.05.
6 * Copyright 2004 CERN. All rights reserved.
7 *
8 */
9
10#ifndef ERS_LOCAL_CONTEXT_H
11#define ERS_LOCAL_CONTEXT_H
12
18#include <sys/types.h>
19#include <unistd.h>
20
21#include <ers/Context.hpp>
22
23#ifdef DUNEDAQ_PACKAGE_NAME
24#define ERS_PACKAGE DUNEDAQ_PACKAGE_NAME
25#else
26#define ERS_PACKAGE "unknown"
27#endif
28
29namespace ers
30{
32 {
33 LocalProcessContext( const char * const host_name,
34 const char * const cwd,
35 int uid,
36 const char * const uname )
37 : m_host_name( host_name ),
38 m_cwd( cwd ),
39 m_uid( uid ),
40 m_uname( uname )
41 { ; }
42
43 const char * const m_host_name;
44 const char * const m_cwd;
45 const int m_uid;
46 const char * const m_uname;
47 };
48
49 class LocalContext : public Context
50 {
51 public:
52
60 LocalContext( const char * package_name,
61 const char * filename,
62 int line_number,
63 const char * function_name,
64 bool debug = false);
65
66 virtual ~LocalContext()
67 { ; }
68
69 virtual Context * clone() const
70 { return new LocalContext( *this ); }
71
72 const char * cwd() const
73 { return c_process.m_cwd; }
74
75 const char * file_name() const
76 { return m_file_name; }
77
78 const char * function_name() const
79 { return m_function_name; }
80
81 const char * host_name() const
82 { return c_process.m_host_name; }
83
84 int line_number() const
85 { return m_line_number; }
86
87 const char * package_name() const
88 { return m_package_name; }
89
90 pid_t process_id() const
91 { return ::getpid(); }
92
93 pid_t thread_id() const
94 { return m_thread_id; }
95
96 void * const * stack_symbols() const
97 { return m_stack; }
98
99 int stack_size() const
100 { return m_stack_size; }
101
102 int user_id() const
103 { return c_process.m_uid; }
104
105 const char * user_name() const
106 { return c_process.m_uname; }
107
108 const char * application_name() const;
110 static void resetProcessContext();
111
112 private:
114
115 const char * const m_package_name;
116 const char * const m_file_name;
117 const char * const m_function_name;
118 const int m_line_number;
119 const pid_t m_thread_id;
120 void * m_stack[64];
121 const int m_stack_size;
122 };
123}
124
127#define ERS_HERE_DEBUG ers::LocalContext( ERS_PACKAGE, __FILE__, __LINE__, __PRETTY_FUNCTION__, true )
128
129#ifndef ERS_NO_DEBUG
130#define ERS_HERE ERS_HERE_DEBUG
131#else
132#define ERS_HERE ers::LocalContext( ERS_PACKAGE, __FILE__, __LINE__, __PRETTY_FUNCTION__, false)
133#endif
134
135#endif
136
An abstract interface to access an Issue context.
Definition Context.hpp:30
const char * application_name() const
const char * function_name() const
int line_number() const
const char *const m_file_name
const char * user_name() const
int stack_size() const
const char * host_name() const
const char * file_name() const
virtual ~LocalContext()
pid_t process_id() const
const char *const m_function_name
const char * package_name() const
virtual Context * clone() const
pid_t thread_id() const
LocalContext(const char *package_name, const char *filename, int line_number, const char *function_name, bool debug=false)
const pid_t m_thread_id
const char * cwd() const
static void resetProcessContext()
static const LocalProcessContext c_process
const char *const m_package_name
void *const * stack_symbols() const
void debug(const Issue &issue, int level=debug_level())
Definition ers.hpp:74
const char *const m_cwd
const char *const m_host_name
const char *const m_uname
LocalProcessContext(const char *const host_name, const char *const cwd, int uid, const char *const uname)