This is an automated email from the ASF dual-hosted git repository. massakam pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pulsar-client-node.git
commit 3e60959609c1b6ef72a35f8d98bb776148646fca Author: Pavel Nekrasov <[email protected]> AuthorDate: Tue Jul 16 14:02:54 2019 +0200 added serialize/deserialize methods --- src/MessageId.cc | 31 ++++++++++++++++++++++++++++++- src/MessageId.h | 2 ++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/MessageId.cc b/src/MessageId.cc index a0b520f..62cd1c8 100644 --- a/src/MessageId.cc +++ b/src/MessageId.cc @@ -31,7 +31,9 @@ Napi::Object MessageId::Init(Napi::Env env, Napi::Object exports) { StaticMethod("earliest", &MessageId::Earliest, napi_static), StaticMethod("latest", &MessageId::Latest, napi_static), StaticMethod("finalize", &MessageId::Finalize, napi_static), - InstanceMethod("toString", &MessageId::ToString), + InstanceMethod("serialize", &MessageId::Serialize), + StaticMethod("deserialize", &MessageId::Deserialize, napi_static), + InstanceMethod("toString", &MessageId::ToString) }); constructor = Napi::Persistent(func); @@ -78,6 +80,33 @@ Napi::Value MessageId::Latest(const Napi::CallbackInfo &info) { return obj; } +Napi::Value MessageId::Serialize(const Napi::CallbackInfo &info) { + Napi::Env env = info.Env(); + + int len; + void *ptr = pulsar_message_id_serialize(GetCMessageId(), &len); + + return Napi::Buffer<char>::New(env, (char *)ptr, len); +} + +Napi::Value MessageId::Deserialize(const Napi::CallbackInfo &info) { + Napi::Env env = info.Env(); + + if (!info[0].IsBuffer()) { + Napi::Error::New(env, "Expected buffer as first argument").ThrowAsJavaScriptException(); + return env.Undefined(); + } + + Napi::Object obj = NewInstance(info[0]); + MessageId *msgId = Unwrap(obj); + + Napi::Buffer<char> buf = info[0].As<Napi::Buffer<char>>(); + char *data = buf.Data(); + msgId->cMessageId = (pulsar_message_id_t *)pulsar_message_id_deserialize(data, buf.Length()); + + return obj; +} + pulsar_message_id_t *MessageId::GetCMessageId() { return this->cMessageId; } Napi::Value MessageId::ToString(const Napi::CallbackInfo &info) { diff --git a/src/MessageId.h b/src/MessageId.h index 09c59e2..f65b1b4 100644 --- a/src/MessageId.h +++ b/src/MessageId.h @@ -31,6 +31,8 @@ class MessageId : public Napi::ObjectWrap<MessageId> { static Napi::Object NewInstanceFromMessage(const Napi::CallbackInfo &info, pulsar_message_t *cMessage); static Napi::Value Earliest(const Napi::CallbackInfo &info); static Napi::Value Latest(const Napi::CallbackInfo &info); + Napi::Value Serialize(const Napi::CallbackInfo &info); + static Napi::Value Deserialize(const Napi::CallbackInfo &info); static void Finalize(const Napi::CallbackInfo &info); MessageId(const Napi::CallbackInfo &info); ~MessageId();
