• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang trace.NewFrame函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/gocircuit/circuit/kit/tele/trace.NewFrame函数的典型用法代码示例。如果您正苦于以下问题:Golang NewFrame函数的具体用法?Golang NewFrame怎么用?Golang NewFrame使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了NewFrame函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: Dial

func (ct *codecTransport) Dial(addr net.Addr) (codec.CarrierConn, error) {
	c, err := net.Dial("tcp", addr.String())
	if err != nil {
		return nil, err
	}
	return newCodecConn(trace.NewFrame("hmac", "dial"), c.(*net.TCPConn), ct.key)
}
开发者ID:hanjin8307,项目名称:circuit,代码行数:7,代码来源:codec.go


示例2: TestCodec

func TestCodec(t *testing.T) {

	f := trace.NewFrame()
	sx := sandbox.NewUnreliableTransport(f.Refine("sandbox"), 5, 0, time.Second/3, time.Second/3)
	hx := chain.NewTransport(f.Refine("chain"), sx)
	fx := faithful.NewTransport(f.Refine("faithful"), hx)
	cx := codec.NewTransport(fx, codec.GobCodec{})
	bx := NewTransport(f.Refine("session"), cx)

	// Sync
	ya, yb := make(chan int), make(chan int)

	// Accepter
	go func() {
		as := bx.Listen(sandbox.Addr("@")).AcceptSession()
		for i := 0; i < testN; i++ {
			go testAcceptConn(t, as, ya, yb)
		}
	}()

	// Dialer
	ds := bx.DialSession(sandbox.Addr("@"), nil)
	go func() {
		for i := 0; i < testN; i++ {
			go testDialConn(t, ds, ya, yb)
		}
	}()

	for i := 0; i < testN; i++ {
		<-yb
	}
}
开发者ID:hanjin8307,项目名称:circuit,代码行数:32,代码来源:_blend_test.go


示例3: TestBuffer

func TestBuffer(t *testing.T) {
	bfr := NewBuffer(trace.NewFrame("TestBuffer"), 2)
	bfr.Write(testSeqNo(0))
	bfr.Write(testSeqNo(1))
	bfr.Remove(1)
	bfr.Write(testSeqNo(2))
	bfr.Seek(SeqNo(1))
	// Read 1
	chunk, seqno, err := bfr.Read()
	if err != nil {
		t.Fatalf("read (%s) or bad seqno", err)
	}
	if chunk != testSeqNo(1) || seqno != SeqNo(1) {
		t.Fatalf("chunk=%d seqno=%d; expecting %d", chunk, seqno, 1)
	}
	// Read 2
	chunk, seqno, err = bfr.Read()
	if err != nil {
		t.Fatalf("read (%s)", err)
	}
	if chunk != testSeqNo(2) || seqno != SeqNo(2) {
		t.Fatalf("chunk=%d seqno=%d; expecting %d", chunk, seqno, 2)
	}
	bfr.Remove(2)
	bfr.Close()
	if _, _, err := bfr.Read(); err != io.EOF {
		t.Fatalf("u (%s)", err)
	}
}
开发者ID:prodigeni,项目名称:circuit,代码行数:29,代码来源:buffer_test.go


示例4: TestConnOverTCP

func TestConnOverTCP(t *testing.T) {
	frame := trace.NewFrame()
	x := tcp.Transport

	ready := make(chan int, 2)
	sent, recv := make(map[byte]struct{}), make(map[byte]struct{})

	// Accepter endpoint
	go func() {
		l := NewListener(frame.Refine("listener"), x, tcp.Addr(":17222"))
		ready <- 1 // SYNC: Notify that listener is accepting
		testGreedyRead(t, l.Accept(), recv)
		ready <- 1
	}()

	// Dialer endpoint
	<-ready // SYNC: Wait for listener to start accepting
	d := NewDialer(frame.Refine("dialer"), x)
	conn := d.Dial(tcp.Addr("localhost:17222"))
	testGreedyWrite(t, conn, sent)
	<-ready // SYNC: Wait for accepter goroutine to complete

	// Make sure all marked writes have been received
	if !reflect.DeepEqual(sent, recv) {
		t.Errorf("expected %#v, got %#v", sent, recv)
		failNow()
	}
}
开发者ID:prodigeni,项目名称:circuit,代码行数:28,代码来源:tcp_test.go


