src: Add DMA localagent
[barometer.git] / src / dma / vendor / github.com / streadway / amqp / return.go
diff --git a/src/dma/vendor/github.com/streadway/amqp/return.go b/src/dma/vendor/github.com/streadway/amqp/return.go
new file mode 100644 (file)
index 0000000..10dcedb
--- /dev/null
@@ -0,0 +1,64 @@
+// Copyright (c) 2012, Sean Treadway, SoundCloud Ltd.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+// Source code and contact info at http://github.com/streadway/amqp
+
+package amqp
+
+import (
+       "time"
+)
+
+// Return captures a flattened struct of fields returned by the server when a
+// Publishing is unable to be delivered either due to the `mandatory` flag set
+// and no route found, or `immediate` flag set and no free consumer.
+type Return struct {
+       ReplyCode  uint16 // reason
+       ReplyText  string // description
+       Exchange   string // basic.publish exchange
+       RoutingKey string // basic.publish routing key
+
+       // Properties
+       ContentType     string    // MIME content type
+       ContentEncoding string    // MIME content encoding
+       Headers         Table     // Application or header exchange table
+       DeliveryMode    uint8     // queue implementation use - non-persistent (1) or persistent (2)
+       Priority        uint8     // queue implementation use - 0 to 9
+       CorrelationId   string    // application use - correlation identifier
+       ReplyTo         string    // application use - address to to reply to (ex: RPC)
+       Expiration      string    // implementation use - message expiration spec
+       MessageId       string    // application use - message identifier
+       Timestamp       time.Time // application use - message timestamp
+       Type            string    // application use - message type name
+       UserId          string    // application use - creating user id
+       AppId           string    // application use - creating application
+
+       Body []byte
+}
+
+func newReturn(msg basicReturn) *Return {
+       props, body := msg.getContent()
+
+       return &Return{
+               ReplyCode:  msg.ReplyCode,
+               ReplyText:  msg.ReplyText,
+               Exchange:   msg.Exchange,
+               RoutingKey: msg.RoutingKey,
+
+               Headers:         props.Headers,
+               ContentType:     props.ContentType,
+               ContentEncoding: props.ContentEncoding,
+               DeliveryMode:    props.DeliveryMode,
+               Priority:        props.Priority,
+               CorrelationId:   props.CorrelationId,
+               ReplyTo:         props.ReplyTo,
+               Expiration:      props.Expiration,
+               MessageId:       props.MessageId,
+               Timestamp:       props.Timestamp,
+               Type:            props.Type,
+               UserId:          props.UserId,
+               AppId:           props.AppId,
+
+               Body: body,
+       }
+}