mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
net.websocket: swap unsafe use of nil for a safe default value (#15836)
This commit is contained in:
@@ -36,11 +36,14 @@ pub mut:
|
||||
header http.Header // headers that will be passed when connecting
|
||||
conn &net.TcpConn = unsafe { nil } // underlying TCP socket connection
|
||||
nonce_size int = 16 // size of nounce used for masking
|
||||
panic_on_callback bool // set to true of callbacks can panic
|
||||
state State // current state of connection
|
||||
logger &log.Logger = unsafe { nil } // logger used to log messages
|
||||
resource_name string // name of current resource
|
||||
last_pong_ut i64 // last time in unix time we got a pong message
|
||||
panic_on_callback bool // set to true of callbacks can panic
|
||||
state State // current state of connection
|
||||
// logger used to log messages
|
||||
logger &log.Logger = &log.Logger(&log.Log{
|
||||
level: .info
|
||||
})
|
||||
resource_name string // name of current resource
|
||||
last_pong_ut i64 // last time in unix time we got a pong message
|
||||
}
|
||||
|
||||
// Flag represents different types of headers in websocket handshake
|
||||
|
||||
@@ -9,7 +9,9 @@ import rand
|
||||
// Server represents a websocket server connection
|
||||
pub struct Server {
|
||||
mut:
|
||||
logger &log.Logger = unsafe { nil } // logger used to log
|
||||
logger &log.Logger = &log.Logger(&log.Log{
|
||||
level: .info
|
||||
})
|
||||
ls &net.TcpListener = unsafe { nil } // listener used to get incoming connection to socket
|
||||
accept_client_callbacks []AcceptClientFn // accept client callback functions
|
||||
message_callbacks []MessageEventHandler // new message callback functions
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
import net.websocket as ws
|
||||
|
||||
pub type RawMessage = ws.Message
|
||||
|
||||
pub struct WsTransport {
|
||||
pub mut:
|
||||
ws ws.Client
|
||||
}
|
||||
|
||||
struct WsClient {
|
||||
pub mut:
|
||||
transport Transport
|
||||
}
|
||||
|
||||
pub interface Transport {
|
||||
send()
|
||||
wait()
|
||||
}
|
||||
|
||||
fn (wst WsTransport) send() {
|
||||
println('send is called')
|
||||
}
|
||||
|
||||
fn (wst WsTransport) wait() {
|
||||
println('wait is called')
|
||||
}
|
||||
|
||||
pub fn new_ws_client(transport Transport) ?WsClient {
|
||||
return WsClient{
|
||||
transport: transport
|
||||
}
|
||||
}
|
||||
|
||||
fn server() ? {
|
||||
mut s := ws.new_server(.ip6, 8081, '/')
|
||||
|
||||
s.on_connect(fn (mut s ws.ServerClient) ?bool {
|
||||
if s.resource_name != '/' {
|
||||
return false
|
||||
}
|
||||
println('Client has connected...')
|
||||
return true
|
||||
})?
|
||||
|
||||
s.on_message(fn (mut ws ws.Client, msg &RawMessage) ? {
|
||||
mut transport := WsTransport{}
|
||||
mut ws_client := new_ws_client(transport)?
|
||||
_ := ws_client
|
||||
})
|
||||
|
||||
s.on_close(fn (mut ws ws.Client, code int, reason string) ? {
|
||||
println('client ($ws.id) closed connection')
|
||||
})
|
||||
|
||||
s.listen() or { println('error on server listen: $err') }
|
||||
|
||||
unsafe {
|
||||
s.free()
|
||||
}
|
||||
}
|
||||
|
||||
fn abc() ? {
|
||||
server()?
|
||||
}
|
||||
|
||||
fn test_compilation_of_the_example_code_in_issue_15839() {
|
||||
assert true
|
||||
}
|
||||
Reference in New Issue
Block a user