示例5: Accept

func (l listener) Accept() (net.Conn, error) {
	c, err := l.Listener.Accept()
	if err != nil {
		return nil, err
	}
	return &conn{trace.NewFrame("tcp", "acpt"), c}, nil
}
开发者ID:prodigeni,项目名称:circuit,代码行数:7,代码来源:tcp.go


示例6: TestHalfConn

func TestHalfConn(t *testing.T) {
	ready := make(chan int)
	f := trace.NewFrame("TestHalfConn")
	p, q := NewPipe(f.Refine("@r"), f.Refine("@w"), Addr("@r"), Addr("@w"))
	// Read goroutine
	go func() {
		defer func() {
			close(ready)
		}()
		b, err := ioutil.ReadAll(q)
		if err != nil {
			log.Printf("read all (%s)", err)
			t.Fatalf("read all (%s)", err)
		}
		if len(b) != N {
			t.Fatalf("bad length")
		}
		for i := 0; i < N; i++ {
			if b[i] != byte(i) {
				t.Fatalf("unexpected byte @%d", i)
			}
		}
	}()
	// Write logic
	for i := 0; i < N; i++ {
		if n, err := p.Write([]byte{byte(i)}); err != nil || n != 1 {
			t.Fatalf("write %d (%v)", n, err)
		}
	}
	if err := p.Close(); err != nil {
		t.Fatalf("close (%s)", err)
	}
	<-ready
}
开发者ID:prodigeni,项目名称:circuit,代码行数:34,代码来源:sandbox_test.go


示例7: Accept

func (l codecListener) Accept() codec.CarrierConn {
	c, err := l.Listener.Accept()
	if err != nil {
		log.Printf("error accepting tcp connection: %v", err)
		return nil
	}
	return newCodecConn(trace.NewFrame("tcp", "acpt"), c.(*net.TCPConn))
}
开发者ID:hanjin8307,项目名称:circuit,代码行数:8,代码来源:codec.go


示例8: NewStructOverTCP

func NewStructOverTCP() *blend.Transport {
	f := trace.NewFrame("tele")
	// Carrier
	x2 := tcp.CodecTransport
	// Codec
	x3 := codec.NewTransport(x2, codec.GobCodec{})
	// Blend
	return blend.NewTransport(f.Refine("blend"), x3)
}
开发者ID:hanjin8307,项目名称:circuit,代码行数:9,代码来源:tele.go


示例9: NewStructOverTCPWithHMAC

func NewStructOverTCPWithHMAC(key []byte) *blend.Transport {
	f := trace.NewFrame("tele")
	// Carrier
	x2 := hmac.NewTransport(key)
	// Codec
	x3 := codec.NewTransport(x2, codec.GobCodec{})
	// Blend
	return blend.NewTransport(f.Refine("blend"), x3)
}
开发者ID:hanjin8307,项目名称:circuit,代码行数:9,代码来源:tele.go


示例10: TestReliable

func TestReliable(t *testing.T) {

	sandbox := NewReliableTransport(trace.NewFrame("TestReliable"))
	ready := make(chan int)

	go func() {
		l, err := sandbox.Listen(Addr("x"))
		if err != nil {
			t.Fatalf("listen (%s)", err)
		}
		for i := 0; i < N; i++ {
			ready <- 1
			//println("receiver", i)
			conn, err := l.Accept()
			if err != nil {
				t.Fatalf("accept (%s)", err)
			}
			r := make([]byte, 3)
			if _, err := conn.Read(r); err != nil {
				t.Fatalf("read (%s)", err)
			}
			if !reflect.DeepEqual([]byte{0, 1, 2}, r) {
				t.Fatalf("unexpected read")
			}
			var w []byte = []byte{0, 1, 2}
			if _, err := conn.Write(w); err != nil {
				t.Fatalf("write (%s)", err)
			}
			if err := conn.Close(); err != nil {
				t.Fatalf("close (%s)", err)
			}
		}
		ready <- 1
	}()

	for i := 0; i < N; i++ {
		<-ready
		//println("sender", i)
		conn, err := sandbox.Dial(Addr("x"))
		if err != nil {
			t.Fatalf("dial (%s)", err)
		}
		var w []byte = []byte{0, 1, 2}
		if _, err := conn.Write(w); err != nil {
			t.Fatalf("write (%s)", err)
		}
		r := make([]byte, 3)
		if _, err := conn.Read(r); err != nil {
			t.Fatalf("read (%s)", err)
		}
		if err := conn.Close(); err != nil {
			t.Fatalf("close (%s)", err)
		}
	}
	<-ready
}
开发者ID:prodigeni,项目名称:circuit,代码行数:56,代码来源:sandbox_test.go


