예제 #1
0
func client(initWait *sync.WaitGroup, conn *CountConn, startChan chan int, timeout time.Time, msg []byte) {
	client := link.NewSession(conn, link.Bufio(link.Bytes(link.Uint16BE)))

	var wg sync.WaitGroup

	wg.Add(1)
	go func() {
		defer wg.Done()
		initWait.Done()
		<-startChan

		for {
			outMsg := msg
			if *randsize {
				outMsg = make([]byte, rand.Intn(*messageSize))
			}
			if err := client.Send(outMsg); err != nil {
				if timeout.After(time.Now()) {
					println("send error:", err.Error())
				}
				break
			}
			atomic.AddUint32(&conn.SendCount, 1)
		}
	}()

	wg.Add(1)
	go func() {
		defer wg.Done()
		initWait.Done()
		<-startChan

		var inMsg []byte
		for {
			if err := client.Receive(&inMsg); err != nil {
				if timeout.After(time.Now()) {
					println("recv error:", err.Error())
				}
				break
			}
			atomic.AddUint32(&conn.RecvCount, 1)
		}
	}()

	wg.Wait()
}
예제 #2
0
파일: all_test.go 프로젝트: sanbit/link
func Test_Bufio_SelfCodec(t *testing.T) {
	SessionTest(t, link.Bufio(SelfCodec()), ObjectTest)
}
예제 #3
0
파일: all_test.go 프로젝트: sanbit/link
func Test_Bufio_Packet_SelfCodec(t *testing.T) {
	SessionTest(t, link.Bufio(Packet(Uint16BE, SelfCodec())), ObjectTest)
}
예제 #4
0
파일: all_test.go 프로젝트: sanbit/link
func Test_Bufio_Packet_Xml(t *testing.T) {
	SessionTest(t, link.Bufio(Packet(Uint16BE, link.Xml())), ObjectTest)
}
예제 #5
0
파일: all_test.go 프로젝트: sanbit/link
func Test_Bufio_Packet_String(t *testing.T) {
	SessionTest(t, link.Bufio(Packet(Uint16BE, String(Uint16BE))), StringTest)
}
예제 #6
0
파일: all_test.go 프로젝트: sanbit/link
func Test_Bufio_String(t *testing.T) {
	SessionTest(t, link.Bufio(String(Uint16BE)), StringTest)
}
예제 #7
0
파일: all_test.go 프로젝트: sanbit/link
func Test_Bufio_Packet_Bytes(t *testing.T) {
	SessionTest(t, link.Bufio(Packet(Uint16BE, Bytes(Uint16BE))), BytesTest)
}
예제 #8
0
파일: all_test.go 프로젝트: sanbit/link
func Test_Bufio_Bytes(t *testing.T) {
	SessionTest(t, link.Bufio(Bytes(Uint16BE)), BytesTest)
}