aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClombrong <cromblong@egregore.fun>2025-06-27 14:11:51 +0200
committerClombrong <cromblong@egregore.fun>2025-06-28 00:37:59 +0200
commit334714af9d55e2dee8c9ab79aebd32cd29928af3 (patch)
tree24b9165e049ef5ab7f1c1879b541442e5d282d65
parent94ae313e15a8b8004c6db20573229b2ff68120d1 (diff)
refactor(portal_tcp): file_descr_to_portal to socket_to_stream
- rename file_descr_to_portal to socket_to_stream - function now returns a (stream, push) - adapt connect in consequence
-rw-r--r--portal/tcp/portal.ml13
1 files changed, 7 insertions, 6 deletions
diff --git a/portal/tcp/portal.ml b/portal/tcp/portal.ml
index f1eaff9..d70d21b 100644
--- a/portal/tcp/portal.ml
+++ b/portal/tcp/portal.ml
@@ -1,5 +1,4 @@
open Lwt.Syntax
-open Lwt.Infix
open Lwt_unix
open Markup
@@ -71,9 +70,9 @@ let tcp_socket (domain : string) : file_descr Lwt.t =
let* addrinfos = getaddrinfo domain port_number [AI_SOCKTYPE SOCK_STREAM]
in List.map get_socket addrinfos |> Lwt.pick
-(** [file_descr_to_portal sock] is a Portal wrapping the Unix socket [sock] in Markup
- signals, for XML consumption. *)
-let file_descr_to_portal (sock : file_descr) : t =
+(** [socket_to_stream sock] is a [stream, push] tuple wrapping the Unix socket [sock] in
+ Markup signals. *)
+let socket_to_stream (sock : socket) =
let raw_stream =
Lwt_stream.from (fun () ->
let bsize = 4096 in
@@ -101,9 +100,11 @@ let file_descr_to_portal (sock : file_descr) : t =
in Lwt.async (fun () ->
let* _ = lwt_stream xml_stream |> Markup_lwt.write_xml |> iter send_char
in Lwt_unix.close sock);
- {stream; push; _socket=sock}
+ (stream, push)
(** [connect domain] is a Portal.t communicating with the XMPP server located at
[domain] via plaintext TCP. It simply chains the two previous functions. *)
let connect (domain : string) : t Lwt.t =
- tcp_socket domain >|= file_descr_to_portal
+ let+ _socket = tcp_socket domain
+ in let stream, push = socket_to_stream _socket
+ in {stream; push; _socket}