summaryrefslogtreecommitdiff
path: root/notification-ex/event_info.cc
diff options
context:
space:
mode:
Diffstat (limited to 'notification-ex/event_info.cc')
-rw-r--r--notification-ex/event_info.cc156
1 files changed, 156 insertions, 0 deletions
diff --git a/notification-ex/event_info.cc b/notification-ex/event_info.cc
new file mode 100644
index 0000000..c220603
--- /dev/null
+++ b/notification-ex/event_info.cc
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <dlog.h>
+#include <unistd.h>
+
+#include <memory>
+
+#include "notification-ex/event_info_internal.h"
+#include "notification-ex/event_info_implementation.h"
+#include "notification-ex/ex_util.h"
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+
+#define LOG_TAG "NOTIFICATION_EX"
+#define NOTIFICATION_EX_EVENT_TYPE_KEY "__NOTIFICATION_EX_EVENT_TYPE_KEY__"
+#define NOTIFICATION_EX_EVENT_OWNER_KEY "__NOTIFICATION_EX_EVENT_OWNER_KEY__"
+#define NOTIFICATION_EX_EVENT_CHANNEL_KEY "__NOTIFICATION_EX_EVENT_CHANNEL_KEY__"
+#define NOTIFICATION_EX_EVENT_ITEM_ID_KEY "__NOTIFICATION_EX_EVENT_ITEM_ID_KEY__"
+#define NOTIFICATION_EX_EVENT_TAG_KEY "__NOTIFICATION_EX_EVENT_TAG_KEY__"
+#define NOTIFICATION_EX_EVENT_UID_KEY "__NOTIFICATION_EX_EVENT_UID_KEY__"
+#define NOTIFICATION_EX_EVENT_REQUEST_ID_KEY "__NOTIFICATION_EX_EVENT_REQUEST_ID_KEY__"
+#define NOTIFICATION_EX_EVENT_ERROR_KEY "__NOTIFICATION_EX_EVENT_ERROR_KEY__"
+
+using namespace std;
+namespace notification {
+
+EventInfo::EventInfo(int type, std::string owner, std::string channel,
+ std::string item_id, std::string tag)
+ : impl_(new Impl(this, type, owner, channel, item_id, tag)) {
+}
+EventInfo::~EventInfo() = default;
+EventInfo::Impl::~Impl() = default;
+
+EventInfo::Impl::Impl(EventInfo* parent,
+ int type, std::string owner, std::string channel,
+ std::string item_id, std::string tag)
+ : type_(type), owner_(owner), channel_(channel),
+ item_id_(item_id), tag_(tag), parent_(parent) {
+ uid_ = getuid();
+ request_id_ = util::GetRequestId();
+ error_ = NOTIFICATION_ERROR_NONE;
+ LOGI("EventInfo impl created");
+}
+
+EventInfo::EventInfo(Bundle serialized)
+ : impl_(new Impl(this, EventInfo::Post, "", "", "", "")) {
+ string event_str = serialized.GetString(NOTIFICATION_EX_EVENT_TYPE_KEY);
+ impl_->type_ = (int)strtol(event_str.c_str(), NULL, 10);
+ impl_->owner_ = serialized.GetString(NOTIFICATION_EX_EVENT_OWNER_KEY);
+ impl_->channel_ = serialized.GetString(NOTIFICATION_EX_EVENT_CHANNEL_KEY);
+ impl_->item_id_ = serialized.GetString(NOTIFICATION_EX_EVENT_ITEM_ID_KEY);
+ impl_->tag_ = serialized.GetString(NOTIFICATION_EX_EVENT_TAG_KEY);
+ string uid_str = serialized.GetString(NOTIFICATION_EX_EVENT_UID_KEY);
+ impl_->uid_ = (uid_t)strtol(uid_str.c_str(), NULL, 10);
+ string request_id_str =
+ serialized.GetString(NOTIFICATION_EX_EVENT_REQUEST_ID_KEY);
+ impl_->request_id_ = (int)strtol(request_id_str.c_str(), NULL, 10);
+ string error_str =
+ serialized.GetString(NOTIFICATION_EX_EVENT_ERROR_KEY);
+ impl_->error_ = (NotificationError)strtol(error_str.c_str(), NULL, 10);
+}
+
+string EventInfo::GetString(int type) {
+ switch(type) {
+ case Post:
+ return "Post";
+ case Update:
+ return "Update";
+ case Delete:
+ return "Delete";
+ case Get:
+ return "Get";
+ case Error:
+ return "Error";
+ default:
+ return "Custom" + std::to_string(Custom);
+ }
+}
+
+Bundle EventInfo::Serialize() const {
+ Bundle serialized;
+ serialized.Add(NOTIFICATION_EX_EVENT_TYPE_KEY, to_string((int)impl_->type_));
+ serialized.Add(NOTIFICATION_EX_EVENT_OWNER_KEY, impl_->owner_);
+ serialized.Add(NOTIFICATION_EX_EVENT_CHANNEL_KEY, impl_->channel_);
+ serialized.Add(NOTIFICATION_EX_EVENT_ITEM_ID_KEY, impl_->item_id_);
+ serialized.Add(NOTIFICATION_EX_EVENT_TAG_KEY, impl_->tag_);
+ serialized.Add(NOTIFICATION_EX_EVENT_UID_KEY, to_string((int)impl_->uid_));
+ serialized.Add(
+ NOTIFICATION_EX_EVENT_REQUEST_ID_KEY, to_string(impl_->request_id_));
+ serialized.Add(
+ NOTIFICATION_EX_EVENT_ERROR_KEY, to_string(impl_->error_));
+
+ return serialized;
+}
+
+int EventInfo::GetEventType() const {
+ return impl_->type_;
+}
+
+void EventInfo::SetEventType(int type) {
+ impl_->type_ = type;
+}
+
+string EventInfo::GetOwner() const {
+ return impl_->owner_;
+}
+
+string EventInfo::GetChannel() const {
+ return impl_->channel_;
+}
+
+string EventInfo::GetItemId() const {
+ return impl_->item_id_;
+}
+
+string EventInfo::GetTag() const {
+ return impl_->tag_;
+}
+
+uid_t EventInfo::GetUid() const {
+ return impl_->uid_;
+}
+
+void EventInfo::SetUid(uid_t uid) {
+ impl_->uid_ = uid;
+}
+
+int EventInfo::GetRequestId() const {
+ return impl_->request_id_;
+}
+
+NotificationError EventInfo::GetError() const {
+ return impl_->error_;
+}
+
+void EventInfo::SetError(NotificationError error) {
+ impl_->error_ = error;
+}
+
+} // namespace notification