This is an automated email from the ASF dual-hosted git repository. sanjeevrk pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push: new 95f67d0 [python] MessageId.serialize() should return bytes instead of str (#2750) 95f67d0 is described below commit 95f67d09d388734e73029bec0e36f3f599748c1b Author: Matteo Merli <mme...@apache.org> AuthorDate: Tue Oct 9 17:55:52 2018 -0700 [python] MessageId.serialize() should return bytes instead of str (#2750) * [python] MessageId.serialize() should return bytes instead of str * Added msg id comparator functions --- pulsar-client-cpp/python/pulsar/__init__.py | 11 +++++----- pulsar-client-cpp/python/pulsar_test.py | 6 +++++ pulsar-client-cpp/python/src/message.cc | 34 +++++++++++++++++++++++++++-- 3 files changed, 44 insertions(+), 7 deletions(-) diff --git a/pulsar-client-cpp/python/pulsar/__init__.py b/pulsar-client-cpp/python/pulsar/__init__.py index 6849ecc..5f28efb 100644 --- a/pulsar-client-cpp/python/pulsar/__init__.py +++ b/pulsar-client-cpp/python/pulsar/__init__.py @@ -107,6 +107,7 @@ from pulsar.functions.serde import SerDe, IdentitySerDe, PickleSerDe import re _retype = type(re.compile('x')) + class MessageId: """ Represents a message id @@ -120,18 +121,18 @@ class MessageId: def serialize(self): """ - Returns a string representation of the message id. - This string can be stored and later deserialized. + Returns a bytes representation of the message id. + This bytes sequence can be stored and later deserialized. """ return self._msg_id.serialize() @staticmethod - def deserialize(message_id_str): + def deserialize(message_id_bytes): """ Deserialize a message id object from a previously - serialized string. + serialized bytes sequence. """ - return _pulsar.MessageId.deserialize(message_id_str) + return _pulsar.MessageId.deserialize(message_id_bytes) class Message: diff --git a/pulsar-client-cpp/python/pulsar_test.py b/pulsar-client-cpp/python/pulsar_test.py index d5163bc..7fb8f41 100755 --- a/pulsar-client-cpp/python/pulsar_test.py +++ b/pulsar-client-cpp/python/pulsar_test.py @@ -753,6 +753,12 @@ class PulsarTest(TestCase): pass client.close() + def test_message_id(self): + s = MessageId.earliest.serialize() + self.assertEqual(MessageId.deserialize(s), MessageId.earliest) + + s = MessageId.latest.serialize() + self.assertEqual(MessageId.deserialize(s), MessageId.latest) def _check_value_error(self, fun): try: diff --git a/pulsar-client-cpp/python/src/message.cc b/pulsar-client-cpp/python/src/message.cc index 1d1ee23..4232249 100644 --- a/pulsar-client-cpp/python/src/message.cc +++ b/pulsar-client-cpp/python/src/message.cc @@ -26,10 +26,34 @@ std::string MessageId_str(const MessageId& msgId) { return ss.str(); } -std::string MessageId_serialize(const MessageId& msgId) { +bool MessageId_eq(const MessageId& a, const MessageId& b) { + return a == b; +} + +bool MessageId_ne(const MessageId& a, const MessageId& b) { + return a != b; +} + +bool MessageId_lt(const MessageId& a, const MessageId& b) { + return a < b; +} + +bool MessageId_le(const MessageId& a, const MessageId& b) { + return a <= b; +} + +bool MessageId_gt(const MessageId& a, const MessageId& b) { + return a > b; +} + +bool MessageId_ge(const MessageId& a, const MessageId& b) { + return a >= b; +} + +boost::python::object MessageId_serialize(const MessageId& msgId) { std::string serialized; msgId.serialize(serialized); - return serialized; + return boost::python::object(boost::python::handle<>(PyBytes_FromStringAndSize(serialized.c_str(), serialized.length()))); } std::string Message_str(const Message& msg) { @@ -72,6 +96,12 @@ void export_message() { class_<MessageId>("MessageId") .def("__str__", &MessageId_str) + .def("__eq__", &MessageId_eq) + .def("__ne__", &MessageId_ne) + .def("__le__", &MessageId_le) + .def("__lt__", &MessageId_lt) + .def("__ge__", &MessageId_ge) + .def("__gt__", &MessageId_gt) .add_static_property("earliest", make_getter(&_MessageId_earliest)) .add_static_property("latest", make_getter(&_MessageId_latest)) .def("serialize", &MessageId_serialize)