1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-22 18:17:52 -05:00

Apply coding style

This commit is contained in:
Shelikhoo 2016-08-15 18:56:33 +08:00
parent 273c8f6c57
commit bfb4e0d9b0
No known key found for this signature in database
GPG Key ID: 7791BDB0709ABD21

View File

@ -24,11 +24,24 @@ type wsconn struct {
func (ws *wsconn) Read(b []byte) (n int, err error) { func (ws *wsconn) Read(b []byte) (n int, err error) {
ws.rlock.Lock() ws.rlock.Lock()
n, err = ws.read(b)
ws.rlock.Unlock()
return n, err
}
func (ws *wsconn) read(b []byte) (n int, err error) {
if ws.connClosing { if ws.connClosing {
return 0, io.EOF return 0, io.EOF
} }
getNewBuffer := func() error {
n, err = ws.readNext(b)
return n, err
}
func (ws *wsconn) getNewReadBuffer() error {
_, r, err := ws.wsc.NextReader() _, r, err := ws.wsc.NextReader()
if err != nil { if err != nil {
log.Warning("WS transport: ws connection NewFrameReader return " + err.Error()) log.Warning("WS transport: ws connection NewFrameReader return " + err.Error())
@ -38,23 +51,11 @@ func (ws *wsconn) Read(b []byte) (n int, err error) {
} }
ws.readBuffer = bufio.NewReader(r) ws.readBuffer = bufio.NewReader(r)
return nil return nil
} }
/*It seems golang's support for recursive in anonymous func is yet to complete. func (ws *wsconn) readNext(b []byte) (n int, err error) {
func1:=func(){
func1()
}
won't work, failed to compile for it can't find func1.
Should following workaround panic,
readNext could have been called before the actual defination was made,
This is very unlikely.
*/
readNext := func(b []byte) (n int, err error) { panic("Runtime unstable. Please report this bug to developer.") }
readNext = func(b []byte) (n int, err error) {
if ws.readBuffer == nil { if ws.readBuffer == nil {
err = getNewBuffer() err = ws.getNewReadBuffer()
if err != nil { if err != nil {
return 0, err return 0, err
} }
@ -69,17 +70,12 @@ func (ws *wsconn) Read(b []byte) (n int, err error) {
if err == io.EOF { if err == io.EOF {
ws.readBuffer = nil ws.readBuffer = nil
if n == 0 { if n == 0 {
return readNext(b) return ws.readNext(b)
} }
return n, nil return n, nil
} }
return n, err return n, err
}
n, err = readNext(b)
ws.rlock.Unlock()
return n, err
} }
func (ws *wsconn) Write(b []byte) (n int, err error) { func (ws *wsconn) Write(b []byte) (n int, err error) {