more buffering

This commit is contained in:
Simon Cruanes 2024-06-24 10:36:51 -04:00
parent 1532d92540
commit dc5af2e7e6
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
2 changed files with 15 additions and 9 deletions

View file

@ -161,8 +161,8 @@ module TCP_server = struct
Ev_loop.wait_readable sock Cancel_handle.dummy ignore; Ev_loop.wait_readable sock Cancel_handle.dummy ignore;
accept_ sock accept_ sock
class base_server ?(listen = 32) ?(buf_pool = Buf_pool.dummy) ~runner class base_server ?(listen = 32) ?(buf_pool = Buf_pool.dummy)
~(handle : conn_handler) (addr : Sockaddr.t) : ?(buf_size = 4096) ~runner ~(handle : conn_handler) (addr : Sockaddr.t) :
t = t =
let n_active_ = A.make 0 in let n_active_ = A.make 0 in
let st = A.make Created in let st = A.make Created in
@ -214,8 +214,8 @@ module TCP_server = struct
Fd.close_noerr client_fd) Fd.close_noerr client_fd)
in in
let@ buf_in = buf_pool.with_buf 4096 in let@ buf_in = buf_pool.with_buf buf_size in
let@ buf_out = buf_pool.with_buf 4096 in let@ buf_out = buf_pool.with_buf buf_size in
let ic = Buf_reader.of_fd client_fd ~buf:buf_in in let ic = Buf_reader.of_fd client_fd ~buf:buf_in in
let oc = Buf_writer.of_fd client_fd ~buf:buf_out in let oc = Buf_writer.of_fd client_fd ~buf:buf_out in
@ -226,9 +226,11 @@ module TCP_server = struct
) )
end end
let create ?(after_init = ignore) ?listen ?buf_pool ~runner let create ?(after_init = ignore) ?listen ?buf_pool ?buf_size ~runner
~(handle : conn_handler) (addr : Sockaddr.t) : t = ~(handle : conn_handler) (addr : Sockaddr.t) : t =
let self = new base_server ?listen ?buf_pool ~runner ~handle addr in let self =
new base_server ?listen ?buf_pool ?buf_size ~runner ~handle addr
in
after_init self; after_init self;
self self
end end
@ -256,10 +258,11 @@ module TCP_client = struct
let@ () = Fun.protect ~finally in let@ () = Fun.protect ~finally in
f sock f sock
let with_connect ?(buf_pool = Buf_pool.dummy) addr (f : _ -> _ -> 'a) : 'a = let with_connect ?(buf_pool = Buf_pool.dummy) ?(buf_size = 4096) addr
(f : _ -> _ -> 'a) : 'a =
with_connect' addr (fun sock -> with_connect' addr (fun sock ->
let@ buf_in = buf_pool.with_buf 4096 in let@ buf_in = buf_pool.with_buf buf_size in
let@ buf_out = buf_pool.with_buf 4096 in let@ buf_out = buf_pool.with_buf buf_size in
let ic = Buf_reader.of_fd ~buf:buf_in sock in let ic = Buf_reader.of_fd ~buf:buf_in sock in
let oc = Buf_writer.of_fd ~buf:buf_out sock in let oc = Buf_writer.of_fd ~buf:buf_out sock in

View file

@ -53,6 +53,7 @@ module TCP_client : sig
val with_connect : val with_connect :
?buf_pool:Buf_pool.t -> ?buf_pool:Buf_pool.t ->
?buf_size:int ->
Sockaddr.t -> Sockaddr.t ->
(Buf_reader.t -> Buf_writer.t -> 'a) -> (Buf_reader.t -> Buf_writer.t -> 'a) ->
'a 'a
@ -88,6 +89,7 @@ module TCP_server : sig
class base_server : class base_server :
?listen:int -> ?listen:int ->
?buf_pool:Buf_pool.t -> ?buf_pool:Buf_pool.t ->
?buf_size:int ->
runner:Moonpool.Runner.t -> runner:Moonpool.Runner.t ->
handle:conn_handler -> handle:conn_handler ->
Sockaddr.t -> Sockaddr.t ->
@ -97,6 +99,7 @@ module TCP_server : sig
?after_init:(t -> unit) -> ?after_init:(t -> unit) ->
?listen:int -> ?listen:int ->
?buf_pool:Buf_pool.t -> ?buf_pool:Buf_pool.t ->
?buf_size:int ->
runner:Moonpool.Runner.t -> runner:Moonpool.Runner.t ->
handle:conn_handler -> handle:conn_handler ->
Sockaddr.t -> Sockaddr.t ->