Julian Brost 
							
						 
					 
					
						
						
						
						
							
						
						
							1f15f0ff07 
							
						 
					 
					
						
						
							
							JsonEncoder: wrap writer for flushing  
						
						... 
						
						
						
						This commit intruduces a small helper class that wraps any writer and
provides a flush operation that performs the corresponding action if the
writer is an AsyncJsonWriter and does nothing otherwise. 
						
						
					 
					
						2025-07-11 16:10:22 +02:00 
						 
				 
			
				
					
						
							
							
								Yonas Habteab 
							
						 
					 
					
						
						
						
						
							
						
						
							cd1ab7548c 
							
						 
					 
					
						
						
							
							Rename AsyncJsonWriter::Flush() -> MayFlush() to reflect its usage  
						
						
						
						
					 
					
						2025-07-11 13:55:33 +02:00 
						 
				 
			
				
					
						
							
							
								Yonas Habteab 
							
						 
					 
					
						
						
						
						
							
						
						
							89418f38ee 
							
						 
					 
					
						
						
							
							JsonEncoder: let the serializer replace invalid UTF-8 characters  
						
						... 
						
						
						
						Replacing invalid UTF-8 characters beforehand by our selves doesn't make
any sense, the serializer can literally perform the same replacement ops
with the exact same Unicode replacement character (U+FFFD) on its own.
So, why not just use it directly? Instead of wasting memory on a temporary
`String` object to always UTF-8 validate every and each value, we just
use the serializer to directly to dump the replaced char (if any) into
the output writer. No memory waste, no fuss! 
						
						
					 
					
						2025-07-10 18:09:21 +02:00 
						 
				 
			
				
					
						
							
							
								Yonas Habteab 
							
						 
					 
					
						
						
						
						
							
						
						
							dad4c0889f 
							
						 
					 
					
						
						
							
							JsonEncoder: lock olock conditionally & flush output regularly  
						
						
						
						
					 
					
						2025-07-10 18:09:21 +02:00 
						 
				 
			
				
					
						
							
							
								Yonas Habteab 
							
						 
					 
					
						
						
						
						
							
						
						
							2461e0415d 
							
						 
					 
					
						
						
							
							Introduce JsonEncode helper function  
						
						... 
						
						
						
						It's just a wrapper around the `JsonEncoder` class to simplify its usage. 
						
						
					 
					
						2025-07-10 18:09:21 +02:00 
						 
				 
			
				
					
						
							
							
								Yonas Habteab 
							
						 
					 
					
						
						
						
						
							
						
						
							9dd2e2a3ec 
							
						 
					 
					
						
						
							
							Introduce JsonEncoder class  
						
						
						
						
					 
					
						2025-07-10 18:09:21 +02:00 
						 
				 
			
				
					
						
							
							
								Yonas Habteab 
							
						 
					 
					
						
						
						
						
							
						
						
							1c61bced03 
							
						 
					 
					
						
						
							
							Introduce AsyncJsonWriter output adapter interface  
						
						
						
						
					 
					
						2025-07-09 13:41:15 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							34d0b942b9 
							
						 
					 
					
						
						
							
							Update third-party/nlohmann_json to v3.9.1  
						
						... 
						
						
						
						the latest version w/o Apache 2.0 licensed code which conflicts with GPL 2. 
						
						
					 
					
						2023-02-14 16:19:44 +01:00 
						 
				 
			
				
					
						
							
							
								Julian Brost 
							
						 
					 
					
						
						
						
						
							
						
						
							1c066fc02e 
							
						 
					 
					
						
						
							
							Simplify NamespaceValue class hierarchy to one struct without member functions  
						
						... 
						
						
						
						This commit removes EmbeddedNamespaceValue and ConstEmbeddedNamespaceValue and
