summaryrefslogtreecommitdiffstats
path: root/drm/common/DrmInfoEvent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'drm/common/DrmInfoEvent.cpp')
-rw-r--r--drm/common/DrmInfoEvent.cpp92
1 files changed, 91 insertions, 1 deletions
diff --git a/drm/common/DrmInfoEvent.cpp b/drm/common/DrmInfoEvent.cpp
index 27a5a2d..2315aa9 100644
--- a/drm/common/DrmInfoEvent.cpp
+++ b/drm/common/DrmInfoEvent.cpp
@@ -16,16 +16,29 @@
#include <utils/String8.h>
#include <drm/DrmInfoEvent.h>
+#include <stdlib.h>
using namespace android;
DrmInfoEvent::DrmInfoEvent(int uniqueId, int infoType, const String8 message)
: mUniqueId(uniqueId),
mInfoType(infoType),
- mMessage(message) {
+ mMessage(message),
+ mDrmBuffer() {
}
+DrmInfoEvent::DrmInfoEvent(int uniqueId, int infoType, const String8 message,
+ const DrmBuffer& drmBuffer)
+ : mUniqueId(uniqueId), mInfoType(infoType), mMessage(message), mDrmBuffer() {
+ setData(drmBuffer);
+}
+
+DrmInfoEvent::~DrmInfoEvent() {
+ delete [] mDrmBuffer.data;
+}
+
+
int DrmInfoEvent::getUniqueId() const {
return mUniqueId;
}
@@ -38,3 +51,80 @@ const String8 DrmInfoEvent::getMessage() const {
return mMessage;
}
+int DrmInfoEvent::getCount() const {
+ return mAttributes.size();
+}
+
+status_t DrmInfoEvent::put(const String8& key, String8& value) {
+ mAttributes.add(key, value);
+ return DRM_NO_ERROR;
+}
+
+const String8 DrmInfoEvent::get(const String8& key) const {
+ if (mAttributes.indexOfKey(key) != NAME_NOT_FOUND) {
+ return mAttributes.valueFor(key);
+ }
+ return String8("");
+}
+
+const DrmBuffer& DrmInfoEvent::getData() const {
+ return mDrmBuffer;
+}
+
+void DrmInfoEvent::setData(const DrmBuffer& drmBuffer) {
+ delete [] mDrmBuffer.data;
+ mDrmBuffer.data = new char[drmBuffer.length];;
+ mDrmBuffer.length = drmBuffer.length;
+ memcpy(mDrmBuffer.data, drmBuffer.data, drmBuffer.length);
+}
+
+DrmInfoEvent::KeyIterator DrmInfoEvent::keyIterator() const {
+ return KeyIterator(this);
+}
+
+DrmInfoEvent::Iterator DrmInfoEvent::iterator() const {
+ return Iterator(this);
+}
+
+// KeyIterator implementation
+DrmInfoEvent::KeyIterator::KeyIterator(const DrmInfoEvent::KeyIterator& keyIterator)
+ : mDrmInfoEvent(keyIterator.mDrmInfoEvent), mIndex(keyIterator.mIndex) {
+}
+
+bool DrmInfoEvent::KeyIterator::hasNext() {
+ return (mIndex < mDrmInfoEvent->mAttributes.size());
+}
+
+const String8& DrmInfoEvent::KeyIterator::next() {
+ const String8& key = mDrmInfoEvent->mAttributes.keyAt(mIndex);
+ mIndex++;
+ return key;
+}
+
+DrmInfoEvent::KeyIterator& DrmInfoEvent::KeyIterator::operator=(
+ const DrmInfoEvent::KeyIterator& keyIterator) {
+ mDrmInfoEvent = keyIterator.mDrmInfoEvent;
+ mIndex = keyIterator.mIndex;
+ return *this;
+}
+
+// Iterator implementation
+DrmInfoEvent::Iterator::Iterator(const DrmInfoEvent::Iterator& iterator)
+ : mDrmInfoEvent(iterator.mDrmInfoEvent), mIndex(iterator.mIndex) {
+}
+
+DrmInfoEvent::Iterator& DrmInfoEvent::Iterator::operator=(const DrmInfoEvent::Iterator& iterator) {
+ mDrmInfoEvent = iterator.mDrmInfoEvent;
+ mIndex = iterator.mIndex;
+ return *this;
+}
+
+bool DrmInfoEvent::Iterator::hasNext() {
+ return mIndex < mDrmInfoEvent->mAttributes.size();
+}
+
+const String8& DrmInfoEvent::Iterator::next() {
+ const String8& value = mDrmInfoEvent->mAttributes.editValueAt(mIndex);
+ mIndex++;
+ return value;
+}