示例11: TestCodec

func TestCodec(t *testing.T) {

	// Transport
	f := trace.NewFrame()
	// Carrier
	sx := sandbox.NewRandomUnreliableTransport(f.Refine("sandbox"), 3, 3, time.Second/4, time.Second/4)
	// Chain
	hx := chain.NewTransport(f.Refine("chain"), sx)
	// Faithful
	fx := faithful.NewTransport(f.Refine("faithful"), hx)
	// Codec
	cx := NewTransport(fx, GobCodec{})

	// Sync
	y := make(chan int)

	// Accepter
	go func() {
		l := cx.Listen(sandbox.Addr("@"))
		for i := 0; i < testN; i++ {
			y <- 1
			conn := l.Accept()
			msg := &testMsg{}
			if err := conn.Read(msg); err != nil {
				t.Fatalf("read (%s)", err)
				failNow()
			}
			if msg.Carry != i {
				t.Fatalf("check")
				failNow()
			}
			f.Printf("READ %d/%d CLOSING", i+1, testN)
			conn.Close()
			f.Printf("READ %d/%d √", i+1, testN)
		}
		y <- 1
	}()

	// Dialer
	for i := 0; i < testN; i++ {
		<-y
		conn := cx.Dial(sandbox.Addr("@"))
		if err := conn.Write(&testMsg{i}); err != nil {
			t.Fatalf("write (%s)", err)
			failNow()
		}
		f.Printf("WRITE %d/%d CLOSING", i+1, testN)
		if err := conn.Close(); err != nil {
			t.Fatalf("close (%s)", err)
			failNow()
		}
		f.Printf("WRITE %d/%d √", i+1, testN)
	}
	<-y
}
开发者ID:hanjin8307,项目名称:circuit,代码行数:55,代码来源:_codec_test.go


示例12: NewServer

func NewServer(inAddr, outAddr string) (*Server, error) {
	t := tele.NewStructOverTCP()
	l := t.Listen(tcp.Addr(outAddr))
	if outAddr == "" {
		outAddr = l.Addr().String()
		fmt.Println(outAddr)
	}
	srv := &Server{frame: trace.NewFrame("tele", "server"), tele: t, inAddr: inAddr, outAddr: outAddr}
	srv.frame.Bind(srv)
	go srv.loop(l)
	return srv, nil
}
开发者ID:prodigeni,项目名称:circuit,代码行数:12,代码来源:server.go


示例13: NewStructOverTCP

func NewStructOverTCP() *blend.Transport {
	f := trace.NewFrame("tele")
	// Carrier
	x0 := tcp.Transport
	// Chain
	x1 := chain.NewTransport(f.Refine("chain"), x0)
	// Faithful
	x2 := faithful.NewTransport(f.Refine("faithful"), x1)
	// Codec
	x3 := codec.NewTransport(x2, codec.GobCodec{})
	// Blend
	return blend.NewTransport(f.Refine("blend"), x3)
}
开发者ID:prodigeni,项目名称:circuit,代码行数:13,代码来源:tele.go


示例14: Dial

func (transport) Dial(addr net.Addr) (net.Conn, error) {
	c, err := net.Dial("tcp", addr.String())
	if err != nil {
		operr, ok := err.(*net.OpError)
		if !ok {
			return nil, err
		}
		if operr.Temporary() {
			return nil, err
		}
		return nil, chain.ErrRIP
	}
	return &conn{trace.NewFrame("tcp", "dial"), c}, nil
}
开发者ID:prodigeni,项目名称:circuit,代码行数:14,代码来源:tcp.go