reduces NamespaceValue down to a simple struct without inheritance or member
functions. The code from these clases is inlined into the Namespace class. The
class hierarchy determining whether a value is const is moved to an attribute
of NamespaceValue.
This is done in preparation for changes to the locking in the Namespace class.
Currently, it relies on a recursive mutex. In the future, a shared mutex
(read/write lock) should be used instead, which cannot allow recursive locking
(without failing or risk deadlocking on lock upgrades). With this change, all
operations requiring a lock for one operation are within one function, no
recursive locking is not needed any more. 
						
						
					 
					
						2023-01-19 17:55:11 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							fa2666fecf 
							
						 
					 
					
						
						
							
							JsonEncode(): encode non-[]/{} objects as strings, not null  
						
						... 
						
						
						
						... to represent function custom vars as such in Icinga DB. 
						
						
					 
					
						2021-04-30 15:49:52 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							9531de3835 
							
						 
					 
					
						
						
							
							JsonEncode(): serialize integers w/o trailing .0  
						
						... 
						
						
						
						... so Icinga DB can parse them as integers. 
						
						
					 
					
						2021-03-23 17:52:37 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							3adba5c542 
							
						 
					 
					
						
						
							
							JsonEncode(): suffix pretty JSON w/ \n  
						
						... 
						
						
						
						refs #8194  
						
						
					 
					
						2020-09-02 16:11:43 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							0cf10c6306 
							
						 
					 
					
						
						
							
							Make buildable with VS 2017  
						
						
						
						
					 
					
						2019-03-18 15:07:57 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							2a05b46431 
							
						 
					 
					
						
						
							
							Auto-sanitize data before en-/decoding JSON  
						
						
						
						
					 
					
						2019-03-18 15:07:57 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							9daca0b216 
							
						 
					 
					
						
						
							
							Get rid of YAJL  
						
						
						
						
					 
					
						2019-03-18 15:07:57 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							5882594b43 
							
						 
					 
					
						
						
							
							JsonEncode(): use nlohmann::json  
						
						
						
						
					 
					
						2019-03-18 15:07:57 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							1b0367b740 
							
						 
					 
					
						
						
							
							JsonDecode(): use nlohmann::json::sax_parse()  
						
						
						
						
					 
					
						2019-03-18 15:07:57 +01:00 
						 
				 
			
				
					
						
							
							
								Michael Friedrich 
							
						 
					 
					
						
						
						
						
							
						
						
							724b34c6f2 
							
						 
					 
					
						
						
							
							Integrate nlohmann_json into CMake  
						
						... 
						
						
						
						Better integration into base/json.cpp
Signed-off-by: Alexander A. Klimov <alexander.klimov@icinga.com> 
						
						
					 
					
						2019-03-18 15:07:50 +01:00 
						 
				 
			
				
					
						
							
							
								Michael Friedrich 
							
						 
					 
					
						
						
						
						
							
						
						
							d14a88235d 
							
						 
					 
					
						
						
							
							Replace Copyright header with a short version, part I  
						
						... 
						
						
						
						CLion -> replace in path 
						
						
					 
					
						2019-02-25 14:48:22 +01:00 
						 
				 
			
				
					
						
							
							
								Michael Friedrich 
							
						 
					 
					
						
						
						
						
							
						
						
							dab53448bc 
							
						 
					 
					
						
						
							
							icinga.com: Update *.{h,c}pp  
						
						
						
						
					 
					
						2018-10-18 09:27:04 +02:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							1a8692d972 
							
						 
					 
					
						
						
							
							Implement support for namespaces  
						
						
						
						
					 
					
						2018-08-13 13:44:31 +02:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							0b03ab854e 
							
						 
					 
					
						
						
							
							Avoid unnecessary casts in the JSON encoder  
						
						
						
						
					 
					
						2018-01-11 07:31:08 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							91c256261a 
							
						 
					 
					
						
						
							
							Apply clang-tidy fix 'modernize-use-default-member-init'  
						
						
						
						
					 
					
						2018-01-04 12:24:58 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							e3ad0be769 
							
						 
					 
					
						
						
							
							Apply clang-tidy fix 'modernize-use-auto'  
						
						
						
						
					 
					
						2018-01-04 12:24:57 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							ac155d1dda 
							
						 
					 
					
						
						
							
							Apply clang-tidy fix 'modernize-redundant-void-arg'  
						
						
						
						
					 
					
						2018-01-04 12:24:57 +01:00 
						 
				 
			
				
					
						
							
							
								Michael Insel 
							
						 
					 
					
						
						
						
						
							
						
						
							158ae2188e 
							
						 
					 
					
						
						
							
							Change copyright header for 2018  
						
						
						
						
					 
					
						2018-01-02 12:08:55 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							1ad83886ac 
							
						 
					 
					
						
						
							
							Replace a few more NULLs with nullptr  
						
						
						
						
					 
					
						2017-12-14 15:37:20 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							42744fde5b 
							
						 
					 
					
						
						
							
							Remove extraneous whitespace  
						
						
						
						
					 
					
						2017-12-14 08:50:09 +01:00 
						 
				 
			
				
					
						
							
							
								Michael Friedrich 
							
						 
					 
					
						
						
						
						
							
						
						
							b7caf0820d 
							
						 
					 
					
						
						
							
							Ensure that *.icinga.com is used everywhere  
						
						... 
						
						
						
						fixes  #13897 
