本文整理汇总了Golang中github.com/go-stomp/stomp/frame.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestSuccessfulTx
func (s *TxStoreSuite) TestSuccessfulTx(c *C) {
txs := txStore{}
err := txs.Begin("tx1")
c.Check(err, IsNil)
err = txs.Begin("tx2")
c.Assert(err, IsNil)
f1 := frame.New(frame.MESSAGE,
frame.Destination, "/queue/1")
f2 := frame.New(frame.MESSAGE,
frame.Destination, "/queue/2")
f3 := frame.New(frame.MESSAGE,
frame.Destination, "/queue/3")
f4 := frame.New(frame.MESSAGE,
frame.Destination, "/queue/4")
err = txs.Add("tx1", f1)
c.Assert(err, IsNil)
err = txs.Add("tx1", f2)
c.Assert(err, IsNil)
err = txs.Add("tx1", f3)
c.Assert(err, IsNil)
err = txs.Add("tx2", f4)
var tx1 []*frame.Frame
txs.Commit("tx1", func(f *frame.Frame) error {
tx1 = append(tx1, f)
return nil
})
c.Check(err, IsNil)
var tx2 []*frame.Frame
err = txs.Commit("tx2", func(f *frame.Frame) error {
tx2 = append(tx2, f)
return nil
})
c.Check(err, IsNil)
c.Check(len(tx1), Equals, 3)
c.Check(tx1[0], Equals, f1)
c.Check(tx1[1], Equals, f2)
c.Check(tx1[2], Equals, f3)
c.Check(len(tx2), Equals, 1)
c.Check(tx2[0], Equals, f4)
// already committed, so should cause an error
err = txs.Commit("tx1", func(f *frame.Frame) error {
c.Fatal("should not be called")
return nil
})
c.Check(err, Equals, txUnknown)
}
开发者ID:kolonse,项目名称:stomp,代码行数:60,代码来源:tx_store_test.go
示例2: Test1
func (s *MemoryQueueSuite) Test1(c *C) {
mq := NewMemoryQueueStorage()
mq.Start()
f1 := frame.New(frame.MESSAGE,
frame.Destination, "/queue/test",
frame.MessageId, "msg-001",
frame.Subscription, "1")
err := mq.Enqueue("/queue/test", f1)
c.Assert(err, IsNil)
f2 := frame.New(frame.MESSAGE,
frame.Destination, "/queue/test",
frame.MessageId, "msg-002",
frame.Subscription, "1")
err = mq.Enqueue("/queue/test", f2)
c.Assert(err, IsNil)
f3 := frame.New(frame.MESSAGE,
frame.Destination, "/queue/test2",
frame.MessageId, "msg-003",
frame.Subscription, "2")
err = mq.Enqueue("/queue/test2", f3)
c.Assert(err, IsNil)
// attempt to dequeue from a different queue
f, err := mq.Dequeue("/queue/other-queue")
c.Check(err, IsNil)
c.Assert(f, IsNil)
f, err = mq.Dequeue("/queue/test2")
c.Check(err, IsNil)
c.Assert(f, Equals, f3)
f, err = mq.Dequeue("/queue/test")
c.Check(err, IsNil)
c.Assert(f, Equals, f1)
f, err = mq.Dequeue("/queue/test")
c.Check(err, IsNil)
c.Assert(f, Equals, f2)
f, err = mq.Dequeue("/queue/test")
c.Check(err, IsNil)
c.Assert(f, IsNil)
f, err = mq.Dequeue("/queue/test2")
c.Check(err, IsNil)
c.Assert(f, IsNil)
}
开发者ID:kolonse,项目名称:stomp,代码行数:53,代码来源:memory_queue_test.go
示例3: Test_successful_connect_with_nonstandard_header
func (s *StompSuite) Test_successful_connect_with_nonstandard_header(c *C) {
resetId()
fc1, fc2 := testutil.NewFakeConn(c)
stop := make(chan struct{})
go func() {
defer func() {
fc2.Close()
close(stop)
}()
reader := frame.NewReader(fc2)
writer := frame.NewWriter(fc2)
f1, err := reader.Read()
c.Assert(err, IsNil)
c.Assert(f1.Command, Equals, "CONNECT")
c.Assert(f1.Header.Get("login"), Equals, "guest")
c.Assert(f1.Header.Get("passcode"), Equals, "guest")
c.Assert(f1.Header.Get("host"), Equals, "/")
c.Assert(f1.Header.Get("x-max-length"), Equals, "50")
connectedFrame := frame.New("CONNECTED")
connectedFrame.Header.Add("session", "session-0voRHrG-VbBedx1Gwwb62Q")
connectedFrame.Header.Add("heart-beat", "0,0")
connectedFrame.Header.Add("server", "RabbitMQ/3.2.1")
connectedFrame.Header.Add("version", "1.0")
writer.Write(connectedFrame)
f2, err := reader.Read()
c.Assert(err, IsNil)
c.Assert(f2.Command, Equals, "DISCONNECT")
receipt, _ := f2.Header.Contains("receipt")
c.Check(receipt, Equals, "1")
writer.Write(frame.New("RECEIPT", frame.ReceiptId, "1"))
}()
client, err := Connect(fc1,
ConnOpt.Login("guest", "guest"),
ConnOpt.Host("/"),
ConnOpt.Header("x-max-length", "50"))
c.Assert(err, IsNil)
c.Assert(client, NotNil)
c.Assert(client.Version(), Equals, V10)
c.Assert(client.Session(), Equals, "session-0voRHrG-VbBedx1Gwwb62Q")
c.Assert(client.Server(), Equals, "RabbitMQ/3.2.1")
err = client.Disconnect()
c.Assert(err, IsNil)
<-stop
}
开发者ID:jjeffery,项目名称:stomp,代码行数:51,代码来源:conn_test.go
示例4: TestDetermineVersion_MultipleVersions
func (s *FrameSuite) TestDetermineVersion_MultipleVersions(c *C) {
f := frame.New(frame.CONNECT)
f.Header.Add(frame.AcceptVersion, "1.2,1.1,1.0,2.0")
version, err := determineVersion(f)
c.Check(version, Equals, stomp.V12)
c.Check(err, IsNil)
}
开发者ID:kolonse,项目名称:stomp,代码行数:7,代码来源:frame_test.go
示例5: TestDetermineVersion_V11_Connect
func (s *FrameSuite) TestDetermineVersion_V11_Connect(c *C) {
f := frame.New(frame.CONNECT)
f.Header.Add(frame.AcceptVersion, "1.1")
version, err := determineVersion(f)
c.Check(version, Equals, stomp.V11)
c.Check(err, IsNil)
}
开发者ID:kolonse,项目名称:stomp,代码行数:7,代码来源:frame_test.go
示例6: TestDetermineVersion_V10_Stomp
func (s *FrameSuite) TestDetermineVersion_V10_Stomp(c *C) {
// the "STOMP" command was introduced in V1.1, so it must
// have an accept-version header
f := frame.New(frame.STOMP)
_, err := determineVersion(f)
c.Check(err, Equals, missingHeader(frame.AcceptVersion))
}
开发者ID:kolonse,项目名称:stomp,代码行数:7,代码来源:frame_test.go
示例7: NewFrame
func (co *connOptions) NewFrame() (*frame.Frame, error) {
f := frame.New(co.FrameCommand)
if co.Host != "" {
f.Header.Set(frame.Host, co.Host)
}
// heart-beat
{
send := co.WriteTimeout / time.Millisecond
recv := co.ReadTimeout / time.Millisecond
f.Header.Set(frame.HeartBeat, fmt.Sprintf("%d,%d", send, recv))
}
// login, passcode
if co.Login != "" || co.Passcode != "" {
f.Header.Set(frame.Login, co.Login)
f.Header.Set(frame.Passcode, co.Passcode)
}
// accept-version
f.Header.Set(frame.AcceptVersion, strings.Join(co.AcceptVersions, ","))
// custom header entries -- note that these do not override
// header values already set as they are added to the end of
// the header array
f.Header.AddHeader(co.Header)
return f, nil
}
开发者ID:kolonse,项目名称:stomp,代码行数:29,代码来源:conn_options.go
示例8: TestHeartBeat
func (s *FrameSuite) TestHeartBeat(c *C) {
f := frame.New(frame.CONNECT,
frame.AcceptVersion, "1.2",
frame.Host, "XX")
// no heart-beat header means zero values
x, y, err := getHeartBeat(f)
c.Check(x, Equals, 0)
c.Check(y, Equals, 0)
c.Check(err, IsNil)
f.Header.Add("heart-beat", "123,456")
x, y, err = getHeartBeat(f)
c.Check(x, Equals, 123)
c.Check(y, Equals, 456)
c.Check(err, IsNil)
f.Header.Set(frame.HeartBeat, "invalid")
x, y, err = getHeartBeat(f)
c.Check(x, Equals, 0)
c.Check(y, Equals, 0)
c.Check(err, Equals, invalidHeartBeat)
f.Header.Del(frame.HeartBeat)
_, _, err = getHeartBeat(f)
c.Check(err, IsNil)
f.Command = frame.SEND
_, _, err = getHeartBeat(f)
c.Check(err, Equals, invalidOperationForFrame)
}
开发者ID:kolonse,项目名称:stomp,代码行数:31,代码来源:frame_test.go
示例9: Unsubscribe
// Unsubscribes and closes the channel C.
func (s *Subscription) Unsubscribe(opts ...func(*frame.Frame) error) error {
if s.completed {
return ErrCompletedSubscription
}
f := frame.New(frame.UNSUBSCRIBE, frame.Id, s.id)
for _, opt := range opts {
if opt == nil {
return ErrNilOption
}
err := opt(f)
if err != nil {
return err
}
}
s.conn.sendFrame(f)
s.completedMutex.Lock()
if !s.completed {
s.completed = true
close(s.C)
}
s.completedMutex.Unlock()
return nil
}
开发者ID:jjeffery,项目名称:stomp,代码行数:26,代码来源:subscription.go
示例10: connectHelper
// Sets up a connection for testing
func connectHelper(c *C, version Version) (*Conn, *fakeReaderWriter) {
fc1, fc2 := testutil.NewFakeConn(c)
stop := make(chan struct{})
reader := frame.NewReader(fc2)
writer := frame.NewWriter(fc2)
go func() {
f1, err := reader.Read()
c.Assert(err, IsNil)
c.Assert(f1.Command, Equals, "CONNECT")
f2 := frame.New("CONNECTED", "version", version.String())
writer.Write(f2)
close(stop)
}()
conn, err := Connect(fc1)
c.Assert(err, IsNil)
c.Assert(conn, NotNil)
<-stop
return conn, &fakeReaderWriter{
reader: reader,
writer: writer,
conn: fc2,
}
}
开发者ID:jjeffery,项目名称:stomp,代码行数:27,代码来源:conn_test.go
示例11: TestHeartBeatReadTimeout
func (s *StompSuite) TestHeartBeatReadTimeout(c *C) {
conn, rw := createHeartBeatConnection(c, 100, 10000, time.Millisecond)
go func() {
f1, err := rw.Read()
c.Assert(err, IsNil)
c.Assert(f1.Command, Equals, "SUBSCRIBE")
messageFrame := frame.New("MESSAGE",
"destination", f1.Header.Get("destination"),
"message-id", "1",
"subscription", f1.Header.Get("id"))
messageFrame.Body = []byte("Message body")
rw.Write(messageFrame)
}()
sub, err := conn.Subscribe("/queue/test1", AckAuto)
c.Assert(err, IsNil)
c.Check(conn.readTimeout, Equals, 101*time.Millisecond)
//println("read timeout", conn.readTimeout.String())
msg, ok := <-sub.C
c.Assert(msg, NotNil)
c.Assert(ok, Equals, true)
msg, ok = <-sub.C
c.Assert(msg, NotNil)
c.Assert(msg.Err, NotNil)
c.Assert(msg.Err.Error(), Equals, "read timeout")
msg, ok = <-sub.C
c.Assert(msg, IsNil)
c.Assert(ok, Equals, false)
}
开发者ID:jjeffery,项目名称:stomp,代码行数:33,代码来源:conn_test.go
示例12: createHeartBeatConnection
func createHeartBeatConnection(
c *C,
readTimeout, writeTimeout int,
readTimeoutError time.Duration) (*Conn, *fakeReaderWriter) {
fc1, fc2 := testutil.NewFakeConn(c)
stop := make(chan struct{})
reader := frame.NewReader(fc2)
writer := frame.NewWriter(fc2)
go func() {
f1, err := reader.Read()
c.Assert(err, IsNil)
c.Assert(f1.Command, Equals, "CONNECT")
c.Assert(f1.Header.Get("heart-beat"), Equals, "1,1")
f2 := frame.New("CONNECTED", "version", "1.2")
f2.Header.Add("heart-beat", fmt.Sprintf("%d,%d", readTimeout, writeTimeout))
writer.Write(f2)
close(stop)
}()
conn, err := Connect(fc1,
ConnOpt.HeartBeat(time.Millisecond, time.Millisecond),
ConnOpt.HeartBeatError(readTimeoutError))
c.Assert(conn, NotNil)
c.Assert(err, IsNil)
<-stop
return conn, &fakeReaderWriter{
reader: reader,
writer: writer,
conn: fc2,
}
}
开发者ID:jjeffery,项目名称:stomp,代码行数:33,代码来源:conn_test.go
示例13: TestDetermineVersion_IncompatibleVersions
func (s *FrameSuite) TestDetermineVersion_IncompatibleVersions(c *C) {
f := frame.New(frame.CONNECT)
f.Header.Add(frame.AcceptVersion, "0.2,0.1,1.3,2.0")
version, err := determineVersion(f)
c.Check(version, Equals, stomp.Version(""))
c.Check(err, Equals, unknownVersion)
}
开发者ID:kolonse,项目名称:stomp,代码行数:7,代码来源:frame_test.go
示例14: TestTopicWithoutSubscription
func (s *TopicSuite) TestTopicWithoutSubscription(c *C) {
topic := newTopic("destination")
f := frame.New(frame.MESSAGE,
frame.Destination, "destination")
topic.Enqueue(f)
}
开发者ID:kolonse,项目名称:stomp,代码行数:8,代码来源:topic_test.go
示例15: createAckNackFrame
// Create an ACK or NACK frame. Complicated by version incompatibilities.
func (c *Conn) createAckNackFrame(msg *Message, ack bool) (*frame.Frame, error) {
if !ack && !c.version.SupportsNack() {
return nil, ErrNackNotSupported
}
if msg.Header == nil || msg.Subscription == nil || msg.Conn == nil {
return nil, ErrNotReceivedMessage
}
if msg.Subscription.AckMode() == AckAuto {
if ack {
// not much point sending an ACK to an auto subscription
return nil, nil
} else {
// sending a NACK for an ack:auto subscription makes no
// sense
return nil, ErrCannotNackAutoSub
}
}
var f *frame.Frame
if ack {
f = frame.New(frame.ACK)
} else {
f = frame.New(frame.NACK)
}
switch c.version {
case V10, V11:
f.Header.Add(frame.Subscription, msg.Subscription.Id())
if messageId, ok := msg.Header.Contains(frame.MessageId); ok {
f.Header.Add(frame.MessageId, messageId)
} else {
return nil, missingHeader(frame.MessageId)
}
case V12:
if ack, ok := msg.Header.Contains(frame.Ack); ok {
f.Header.Add(frame.Id, ack)
} else {
return nil, missingHeader(frame.Ack)
}
}
return f, nil
}
开发者ID:jjeffery,项目名称:stomp,代码行数:46,代码来源:conn.go
示例16: Unsubscribe
// Unsubscribes and closes the channel C.
func (s *Subscription) Unsubscribe() error {
if s.completed {
return ErrCompletedSubscription
}
f := frame.New(frame.UNSUBSCRIBE, frame.Id, s.id)
s.conn.sendFrame(f)
s.completed = true
close(s.C)
return nil
}
开发者ID:kolonse,项目名称:stomp,代码行数:11,代码来源:subscription.go
示例17: Commit
// Commit will commit the transaction. All messages and acknowledgements
// sent to the STOMP server on this transaction will be processed atomically.
func (tx *Transaction) Commit() error {
if tx.completed {
return ErrCompletedTransaction
}
f := frame.New(frame.COMMIT, frame.Transaction, tx.id)
tx.conn.sendFrame(f)
tx.completed = true
return nil
}
开发者ID:worg,项目名称:stomp,代码行数:13,代码来源:transaction.go
示例18: sendReceiptImmediately
// Sends a RECEIPT frame to the client if the frame f contains
// a receipt header. If the frame does contain a receipt header,
// it will be removed from the frame.
func (c *Conn) sendReceiptImmediately(f *frame.Frame) error {
if receipt, ok := f.Header.Contains(frame.Receipt); ok {
// Remove the receipt header from the frame. This is handy
// for transactions, because the frame has its receipt
// header removed prior to entering the transaction store.
// When the frame is processed upon transaction commit, it
// will not have a receipt header anymore.
f.Header.Del(frame.Receipt)
return c.sendImmediately(frame.New(frame.RECEIPT,
frame.ReceiptId, receipt))
}
return nil
}
开发者ID:kolonse,项目名称:stomp,代码行数:16,代码来源:conn.go
示例19: TestTopicWithOneSubscription
func (s *TopicSuite) TestTopicWithOneSubscription(c *C) {
sub := &fakeSubscription{}
topic := newTopic("destination")
topic.Subscribe(sub)
f := frame.New(frame.MESSAGE,
frame.Destination, "destination")
topic.Enqueue(f)
c.Assert(len(sub.Frames), Equals, 1)
c.Assert(sub.Frames[0], Equals, f)
}
开发者ID:kolonse,项目名称:stomp,代码行数:14,代码来源:topic_test.go
示例20: sendErrorImmediately
// Send an ERROR frame to the client and immediately. The error
// message is derived from err. If f is non-nil, it is the frame
// whose contents have caused the error. Include the receipt-id
// header if the frame contains a receipt header.
func (c *Conn) sendErrorImmediately(err error, f *frame.Frame) {
errorFrame := frame.New(frame.ERROR,
frame.Message, err.Error())
// Include a receipt-id header if the frame that prompted the error had
// a receipt header (as suggested by the STOMP protocol spec).
if f != nil {
if receipt, ok := f.Header.Contains(frame.Receipt); ok {
errorFrame.Header.Add(frame.ReceiptId, receipt)
}
}
// send the frame to the client, ignore any error condition
// because we are about to close the connection anyway
_ = c.sendImmediately(errorFrame)
}
开发者ID:kolonse,项目名称:stomp,代码行数:20,代码来源:conn.go
注:本文中的github.com/go-stomp/stomp/frame.New函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论