]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Formatter: add a dump_format_ns to base Formatter
authorAbhishek Lekshmanan <abhishek.lekshmanan@ril.com>
Wed, 27 Aug 2014 06:32:19 +0000 (12:02 +0530)
committerAbhishek Lekshmanan <abhishek.lekshmanan@ril.com>
Fri, 5 Sep 2014 03:34:48 +0000 (09:04 +0530)
`dump_format_ns` is a generic formatter to dump a simple format along
with a namespace. It is `dump_format` with an optional ns. This also
extends the XML formatter with this functionality. This allows creation
of xml tags with ns and a specified format. The JSON Format doesn't
define a ns, and here the functionality is exactly same as that of
`dump_format`

Signed-off-by: Abhishek Lekshmanan <abhishek.lekshmanan@ril.com>
src/common/Formatter.cc
src/common/Formatter.h

index 8a6aed2b52181730b65b9b745671f71c25c5b843..976af14ff502616cc5cf3af2b54a93ec98a9423d 100644 (file)
@@ -255,6 +255,21 @@ void JSONFormatter::dump_format(const char *name, const char *fmt, ...)
   print_quoted_string(buf);
 }
 
+void JSONFormatter:: dump_format_ns(const char *name, const char *ns, const char *fmt, ...)
+{
+  // ignore the namespace for now
+  char buf[LARGE_SIZE];
+  va_list ap;
+  va_start(ap, fmt);
+  vsnprintf(buf, LARGE_SIZE, fmt, ap);
+  va_end(ap);
+
+  print_name(name);
+  print_quoted_string(buf);
+
+}
+
+
 void JSONFormatter::dump_format_unquoted(const char *name, const char *fmt, ...)
 {
   char buf[LARGE_SIZE];
@@ -417,6 +432,26 @@ void XMLFormatter::dump_format(const char *name, const char *fmt, ...)
     m_ss << "\n";
 }
 
+void XMLFormatter::dump_format_ns(const char* name, const char *ns, const char *fmt, ...)
+{
+  char buf[LARGE_SIZE];
+  va_list ap;
+  va_start(ap, fmt);
+  vsnprintf(buf, LARGE_SIZE, fmt, ap);
+  va_end(ap);
+
+  std::string e(name);
+  print_spaces();
+  if (ns) {
+    m_ss << "<" << e  << " xmlns=\"" << ns << "\">" << buf << "</" << e << ">";
+  } else {
+    m_ss << "<" << e << ">" << buf << "</" << e << ">";
+  }
+
+  if (m_pretty)
+    m_ss << "\n";
+}
+
 void XMLFormatter::dump_format_unquoted(const char *name, const char *fmt, ...)
 {
   char buf[LARGE_SIZE];
index 87b225ac1e6329a60c856971456a23fd714e3ede..b9ac6393773f6d592a4740816f9a3e9dcd27c323 100644 (file)
@@ -49,6 +49,7 @@ class Formatter {
   }
   virtual std::ostream& dump_stream(const char *name) = 0;
   virtual void dump_format(const char *name, const char *fmt, ...) = 0;
+  virtual void dump_format_ns(const char *name, const char *ns, const char *fmt, ...) = 0;
   virtual void dump_format_unquoted(const char *name, const char *fmt, ...) = 0;
   virtual int get_len() const = 0;
   virtual void write_raw_data(const char *data) = 0;
@@ -85,6 +86,7 @@ class JSONFormatter : public Formatter {
   std::ostream& dump_stream(const char *name);
   void dump_format(const char *name, const char *fmt, ...);
   void dump_format_unquoted(const char *name, const char *fmt, ...);
+  void dump_format_ns(const char*name, const char *ns, const char *fmt, ...);
   int get_len() const;
   void write_raw_data(const char *data);
 
@@ -125,6 +127,7 @@ class XMLFormatter : public Formatter {
   void dump_string(const char *name, std::string s);
   std::ostream& dump_stream(const char *name);
   void dump_format(const char *name, const char *fmt, ...);
+  void dump_format_ns(const char *name, const char *ns, const char *fmt, ...);
   void dump_format_unquoted(const char *name, const char *fmt, ...);
   int get_len() const;
   void write_raw_data(const char *data);