Skip to content

Commit

Permalink
Added a simple message queue class
Browse files Browse the repository at this point in the history
  • Loading branch information
t3kt committed Dec 26, 2014
1 parent c4c782e commit d457be5
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
2 changes: 2 additions & 0 deletions bleepout.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@
32269B9A1A4CA55A00EF6DE4 /* PlayerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayerController.h; sourceTree = "<group>"; };
32269B9F1A4DD18200EF6DE4 /* AudioManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioManager.cpp; sourceTree = "<group>"; };
32269BA01A4DD18200EF6DE4 /* AudioManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioManager.h; sourceTree = "<group>"; };
32269BAC1A4DF14E00EF6DE4 /* MessageQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageQueue.h; sourceTree = "<group>"; };
322D59D71A454BCF00150050 /* RendererUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RendererUtil.cpp; sourceTree = "<group>"; };
322D59D81A454BCF00150050 /* RendererUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RendererUtil.h; sourceTree = "<group>"; };
325750E51A4792A500CC375A /* Round1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Round1.cpp; sourceTree = "<group>"; };
Expand Down Expand Up @@ -927,6 +928,7 @@
32269B7A1A4A861400EF6DE4 /* RoundComponent.h */,
32269B9F1A4DD18200EF6DE4 /* AudioManager.cpp */,
32269BA01A4DD18200EF6DE4 /* AudioManager.h */,
32269BAC1A4DF14E00EF6DE4 /* MessageQueue.h */,
);
path = core;
sourceTree = "<group>";
Expand Down
58 changes: 58 additions & 0 deletions src/core/MessageQueue.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
//
// MessageQueue.h
// bleepout
//
// Created by tekt on 12/26/14.
//
//

#ifndef __bleepout__MessageQueue__
#define __bleepout__MessageQueue__

#include <ofTypes.h>
#include <ofEventUtils.h>
#include <deque>
#include <list>

template<typename T>
class MessageQueue {
public:
void pushMessage(const T& message) {
ofScopedLock lock(_mutex);
_messages.push_back(message);
}
std::vector<T> popMessages() {
ofScopedLock lock(_mutex);
std::vector<T> popped;
while (!_messages.empty()) {
popped.push_back(_messages.front());
_messages.pop_front();
}
return popped;
}
private:
std::list<T> _messages;
ofMutex _mutex;
};

template<typename T>
class EventMessageQueue {
public:
EventMessageQueue(ofEvent<T>& event)
: _event(event), _queue() { }

void pushMessage(const T& message) {
_queue.pushMessage(message);
}
void sendEvents() {
std::vector<T> messages = _queue.popMessages();
for (T& message : messages) {
ofNotifyEvent(_event, message);
}
}
private:
MessageQueue<T> _queue;
ofEvent<T>& _event;
};

#endif /* defined(__bleepout__MessageQueue__) */

1 comment on commit d457be5

@t3kt
Copy link
Contributor Author

@t3kt t3kt commented on d457be5 Dec 26, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see #14

Please sign in to comment.