}
return false
},
+ `close`: func(data interface{}) bool {
+ t.Stop()
+ return true
+ },
})
t.stopflag.Wait()
}()
t.onlyOnce.UnSet()
}
-func Play(filePath string, perReadSize int, maxReadSize int) (s *Server) {
+func Play(filePath string, perReadSize int, maxReadSize int) (s *Server, close func()) {
+ sg := signal.Init()
+
s = New_server()
+ close = func() {
+ s.Interface().Push_tag(`close`, uinterface{
+ Id: 0,
+ Data: `rev_close`,
+ })
+ sg.Done()
+ }
+
go func() {
f := file.New(filePath, 0, false)
defer f.Close()
startT := time.Now()
timer := time.NewTicker(time.Second)
- for {
+ for sg.Islive() {
cu := (<-timer.C).Sub(startT).Seconds()
- for {
+ for sg.Islive() {
if data, err := f.ReadUntil('\n', perReadSize, maxReadSize); err != nil {
panic(err)
} else if len(data) != 0 {
}
func Test_Recoder(t *testing.T) {
- s := Play("l.csv", 50, 5000)
+ s, cf := Play("l.csv", 50, 5000)
+ defer cf()
w := web.Easy_boot()
open.Run("http://" + w.Server.Addr)