本文整理汇总了Golang中github.com/gocircuit/circuit/kit/tele/trace.NewFrame函数的典型用法代码示例。如果您正苦于以下问题:Golang NewFrame函数的具体用法?Golang NewFrame怎么用?Golang NewFrame使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewFrame函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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)
}
示例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
}
}
示例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)
}
}
示例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()
}
}
示例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
}
示例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
}
示例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))
}
示例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)
}
示例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)
}
示例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
}
示例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
}
示例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
}
示例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)
}
示例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
}
示例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
}