summaryrefslogtreecommitdiffstats
path: root/veslibrary/ves_cpplibrary/src/lib/transport/XMemQueue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'veslibrary/ves_cpplibrary/src/lib/transport/XMemQueue.cpp')
-rwxr-xr-xveslibrary/ves_cpplibrary/src/lib/transport/XMemQueue.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/veslibrary/ves_cpplibrary/src/lib/transport/XMemQueue.cpp b/veslibrary/ves_cpplibrary/src/lib/transport/XMemQueue.cpp
new file mode 100755
index 0000000..443ab40
--- /dev/null
+++ b/veslibrary/ves_cpplibrary/src/lib/transport/XMemQueue.cpp
@@ -0,0 +1,46 @@
+#include "XMemQueue.h"
+#ifndef SPDLOG_ACTIVE_LEVEL
+#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE
+#endif
+#include "spdlog/spdlog.h"
+
+using namespace std;
+using namespace vagt::queue;
+
+vagt::queue::XMemQueue::XMemQueue(int capacity):capacity_(capacity),size_(0)
+{
+
+}
+
+bool vagt::queue::XMemQueue::empty()
+{
+ return 0 == size_;
+}
+
+XErrorCode vagt::queue::XMemQueue::push(const std::string & val)
+{
+ if (size_ >= capacity_)
+ {
+ queue_.pop();
+ SPDLOG_WARN("Drop from queue.");
+ size_--;
+ }
+
+ queue_.push(val);
+ size_++;
+
+ return XErrorOk;
+}
+
+void vagt::queue::XMemQueue::pop()
+{
+ //cal empty() before cal pop()
+ queue_.pop();
+ size_--;
+}
+
+std::string vagt::queue::XMemQueue::front()
+{
+ //cal empty() before cal pop()
+ return queue_.front();
+}