package main import ( "flag" "fmt" "strconv" "git.wecise.com/wecise/odbserver/test/eifsend/ovo" ) func main() { ip := flag.String("ip", "127.0.0.1", "Send server ip") port := flag.Uint("port", 9998, "Send server port") //var wgTest sync.WaitGroup // EIF发送器 eifSender := &ovo.EIFSender{ Tracer: ovo.NewTracer("eifSender"), Configuration: &ovo.Configuration{ ID: "test.eifSender", ServerLocation: *ip, ServerPort: int(*port), }, } defer eifSender.Close() eifSender.Trace('D', "发送地址%s:%d", *ip, *port) //// EIF接收器 //eifReceiver := &ovo.EIFReceiver{ // Tracer: ovo.NewTracer("eifReceiver"), // Configuration: &ovo.Configuration{ // ID: "test.eifReceiver", // ServerLocation: "", // ServerPort: 9999, // InitRecvBufSize: 1024 * 4, // 每个连接初始分配的缓冲区字节数,建议为常规一条数据字节数的4~8倍 // MaxRecvBufSize: 1024 * 1024 * 100, // 每个连接可以分配的最大缓冲区字节数 // }, //} // 消息发送函数 msgsend := func(class string, data map[string]string) { count, _ := strconv.Atoi(data["number"]) eifSender.Trace('X', "测试 %d 消息准备发送: %v:%v", count, class, data) ns, err := eifSender.Send(class, data) if err != nil { eifSender.Trace('D', "测试 %d 消息发送失败 %s", count, err) } eifSender.Trace('D', "测试 %d 消息发送 %d 字节", count, ns) } //// 短链接消息发送函数 //imsgsend := func(class string, data map[string]string) { // // EIF发送器 // tempEifSender := &ovo.EIFSender{ // Tracer: ovo.NewTracer("tempEifSender"), // Configuration: &ovo.Configuration{ // ID: "test.tempEifSender", // ServerLocation: "127.0.0.1", // ServerPort: 9990, // }, // } // defer tempEifSender.Close() // count, _ := strconv.Atoi(data["number"]) // tempEifSender.Trace('X', "测试 %d 消息准备发送: %v:%v", count, class, data) // ns, err := tempEifSender.Send(class, data) // if err != nil { // tempEifSender.Trace('D', "测试 %d 消息发送失败 %s", count, err) // } // tempEifSender.Trace('D', "测试 %d 消息发送 %d 字节", count, ns) //} // //starttime := time.Now() //msgcount := 0 //// 消息处理函数 //msgproc := func(remote_addr string, class string, data map[string]string) { // msgcount++ // eifReceiver.CalmTrace("eifReceiver", 1000, 'D', "%v 收到 %d:%v => %v:%v", time.Now().Sub(starttime), msgcount, remote_addr, class, data) // sleep, _ := strconv.Atoi(data["sleep"]) // if sleep <= 0 { // sleep = 1000 // data["sleep"] = "1000" // } // number, _ := strconv.Atoi(data["number"]) // number-- // data["number"] = fmt.Sprintf("%d", number) // if number > 0 { // // 延时发送新消息 // go func(sleep int, class string, data map[string]string) { // time.Sleep(time.Duration(sleep) * 1e6) // if rand.Float32() < 0.8 { // // 短链接 // imsgsend(class, data) // } else { // // 长链接 // msgsend(class, data) // } // }(sleep, class, data) // } //} // //// 启动EIFReceiver //go func() { // wgTest.Add(1) // defer wgTest.Done() // eifReceiver.Run(msgproc) //}() // //// 等待Receiver启动完成 //for !(eifReceiver.IsRunning()) { // time.Sleep(1) //} // 发送测试信息 func(n int) { data := make(map[string]string) data["number"] = fmt.Sprintf("%d", n) data["sleep"] = "1000" data["string"] = "EIF信息发送测试'`~!@#$%^&*?...'" msgsend("test", data) }(10) // 等待Recever结束 //wgTest.Wait() }