Skip to content
Snippets Groups Projects
Commit 54c953c9 authored by Ramin Yaghoubzadeh Torky's avatar Ramin Yaghoubzadeh Torky
Browse files

C++: logging level; iterator work

parent ec0c1b95
No related branches found
No related tags found
No related merge requests found
...@@ -55,6 +55,14 @@ typedef uint32_t IUEventType; ...@@ -55,6 +55,14 @@ typedef uint32_t IUEventType;
/// Bit mask for receiving all events /// Bit mask for receiving all events
#define IU_ALL_EVENTS 127 #define IU_ALL_EVENTS 127
/// Ipaaca (console) log levels
#define IPAACA_LOG_LEVEL_NONE 0
#define IPAACA_LOG_LEVEL_CRITICAL 1
#define IPAACA_LOG_LEVEL_ERROR 2
#define IPAACA_LOG_LEVEL_WARNING 3
#define IPAACA_LOG_LEVEL_INFO 4
#define IPAACA_LOG_LEVEL_DEBUG 5
/// Convert an int event type to a human-readable string /// Convert an int event type to a human-readable string
IPAACA_HEADER_EXPORT inline std::string iu_event_type_to_str(IUEventType type) IPAACA_HEADER_EXPORT inline std::string iu_event_type_to_str(IUEventType type)
{ {
......
...@@ -245,6 +245,7 @@ IPAACA_HEADER_EXPORT class PayloadIterator//{{{ ...@@ -245,6 +245,7 @@ IPAACA_HEADER_EXPORT class PayloadIterator//{{{
IPAACA_HEADER_EXPORT PayloadIterator(const PayloadIterator& iter); IPAACA_HEADER_EXPORT PayloadIterator(const PayloadIterator& iter);
IPAACA_HEADER_EXPORT PayloadIterator& operator++(); IPAACA_HEADER_EXPORT PayloadIterator& operator++();
IPAACA_HEADER_EXPORT std::pair<std::string, PayloadEntryProxy> operator*(); IPAACA_HEADER_EXPORT std::pair<std::string, PayloadEntryProxy> operator*();
IPAACA_HEADER_EXPORT std::shared_ptr<std::pair<std::string, PayloadEntryProxy> > operator->();
IPAACA_HEADER_EXPORT bool operator==(const PayloadIterator& ref); IPAACA_HEADER_EXPORT bool operator==(const PayloadIterator& ref);
IPAACA_HEADER_EXPORT bool operator!=(const PayloadIterator& ref); IPAACA_HEADER_EXPORT bool operator!=(const PayloadIterator& ref);
// constructor to create a new top-most parent proxy (from a payload key) // constructor to create a new top-most parent proxy (from a payload key)
......
...@@ -75,15 +75,19 @@ ...@@ -75,15 +75,19 @@
#endif #endif
#ifdef IPAACA_DEBUG_MESSAGES #ifdef IPAACA_DEBUG_MESSAGES
#define IPAACA_DEBUG(i) std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- " << i << std::endl; #define IPAACA_DEBUG(i) if (__ipaaca_static_option_log_level>=IPAACA_LOG_LEVEL_DEBUG) { std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- Debug: " << i << std::endl; }
#define IPAACA_INFO(i) std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- " << i << std::endl; #define IPAACA_INFO(i) if (__ipaaca_static_option_log_level>=IPAACA_LOG_LEVEL_INFO) { std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- Info: " << i << std::endl; }
#define IPAACA_WARNING(i) std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- WARNING: " << i << std::endl; #define IPAACA_WARNING(i) if (__ipaaca_static_option_log_level>=IPAACA_LOG_LEVEL_WARNING) { std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- WARNING: " << i << std::endl; }
#define IPAACA_IMPLEMENT_ME std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- IMPLEMENT ME" << std::endl; #define IPAACA_ERROR(i) if (__ipaaca_static_option_log_level>=IPAACA_LOG_LEVEL_ERROR) { std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- ERROR: " << i << std::endl; }
#define IPAACA_TODO(i) std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- TODO: " << i << std::endl; #define IPAACA_CRITICAL(i) if (__ipaaca_static_option_log_level>=IPAACA_LOG_LEVEL_CRITICAL) { std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- CRITICAL: " << i << std::endl; }
#define IPAACA_IMPLEMENT_ME if (__ipaaca_static_option_log_level>=IPAACA_LOG_LEVEL_INFO) { std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- IMPLEMENT_ME:" << std::endl; }
#define IPAACA_TODO(i) if (__ipaaca_static_option_log_level>=IPAACA_LOG_LEVEL_INFO) { std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << "() -- TODO: " << i << std::endl; }
#else #else
#define IPAACA_DEBUG(i) ; #define IPAACA_DEBUG(i) ;
#define IPAACA_INFO(i) ; #define IPAACA_INFO(i) ;
#define IPAACA_WARNING(i) ; #define IPAACA_WARNING(i) ;
#define IPAACA_ERROR(i) ;
#define IPAACA_CRITICAL(i) ;
#define IPAACA_IMPLEMENT_ME ; #define IPAACA_IMPLEMENT_ME ;
#define IPAACA_TODO(i) ; #define IPAACA_TODO(i) ;
#endif #endif
...@@ -171,6 +175,7 @@ namespace ipaaca { ...@@ -171,6 +175,7 @@ namespace ipaaca {
// Actual initial values are set in ipaaca.cc // Actual initial values are set in ipaaca.cc
IPAACA_MEMBER_VAR_EXPORT extern std::string __ipaaca_static_option_default_payload_type; IPAACA_MEMBER_VAR_EXPORT extern std::string __ipaaca_static_option_default_payload_type;
IPAACA_MEMBER_VAR_EXPORT extern std::string __ipaaca_static_option_default_channel; IPAACA_MEMBER_VAR_EXPORT extern std::string __ipaaca_static_option_default_channel;
IPAACA_MEMBER_VAR_EXPORT extern unsigned int __ipaaca_static_option_log_level;
IPAACA_MEMBER_VAR_EXPORT Lock& logger_lock(); IPAACA_MEMBER_VAR_EXPORT Lock& logger_lock();
......
...@@ -96,7 +96,6 @@ void CommandLineParser::initialize_parser_defaults() ...@@ -96,7 +96,6 @@ void CommandLineParser::initialize_parser_defaults()
bool CommandLineParser::consume_library_option(const std::string& name, bool expect, const char* optarg) bool CommandLineParser::consume_library_option(const std::string& name, bool expect, const char* optarg)
{ {
IPAACA_DEBUG("Trying to consume " << name)
if (name=="ipaaca-payload-type") { if (name=="ipaaca-payload-type") {
std::string newtype = optarg; std::string newtype = optarg;
if (newtype=="MAP") newtype="STR"; if (newtype=="MAP") newtype="STR";
...@@ -111,10 +110,31 @@ bool CommandLineParser::consume_library_option(const std::string& name, bool exp ...@@ -111,10 +110,31 @@ bool CommandLineParser::consume_library_option(const std::string& name, bool exp
IPAACA_DEBUG("Setting default channel " << newch) IPAACA_DEBUG("Setting default channel " << newch)
__ipaaca_static_option_default_channel = newch; __ipaaca_static_option_default_channel = newch;
} else if (name=="ipaaca-enable-logging") { } else if (name=="ipaaca-enable-logging") {
IPAACA_DEBUG("TODO: set ipaaca log level to " << optarg) std::string level(optarg);
IPAACA_IMPLEMENT_ME if ((level=="NONE") || (level=="SILENT")) {
IPAACA_DEBUG("Will set log level to NONE")
__ipaaca_static_option_log_level = IPAACA_LOG_LEVEL_NONE;
} else if (level=="DEBUG") {
__ipaaca_static_option_log_level = IPAACA_LOG_LEVEL_DEBUG;
IPAACA_DEBUG("Just set log level to DEBUG")
} else if (level=="INFO") {
IPAACA_DEBUG("Set log level to INFO")
__ipaaca_static_option_log_level = IPAACA_LOG_LEVEL_INFO;
} else if (level=="WARNING") {
IPAACA_DEBUG("Set log level to WARNING")
__ipaaca_static_option_log_level = IPAACA_LOG_LEVEL_WARNING;
} else if (level=="ERROR") {
IPAACA_DEBUG("Set log level to ERROR")
__ipaaca_static_option_log_level = IPAACA_LOG_LEVEL_ERROR;
} else if (level=="CRITICAL") {
IPAACA_DEBUG("Set log level to CRITICAL")
__ipaaca_static_option_log_level = IPAACA_LOG_LEVEL_CRITICAL;
} else {
IPAACA_WARNING("Unknown log level " << optarg)
IPAACA_WARNING("Valid levels are: NONE, DEBUG, INFO, WARNING, ERROR, CRITICAL ")
}
} else if (name=="rsb-enable-logging") { } else if (name=="rsb-enable-logging") {
IPAACA_DEBUG("TODO: set rsb log level to " << optarg) IPAACA_WARNING("Unimplemented option ignored: " << name)
IPAACA_IMPLEMENT_ME IPAACA_IMPLEMENT_ME
} else { } else {
return false; return false;
......
...@@ -39,7 +39,26 @@ ...@@ -39,7 +39,26 @@
using namespace rapidjson; using namespace rapidjson;
using namespace std; using namespace std;
int json_testbed_main(int argc, char** argv) int iterators_main(int argc, char** argv)//{{{
{
std::string json_source("[\"old\",2,3,{\"key1\":\"value1\", \"key2\":\"value2\"}]");
ipaaca::PayloadDocumentEntry::ptr entry = ipaaca::PayloadDocumentEntry::from_json_string_representation(json_source);
ipaaca::FakeIU::ptr iu = ipaaca::FakeIU::create();
iu->add_fake_payload_item("a", entry);
iu->payload()["b"] = "simpleString";
iu->payload()["c"] = "anotherSimpleString";
std::cout << "Iterate over payload" << std::endl;
for (auto it = iu->payload().begin(); it != iu->payload().end(); ++it) {
std::cout << " " << it->first << " -> " << it->second << std::endl;
}
return 0;
}
//}}}
int json_testbed_main(int argc, char** argv)//{{{
{ {
std::string json_source("[\"old\",2,3,4]"); std::string json_source("[\"old\",2,3,4]");
ipaaca::PayloadDocumentEntry::ptr entry = ipaaca::PayloadDocumentEntry::from_json_string_representation(json_source); ipaaca::PayloadDocumentEntry::ptr entry = ipaaca::PayloadDocumentEntry::from_json_string_representation(json_source);
...@@ -53,7 +72,6 @@ int json_testbed_main(int argc, char** argv) ...@@ -53,7 +72,6 @@ int json_testbed_main(int argc, char** argv)
iu->payload()["c"] = "simpleString"; iu->payload()["c"] = "simpleString";
auto proxy = iu->payload()["a"][3]; auto proxy = iu->payload()["a"][3];
std::cout << proxy << std::endl;
std::cout << "IU payload before: " << iu->payload() << std::endl; std::cout << "IU payload before: " << iu->payload() << std::endl;
std::cout << "Entry before: " << entry << std::endl; std::cout << "Entry before: " << entry << std::endl;
...@@ -74,9 +92,9 @@ int json_testbed_main(int argc, char** argv) ...@@ -74,9 +92,9 @@ int json_testbed_main(int argc, char** argv)
return 0; return 0;
} }
//}}}
int fakeiu_main(int argc, char** argv)//{{{
int fakeiu_main(int argc, char** argv)
{ {
//if (argc<2) { //if (argc<2) {
// std::cout << "Please provide json content as the first argument." << std::endl; // std::cout << "Please provide json content as the first argument." << std::endl;
...@@ -198,20 +216,11 @@ int fakeiu_main(int argc, char** argv) ...@@ -198,20 +216,11 @@ int fakeiu_main(int argc, char** argv)
for (auto& kv: pl_flat) { for (auto& kv: pl_flat) {
std::cout << " " << std::left << std::setw(15) << (kv.first+": ") << kv.second << std::endl; std::cout << " " << std::left << std::setw(15) << (kv.first+": ") << kv.second << std::endl;
} }
/*{
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
entry->document.Accept(writer);
std::string docstring = buffer.GetString();
std::cout << "Final document: " << docstring << std::endl;
}*/
// Done
return 0; return 0;
} }
//}}}
int legacy_iu_main(int argc, char** argv)//{{{
int legacy_iu_main(int argc, char** argv)
{ {
// produce and fill a new and a legacy IU with identical contents // produce and fill a new and a legacy IU with identical contents
...@@ -221,7 +230,7 @@ int legacy_iu_main(int argc, char** argv) ...@@ -221,7 +230,7 @@ int legacy_iu_main(int argc, char** argv)
}); });
std::cout << "--- Create IUs with category jsonTest" << std::endl; std::cout << "--- Create IUs with category jsonTest" << std::endl;
ipaaca::IU::ptr iu1 = ipaaca::IU::create("jsonTest"); ipaaca::IU::ptr iu1 = ipaaca::IU::create("jsonTest");
ipaaca::IU::ptr iu2 = ipaaca::IU::create("jsonTest", "STR"); ipaaca::IU::ptr iu2 = ipaaca::IU::create("jsonTest", "STR"); // explicity request old payload
std::map<std::string, long> newmap = { {"fifty", 50}, {"ninety-nine", 99} }; std::map<std::string, long> newmap = { {"fifty", 50}, {"ninety-nine", 99} };
std::cout << "--- Set map" << std::endl; std::cout << "--- Set map" << std::endl;
iu1->payload()["map"] = newmap; iu1->payload()["map"] = newmap;
...@@ -236,8 +245,9 @@ int legacy_iu_main(int argc, char** argv) ...@@ -236,8 +245,9 @@ int legacy_iu_main(int argc, char** argv)
sleep(5); sleep(5);
return 0; return 0;
} }
//}}}
int iu_main(int argc, char** argv) int iu_main(int argc, char** argv)//{{{
{ {
ipaaca::InputBuffer::ptr ib = ipaaca::InputBuffer::create("jsonTestReceiver", "jsonTest"); ipaaca::InputBuffer::ptr ib = ipaaca::InputBuffer::create("jsonTestReceiver", "jsonTest");
ib->register_handler([](ipaaca::IUInterface::ptr iu, ipaaca::IUEventType event_type, bool local) { ib->register_handler([](ipaaca::IUInterface::ptr iu, ipaaca::IUEventType event_type, bool local) {
...@@ -285,13 +295,15 @@ int iu_main(int argc, char** argv) ...@@ -285,13 +295,15 @@ int iu_main(int argc, char** argv)
std::cout << "--- Terminating " << std::endl; std::cout << "--- Terminating " << std::endl;
return 0; return 0;
} }
//}}}
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
ipaaca::CommandLineParser::ptr parser = ipaaca::CommandLineParser::create(); ipaaca::CommandLineParser::ptr parser = ipaaca::CommandLineParser::create();
ipaaca::CommandLineOptions::ptr options = parser->parse(argc, argv); ipaaca::CommandLineOptions::ptr options = parser->parse(argc, argv);
return json_testbed_main(argc, argv); return iterators_main(argc, argv);
//return json_testbed_main(argc, argv);
//return legacy_iu_main(argc, argv); //return legacy_iu_main(argc, argv);
//return fakeiu_main(argc, argv); //return fakeiu_main(argc, argv);
//return iu_main(argc, argv); //return iu_main(argc, argv);
......
...@@ -728,6 +728,12 @@ IPAACA_EXPORT std::pair<std::string, PayloadEntryProxy> PayloadIterator::operato ...@@ -728,6 +728,12 @@ IPAACA_EXPORT std::pair<std::string, PayloadEntryProxy> PayloadIterator::operato
if (raw_iterator == _payload->_document_store.end()) throw PayloadIteratorInvalidError(); if (raw_iterator == _payload->_document_store.end()) throw PayloadIteratorInvalidError();
return std::pair<std::string, PayloadEntryProxy>(raw_iterator->first, PayloadEntryProxy(_payload, raw_iterator->first)); return std::pair<std::string, PayloadEntryProxy>(raw_iterator->first, PayloadEntryProxy(_payload, raw_iterator->first));
} }
IPAACA_EXPORT std::shared_ptr<std::pair<std::string, PayloadEntryProxy> > PayloadIterator::operator->()
{
if (_payload->revision_changed(reference_payload_revision)) throw PayloadIteratorInvalidError();
if (raw_iterator == _payload->_document_store.end()) throw PayloadIteratorInvalidError();
return std::make_shared<std::pair<std::string, PayloadEntryProxy> >(raw_iterator->first, PayloadEntryProxy(_payload, raw_iterator->first));
}
IPAACA_EXPORT bool PayloadIterator::operator==(const PayloadIterator& ref) IPAACA_EXPORT bool PayloadIterator::operator==(const PayloadIterator& ref)
{ {
......
...@@ -74,6 +74,7 @@ IPAACA_EXPORT std::string generate_uuid_string()//{{{ ...@@ -74,6 +74,7 @@ IPAACA_EXPORT std::string generate_uuid_string()//{{{
IPAACA_EXPORT std::string __ipaaca_static_option_default_payload_type("JSON"); IPAACA_EXPORT std::string __ipaaca_static_option_default_payload_type("JSON");
IPAACA_EXPORT std::string __ipaaca_static_option_default_channel("default"); IPAACA_EXPORT std::string __ipaaca_static_option_default_channel("default");
IPAACA_EXPORT unsigned int __ipaaca_static_option_log_level(IPAACA_LOG_LEVEL_WARNING);
/* /*
void init_inprocess_too() { void init_inprocess_too() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment