fix actor EnqueueFrom stack overflow (use nil now to send from self) and replace session send/recv workers with actor functions

This commit is contained in:
Arceliar 2019-08-23 22:23:01 -05:00
parent 436c84ca33
commit 533da351f9
7 changed files with 132 additions and 17 deletions

View file

@ -162,7 +162,7 @@ func (c *Conn) ReadNoCopy() ([]byte, error) {
} else {
return nil, ConnError{errors.New("session closed"), false, false, true, 0}
}
case bs := <-c.session.recv:
case bs := <-c.session.toConn:
return bs, nil
}
}
@ -221,7 +221,7 @@ func (c *Conn) WriteNoCopy(msg FlowKeyMessage) error {
} else {
err = ConnError{errors.New("session closed"), false, false, true, 0}
}
case c.session.send <- msg:
case <-c.session.SyncExec(func() { c.session._send(msg) }):
}
}
return err