From 633e76c1d533c3d9c257b92df7ebdfd36c9fd8a0 Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期四, 29 十二月 2016 18:42:50 +0800
Subject: [PATCH] unify log

---
 RtspFace/PipeLine.cpp |   42 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/RtspFace/PipeLine.cpp b/RtspFace/PipeLine.cpp
index 8b1ffea..2491199 100644
--- a/RtspFace/PipeLine.cpp
+++ b/RtspFace/PipeLine.cpp
@@ -1,4 +1,5 @@
 #include "PipeLine.h"
+#include "logger.h"
 
 PipeMaterial::PipeMaterial() : 
 	type(PMT__FIRST), buffer(nullptr), buffSize(0), 
@@ -77,8 +78,35 @@
 	return elem;
 }
 
+class PipeDebugger
+{
+private:
+	PipeLine* pipeLine;
+
+public:
+	PipeLineElem* retElem;
+	PipeMaterial* pm;
+
+	PipeDebugger(PipeLine* _pipeLine) : 
+		pipeLine(_pipeLine), retElem(nullptr), pm(nullptr)
+	{
+		LOG(DEBUG) << "pipe line begin";
+	}
+	
+	~PipeDebugger()
+	{
+		bool retOK = (*(pipeLine->elems).rbegin() == retElem);
+		if (retOK)
+			LOG(DEBUG) << "pipe line end, ret OK";
+		else
+			LOG(WARN) << "pipe line end, ret ERROR";
+	}
+};
+
 PipeLineElem* PipeLine::pipe(PipeMaterial* pm /*= nullptr*/)
 {
+	PipeDebugger debugger(this);
+	
 	PipeLineElem* elem_begin = *elems.begin();
 	PipeLineElem* elem_last = *elems.rbegin();
 
@@ -88,12 +116,14 @@
 	uint8_t pmPlacement[sizeof(PipeMaterial)];
 	if (pm == nullptr)
 		pm = new (pmPlacement) PipeMaterial;
+	
+	debugger.pm = pm;
 
 	if (elems.size() == 1)
 	{
 		elem_begin->gain(*pm);
 		pm->exec_deleter();
-		return elem_begin;
+		return debugger.retElem = elem_begin;
 	}
 	else if (elems.size() == 2)
 	{
@@ -103,13 +133,13 @@
 			pm->exec_deleter();
 		}
 		else
-			return elem_begin;
-		return elem_last;
+			return debugger.retElem = elem_begin;
+		return debugger.retElem = elem_last;
 	}
 	else
 	{
 		if (!elem_begin->gain(*pm))
-			return elem_begin;
+			return debugger.retElem = elem_begin;
 		
 		bool lastRet = true;
 		elem_vec_t::iterator iter = elems.begin();
@@ -123,7 +153,7 @@
 				lastRet = elem_begin->gain(*pm);
 			}
 			else
-				return elem_begin;//#todo this may memory leakage in pm
+				return debugger.retElem = elem_begin;
 			
 			++iter;
 			elem_begin = *iter;
@@ -134,7 +164,7 @@
 			elem_last->pay(*pm);
 			pm->exec_deleter();
 		}
-		return elem_last;
+		return debugger.retElem = elem_last;
 	}
 	
 	return nullptr;

--
Gitblit v1.8.0