[Spice-devel] [PATCH 21/22] Moving FrameLog into a separate file

Christophe de Dinechin christophe at dinechin.org
Wed Feb 28 15:43:24 UTC 2018


From: Christophe de Dinechin <dinechin at redhat.com>

Isolating classes in separate files makes parallel builds faster,
facilitates code reuse and minimizes the chances of patch conflicts.

Signed-off-by: Christophe de Dinechin <dinechin at redhat.com>
---
 src/Makefile.am               |  2 ++
 src/frame-log.cpp             | 45 +++++++++++++++++++++++++++++++++++++
 src/frame-log.hpp             | 43 +++++++++++++++++++++++++++++++++++
 src/spice-streaming-agent.cpp | 52 +------------------------------------------
 4 files changed, 91 insertions(+), 51 deletions(-)
 create mode 100644 src/frame-log.cpp
 create mode 100644 src/frame-log.hpp

diff --git a/src/Makefile.am b/src/Makefile.am
index 4a03e5e..5e36e1f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -57,6 +57,8 @@ spice_streaming_agent_SOURCES = \
 	jpeg.hpp \
 	stream.cpp \
 	stream.hpp \
+	frame-log.hpp \
+	frame-log.cpp \
 	errors.cpp \
 	x11-cursor.hpp \
 	x11-cursor.cpp \
diff --git a/src/frame-log.cpp b/src/frame-log.cpp
new file mode 100644
index 0000000..53751be
--- /dev/null
+++ b/src/frame-log.cpp
@@ -0,0 +1,45 @@
+/* Class to log frames as they are being streamed
+ *
+ * \copyright
+ * Copyright 2018 Red Hat Inc. All rights reserved.
+ */
+
+#include "frame-log.hpp"
+#include "hexdump.h"
+
+#include <spice-streaming-agent/errors.hpp>
+
+#include <syslog.h>
+#include <inttypes.h>
+#include <errno.h>
+
+namespace spice
+{
+namespace streaming_agent
+{
+
+FrameLog::FrameLog(const char *filename, bool binary)
+    : log(filename ? fopen(filename, "wb") : NULL), binary(binary)
+{
+    if (filename && !log) {
+        throw OpenError("failed to open hexdump log file", filename, errno);
+    }
+}
+
+FrameLog::~FrameLog()
+{
+    if (log)
+        fclose(log);
+}
+
+void FrameLog::dump(const void *buffer, size_t length)
+{
+    if (binary) {
+        fwrite(buffer, length, 1, log);
+    } else {
+        fprintf(log, "%" PRIu64 ": Frame of %zu bytes:\n", get_time(), length);
+        hexdump(buffer, length, log);
+    }
+}
+
+}} // namespace spice::streaming_agent
diff --git a/src/frame-log.hpp b/src/frame-log.hpp
new file mode 100644
index 0000000..09dbd4a
--- /dev/null
+++ b/src/frame-log.hpp
@@ -0,0 +1,43 @@
+/* Class to log frames as they are being streamed
+ *
+ * \copyright
+ * Copyright 2018 Red Hat Inc. All rights reserved.
+ */
+#ifndef SPICE_STREAMING_AGENT_FRAME_LOG_HPP
+#define SPICE_STREAMING_AGENT_FRAME_LOG_HPP
+
+#include <stdio.h>
+#include <stdint.h>
+#include <sys/time.h>
+
+namespace spice {
+namespace streaming_agent {
+
+/* returns current time in micro-seconds */
+static uint64_t get_time(void)
+{
+    struct timeval now;
+
+    gettimeofday(&now, NULL);
+
+    return (uint64_t)now.tv_sec * 1000000 + (uint64_t)now.tv_usec;
+
+}
+
+class FrameLog
+{
+public:
+    FrameLog(const char *filename, bool binary = false);
+    ~FrameLog();
+
+    operator bool() { return log != NULL; }
+    void dump(const void *buffer, size_t length);
+
+private:
+    FILE *log;
+    bool binary;
+};
+
+}} // namespace spice::streaming_agent
+
+#endif // SPICE_STREAMING_AGENT_ERRORS_HPP
diff --git a/src/spice-streaming-agent.cpp b/src/spice-streaming-agent.cpp
index 2264af2..424db95 100644
--- a/src/spice-streaming-agent.cpp
+++ b/src/spice-streaming-agent.cpp
@@ -7,8 +7,8 @@
 #include "concrete-agent.hpp"
 #include "stream.hpp"
 #include "message.hpp"
+#include "frame-log.hpp"
 #include "x11-cursor.hpp"
-#include "hexdump.h"
 #include "mjpeg-fallback.hpp"
 
 #include <spice/stream-device.h>
@@ -45,17 +45,6 @@ namespace spice
 namespace streaming_agent
 {
 
-/* returns current time in micro-seconds */
-static uint64_t get_time(void)
-{
-    struct timeval now;
-
-    gettimeofday(&now, NULL);
-
-    return (uint64_t)now.tv_sec * 1000000 + (uint64_t)now.tv_usec;
-
-}
-
 class FormatMessage : public Message<StreamMsgFormat, FormatMessage, STREAM_TYPE_FORMAT>
 {
 public:
@@ -85,45 +74,6 @@ public:
     }
 };
 
-class FrameLog
-{
-public:
-    FrameLog(const char *filename, bool binary = false);
-    ~FrameLog();
-
-    operator bool() { return log != NULL; }
-    void dump(const void *buffer, size_t length);
-
-private:
-    FILE *log;
-    bool binary;
-};
-
-
-FrameLog::FrameLog(const char *filename, bool binary)
-    : log(filename ? fopen(filename, "wb") : NULL), binary(binary)
-{
-    if (filename && !log) {
-        throw OpenError("failed to open hexdump log file", filename, errno);
-    }
-}
-
-FrameLog::~FrameLog()
-{
-    if (log)
-        fclose(log);
-}
-
-void FrameLog::dump(const void *buffer, size_t length)
-{
-    if (binary) {
-        fwrite(buffer, length, 1, log);
-    } else {
-        fprintf(log, "%" PRIu64 ": Frame of %zu bytes:\n", get_time(), length);
-        hexdump(buffer, length, log);
-    }
-}
-
 }} // namespace spice::streaming_agent
 
 bool quit_requested = false;
-- 
2.13.5 (Apple Git-94)



More information about the Spice-devel mailing list