You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2018/04/11 16:02:14 UTC
qpid-proton git commit: PROTON-1826: [go] Add Messge.String() method
for human-readable message
Repository: qpid-proton
Updated Branches:
refs/heads/master d58bd7154 -> be20a5186
PROTON-1826: [go] Add Messge.String() method for human-readable message
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/be20a518
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/be20a518
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/be20a518
Branch: refs/heads/master
Commit: be20a5186790815372f06e9a855955e330863426
Parents: d58bd71
Author: Alan Conway <ac...@redhat.com>
Authored: Wed Apr 11 12:00:59 2018 -0400
Committer: Alan Conway <ac...@redhat.com>
Committed: Wed Apr 11 12:01:25 2018 -0400
----------------------------------------------------------------------
go/src/qpid.apache.org/amqp/message.go | 11 +++++++-
go/src/qpid.apache.org/amqp/message_test.go | 32 ++++++++++++++++++------
2 files changed, 34 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/be20a518/go/src/qpid.apache.org/amqp/message.go
----------------------------------------------------------------------
diff --git a/go/src/qpid.apache.org/amqp/message.go b/go/src/qpid.apache.org/amqp/message.go
index 389fa37..e514b26 100644
--- a/go/src/qpid.apache.org/amqp/message.go
+++ b/go/src/qpid.apache.org/amqp/message.go
@@ -38,6 +38,7 @@ import (
"fmt"
"runtime"
"time"
+ "unsafe"
)
// Message is the interface to an AMQP message.
@@ -174,6 +175,9 @@ type Message interface {
// Deprecated: use ApplicationProperties() for a more type-safe interface
Properties() map[string]interface{}
SetProperties(v map[string]interface{})
+
+ // Human-readable string showing message contents and properties
+ String() string
}
type message struct{ pn *C.pn_message_t }
@@ -378,7 +382,12 @@ func (m *message) Encode(buffer []byte) ([]byte, error) {
// TODO aconway 2015-09-14: Multi-section messages.
-// TODO aconway 2016-09-09: Message.String() use inspect.
+func (m *message) String() string {
+ str := C.pn_string(C.CString(""))
+ defer C.pn_free(unsafe.Pointer(str))
+ C.pn_inspect(unsafe.Pointer(m.pn), str)
+ return C.GoString(C.pn_string_get(str))
+}
// ==== Deprecated functions
func oldGetAnnotations(data *C.pn_data_t) (v map[string]interface{}) {
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/be20a518/go/src/qpid.apache.org/amqp/message_test.go
----------------------------------------------------------------------
diff --git a/go/src/qpid.apache.org/amqp/message_test.go b/go/src/qpid.apache.org/amqp/message_test.go
index 3585dd8..663e82f 100644
--- a/go/src/qpid.apache.org/amqp/message_test.go
+++ b/go/src/qpid.apache.org/amqp/message_test.go
@@ -25,15 +25,15 @@ import (
)
func roundTrip(m Message) error {
- buffer, err := m.Encode(nil)
- if err != nil {
- return err
- }
- m2, err := DecodeMessage(buffer)
- if err != nil {
- return err
+ var err error
+ if buffer, err := m.Encode(nil); err == nil {
+ if m2, err := DecodeMessage(buffer); err == nil {
+ if err = checkEqual(m, m2); err == nil {
+ err = checkEqual(m.String(), m2.String())
+ }
+ }
}
- return checkEqual(m, m2)
+ return err
}
func TestDefaultMessage(t *testing.T) {
@@ -72,6 +72,22 @@ func TestDefaultMessage(t *testing.T) {
if err := roundTrip(m); err != nil {
t.Error(err)
}
+ if err := checkEqual("Message{}", m.String()); err != nil {
+ t.Error(err)
+ }
+}
+
+func TestMessageString(t *testing.T) {
+ m := NewMessageWith("hello")
+ m.SetInferred(false)
+ m.SetUserId("user")
+ m.SetDeliveryAnnotations(map[AnnotationKey]interface{}{AnnotationKeySymbol("instructions"): "foo"})
+ m.SetMessageAnnotations(map[AnnotationKey]interface{}{AnnotationKeySymbol("annotations"): "bar"})
+ m.SetApplicationProperties(map[string]interface{}{"int": int32(32)})
+ msgstr := `Message{user_id="user", instructions={:instructions="foo"}, annotations={:annotations="bar"}, properties={"int"=32}, body="hello"}`
+ if err := checkEqual(msgstr, m.String()); err != nil {
+ t.Error(err)
+ }
}
func TestMessageRoundTrip(t *testing.T) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org