fixes  #13277  
					
						2017-01-10 17:19:12 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							06cb3cf875 
							
						 
					 
					
						
						
							
							Another build fix for Windows  
						
						... 
						
						
						
						refs #9182  
						
						
					 
					
						2016-08-31 13:43:50 +02:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							68dceaab06 
							
						 
					 
					
						
						
							
							Replace boost::exception_ptr with std::exception_ptr  
						
						... 
						
						
						
						refs #9182  
						
						
					 
					
						2016-08-30 20:46:23 +02:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							27a23fcff6 
							
						 
					 
					
						
						
							
							Avoid an unnecessary case in the Encode function  
						
						... 
						
						
						
						refs #12509  
						
						
					 
					
						2016-08-27 12:20:54 +02:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							00eec13338 
							
						 
					 
					
						
						
							
							Avoid unnecessary string copies in the JSON encoder  
						
						... 
						
						
						
						refs #12509  
						
						
					 
					
						2016-08-27 11:47:36 +02:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							288413f046 
							
						 
					 
					
						
						
							
							Replace BOOST_FOREACH with range-based for loops  
						
						... 
						
						
						
						fixes  #12538  
					
						2016-08-25 06:46:17 +02:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							599929b0f6 
							
						 
					 
					
						
						
							
							Update copyright headers for 2016  
						
						
						
						
					 
					
						2016-01-12 08:29:59 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							9ecfd9c830 
							
						 
					 
					
						
						
							
							Allow comments in JSON  
						
						... 
						
						
						
						fixes  #9919  
					
						2015-08-17 08:03:25 +02:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							d913089a14 
							
						 
					 
					
						
						
							
							Remove redundant function  
						
						
						
						
					 
					
						2015-03-02 12:47:20 +01:00 
						 
				 
			
				
					
						
							
							
								Michael Friedrich 
							
						 
					 
					
						
						
						
						
							
						
						
							78bfd0204c 
							
						 
					 
					
						
						
							
							Update copyright year  
						
						
						
						
					 
					
						2015-01-22 12:00:23 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							f800630c10 
							
						 
					 
					
						
						
							
							Implement Livestatus support for the "repl" command  
						
						... 
						
						
						
						refs #7805  
						
						
					 
					
						2014-12-16 19:28:46 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							89a0fc006e 
							
						 
					 
					
						
						
							
							Implement a boolean sub-type for the Value class  
						
						... 
						
						
						
						fixes  #8043  
					
						2014-12-10 09:05:16 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							5321bc4643 
							
						 
					 
					
						
						
							
							Don't validate strings in the JSON parser  
						
						... 
						
						
						
						fixes  #7730  
					
						2014-11-20 10:09:13 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							478f03b49a 
							
						 
					 
					
						
						
							
							Replace boost::shared_ptr with boost::intrusive_ptr  
						
						... 
						
						
						
						refs #7622  
						
						
					 
					
						2014-11-09 16:54:41 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							7cca2d275f 
							
						 
					 
					
						
						
							
							Fix incorrect #ifdef  
						
						... 
						
						
						
						refs #7454  
						
						
					 
					
						2014-10-28 08:12:54 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							b0179cc1fe 
							
						 
					 
					
						
						
							
							64-bit build fix for YAJL < 2.0  
						
						... 
						
						
						
						refs #7454  
						
						
					 
					
						2014-10-28 06:33:40 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							65e2e636ea 
							
						 
					 
					
						
						
							
							Fix compatibility with older versions of the YAJL library  
						
						... 
						
						
						
						refs #7454  
						
						
					 
					
						2014-10-28 05:59:29 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							8b339a6cd5 
							
						 
					 
					
						
						
							
							Throw saved exception in JSON decoder  
						
						... 
						
						
						
						refs #7452  
						
						
					 
					
						2014-10-27 09:28:32 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							f05ccd07f9 
							
						 
					 
					
						
						
							
							Build fix for GCC  
						
						... 
						
						
						
						refs #7452  
						
						
					 
					
						2014-10-27 05:17:23 +01:00 
						 
				 
			
				
					
						
							
							
								Gunnar Beutner 
							
						 
					 
					
						
						
						
						
							
						
						
							7559273359 
							
						 
					 
					
						
						
							
							Replace cJSON with YAJL  
						
						... 
						
						
						
						fixes  #7452  
					
						2014-10-26 20:00:35 +01:00