示例15: TestUnreliable

func TestUnreliable(t *testing.T) {
	f := trace.NewFrame("TestDropTail")
	q, p := NewSievePipe(f.Refine("@r"), f.Refine("@w"), Addr("@r"), Addr("@w"), N, N, 0, 0)
	// Read goroutine
	ready := make(chan int)
	go func() {
		defer func() {
			close(ready)
		}()
		b, err := ioutil.ReadAll(q)
		// We get io.ErrUnexpectedEOF because the closing eof{} is not transmitted properly
		if err != io.ErrUnexpectedEOF {
			t.Fatalf("read all (%s)", err)
		}
		if len(b) != N {
			t.Fatalf("bad length")
		}
		for i := 0; i < N; i++ {
			if b[i] != byte(i) {
				t.Fatalf("unexpected byte @%d", i)
			}
		}
	}()
	// The following writes go through
	for i := 0; i < N; i++ {
		if n, err := p.Write([]byte{byte(i)}); err != nil || n != 1 {
			t.Fatalf("write %d (%v)", n, err)
		}
	}
	// The following writes are all dropped silently
	for i := 0; i+1 < N; i++ {
		if n, err := p.Write([]byte{byte(i)}); err != nil || n != 1 {
			t.Fatalf("write %d (%v)", n, err)
		}
	}
	// The last write is dropped quietly and also returns the unexpected EOF
	/*
		if n, err := p.Write([]byte{N - 1}); err != io.ErrUnexpectedEOF || n != 1 {
			t.Fatalf("write expects error (%v), got (%v); expects len %d, got %d", io.ErrUnexpectedEOF, err, 1, n)
		}
	*/
	if err := p.Close(); err != nil {
		t.Fatalf("close (%s)", err)
	}
	<-ready
}
开发者ID:prodigeni,项目名称:circuit,代码行数:46,代码来源:sandbox_test.go


示例16: testConn

func testConn(t *testing.T, mode testMode) {
	f := trace.NewFrame("testConn")
	f.Bind(&f)
	fsx := f.Refine("sandbox")
	fsx.Bind(&fsx)

	var x *sandbox.Transport
	if mode.Random {
		x = sandbox.NewRandomUnreliableTransport(fsx, mode.NOK, mode.NDrop, exp, exp)
	} else {
		x = sandbox.NewUnreliableTransport(fsx, mode.NOK, mode.NDrop, exp, exp)
	}

	ready := make(chan int, 3)

	// Accept side
	go func() {
		ax := NewTransport(f.Refine("faithful:a"), chain.NewTransport(f.Refine("chain:a"), x))
		l := ax.Listen(sandbox.Addr("@"))
		ready <- 1
		c := l.Accept()
		switch mode.Kind {
		case testDWAR:
			testRead(f, t, c, ready)
		case testDRAW:
			testWrite(f, t, c, ready)
		}
	}()

	// Dial side
	dx := NewTransport(f.Refine("faithful:d"), chain.NewTransport(f.Refine("chain:d"), x))
	<-ready
	c := dx.Dial(sandbox.Addr("@"))
	setabrt(func() {
		dbg := c.Debug().(*sandbox.DebugInfo)
		dbg.Out.Abort()
	})
	switch mode.Kind {
	case testDWAR:
		testWrite(f, t, c, ready)
	case testDRAW:
		testRead(f, t, c, ready)
	}
	_, _ = <-ready, <-ready // One from testRead and one from testWrite
}
开发者ID:prodigeni,项目名称:circuit,代码行数:45,代码来源:faithful_test.go


示例17: testConn

