Removed Common
Change-Id: I01ea8f07220375c2ad9bc0092281d4f27c642303
diff --git a/aos/logging/log_streamer.cc b/aos/logging/log_streamer.cc
new file mode 100644
index 0000000..757ba2e
--- /dev/null
+++ b/aos/logging/log_streamer.cc
@@ -0,0 +1,63 @@
+#include <errno.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <pwd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <time.h>
+#include <unistd.h>
+#include <chrono>
+#include <string>
+
+#include "aos/logging/implementations.h"
+#include "aos/logging/logging.h"
+#include "aos/time/time.h"
+#include "aos/linux_code/init.h"
+#include "aos/linux_code/ipc_lib/queue.h"
+
+namespace aos {
+namespace logging {
+namespace linux_code {
+namespace {
+
+namespace chrono = ::std::chrono;
+
+int LogStreamerMain() {
+ InitNRT();
+
+ RawQueue *queue = GetLoggingQueue();
+
+ const monotonic_clock::time_point now = monotonic_clock::now();
+ chrono::seconds sec =
+ chrono::duration_cast<chrono::seconds>(now.time_since_epoch());
+ chrono::nanoseconds nsec =
+ chrono::duration_cast<chrono::nanoseconds>(now.time_since_epoch() - sec);
+ printf("starting at %" PRId32 "s%" PRId32 "ns-----------------------------\n",
+ static_cast<int32_t>(sec.count()), static_cast<int32_t>(nsec.count()));
+
+ while (true) {
+ const LogMessage *const msg = static_cast<const LogMessage *>(
+ queue->ReadMessage(RawQueue::kNonBlock));
+ if (msg == NULL) {
+ ::std::this_thread::sleep_for(::std::chrono::milliseconds(100));
+ } else {
+ internal::PrintMessage(stdout, *msg);
+
+ queue->FreeMessage(msg);
+ }
+ }
+
+ Cleanup();
+ return 0;
+}
+
+} // namespace
+} // namespace linux_code
+} // namespace logging
+} // namespace aos
+
+int main() {
+ return ::aos::logging::linux_code::LogStreamerMain();
+}