ICP  1
instapi_utils.h
Go to the documentation of this file.
1 #ifndef INSTAPI_UTILS
2 #define INSTAPI_UTILS
3 
4 #include "../instapi_lib/instapi_lib.h"
5 
6 // it is not recommended to use AtlReportError() in a catch() hence we have to copy
7 // ex.what() to a string and use this function
8 template <class T>
9 HRESULT reportError(T* obj, const std::string& errmsg)
10 {
11  if (errmsg.empty())
12  {
13  return S_OK;
14  }
15  else
16  {
17  AtlReportError(obj->GetObjectCLSID(), errmsg.c_str());
18  return E_FAIL;
19  }
20 }
21 
22 typedef boost::function<void(InstAPILib*)> instapi_lib_call_t;
23 
24 template <class T>
25 HRESULT callInstAPILib(T* obj, instapi_lib_call_t func)
26 {
27  std::string errmsg;
28  try
29  {
30  InstAPILib* the_api = inst_api.get();
31  func(the_api);
32  }
33  catch(const std::exception& ex)
34  {
35  errmsg = ex.what();
36  }
37  return reportError(obj, errmsg);
38 }
39 
40 extern Poco::SingletonHolder<InstAPILib> inst_api;
41 
42 extern Poco::Logger& createLogger(const std::string& name);
43 
44 // void setProperty()
45 // void getProoperty()
46 class MyChannel : public Poco::Channel
47 {
48  typedef std::list<Poco::Message> messages_t;
49  std::map<ULONG, messages_t> m_messages;
50  void close()
51  {
52  m_messages.clear();
53  }
54  void log(const Poco::Message& msg)
55  {
56  ULONG session_id = Poco::NumberParser::parse(msg["session_id"]);
57  m_messages[session_id].push_back(msg);
58  }
59  void getMessages(ULONG session_id)
60  {
61 
62  }
63  //void open();
64 };
65 
66 
67 
68 #endif /* INSTAPI_UTILS */
Poco::Logger & createLogger(const std::string &name)
Poco::SingletonHolder< InstAPILib > inst_api
void log(const Poco::Message &msg)
Definition: instapi_utils.h:54
HRESULT callInstAPILib(T *obj, instapi_lib_call_t func)
Definition: instapi_utils.h:25
void getMessages(ULONG session_id)
Definition: instapi_utils.h:59
std::list< Poco::Message > messages_t
Definition: instapi_utils.h:48
boost::function< void(InstAPILib *)> instapi_lib_call_t
Definition: instapi_utils.h:22
std::map< ULONG, messages_t > m_messages
Definition: instapi_utils.h:49
void close()
Definition: instapi_utils.h:50
HRESULT reportError(T *obj, const std::string &errmsg)
Definition: instapi_utils.h:9