func testConn(t *testing.T, mode connMode) {
	// Transport
	frame := trace.NewFrame()
	var x Carrier
	if mode.Random {
		x = sandbox.NewRandomUnreliableTransport(frame.Refine("sandbox"), mode.NOK, mode.NDrop, 0, 0)
	} else {
		x = sandbox.NewUnreliableTransport(frame.Refine("sandbox"), mode.NOK, mode.NDrop, 0, 0)
	}
	// Signalling
	ready := make(chan int, 2)
	feedfwd := make(chan byte, mode.NWrite()+1)

	// Accepter endpoint
	go func() {
		defer func() {
			ready <- 1 // SYNC: Notify that accepter-side logic is done
		}()

		l := NewListener(frame.Refine("chain", "listener"), x, sandbox.Addr(""))
		ready <- 1 // SYNC: Notify that listener is accepting
		switch mode.Kind {
		case testDWAR:
			testRead(t, l.Accept(), feedfwd)
		case testDRAW:
			testWrite(t, l.Accept(), mode, feedfwd)
		default:
			panic("u")
		}
	}()

	// Dialer endpoint
	<-ready // SYNC: Wait for listener to start accepting
	d := NewDialer(frame.Refine("chain", "dialer"), x)
	conn := d.Dial(sandbox.Addr(""))
	switch mode.Kind {
	case testDWAR:
		testWrite(t, conn, mode, feedfwd)
	case testDRAW:
		testRead(t, conn, feedfwd)
	default:
		panic("u")
	}
	<-ready // SYNC: Wait for accepter goroutine to complete
}
开发者ID:prodigeni,项目名称:circuit,代码行数:45,代码来源:chain_test.go


示例18: TestClosure

func TestClosure(t *testing.T) {
	const testK = 1

	f := trace.NewFrame()
	sx := tcp.Transport
	hx := chain.NewTransport(f.Refine("chain"), sx)
	fx := faithful.NewTransport(f.Refine("faithful"), hx)
	cx := codec.NewTransport(fx, codec.GobCodec{})
	bx := NewTransport(f.Refine("session"), cx)

	// Sync
	ya, yb := make(chan int), make(chan int)

	a, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:40090")

	// Accepter
	go func() {
		as := bx.Listen(a).AcceptSession()
		for i := 0; i < testK; i++ {
			go testAcceptConn(t, as, ya, yb)
		}
	}()

	// Dialer
	ds := bx.DialSession(a, nil)
	go func() {
		for i := 0; i < testK; i++ {
			go testDialConn(t, ds, ya, yb)
		}
	}()

	for i := 0; i < testK; i++ {
		<-yb
	}

	ds.Close()
	println("hold a minute...")
	time.Sleep(time.Minute)
	println("now check that the test process has no open tcp connections...")
	time.Sleep(time.Minute)
	println("great.")
}
开发者ID:hanjin8307,项目名称:circuit,代码行数:42,代码来源:_close_test.go


示例19: NewClient

func NewClient(inAddr, outAddr string) {
	cli := &Client{frame: trace.NewFrame("tele", "client"), outAddr: outAddr}
	cli.frame.Bind(cli)

	// Make teleport transport
	t := tele.NewStructOverTCP()

	// Listen on input TCP address
	l, err := net.Listen("tcp", inAddr)
	if err != nil {
		cli.frame.Printf("listen on teleport address %s (%s)", inAddr, err)
		os.Exit(1)
	}
	if inAddr == "" {
		inAddr = l.Addr().String()
		fmt.Println(inAddr)
	}
	cli.tele, cli.inAddr = t, inAddr
	go cli.loop(l)
	return
}
开发者ID:prodigeni,项目名称:circuit,代码行数:21,代码来源:client.go


示例20: Listen

// Authors:
//   2013 Petar Maymounkov <[email protected]>

// Package tcp implements a carrier transport over TCP.
package tcp

import (
	"net"
	"strings"

	"github.com/gocircuit/circuit/kit/tele/chain"
	"github.com/gocircuit/circuit/kit/tele/trace"
)

// Transport is a chain.Carrier over TCP.
var Transport = transport{trace.NewFrame("tcp")}

type transport struct {
	trace.Frame
}

func (transport) Listen(addr net.Addr) (net.Listener, error) {
	t := addr.String()
	if strings.Index(t, ":") < 0 {
		t = t + ":0"
	}
	l, err := net.Listen("tcp", t)
	if err != nil {
		return nil, err
	}
	return listener{l}, nil
开发者ID:prodigeni,项目名称:circuit,代码行数:31,代码来源:tcp.go



注:本文中的github.com/gocircuit/circuit/kit/tele/trace.NewFrame函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang trace.Frame类代码示例发布时间:2022-05-23
下一篇:
Golang cli.Context类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap