Created
September 19, 2023 12:28
-
-
Save AryanGodara/a7a78b2e1a5e6db33c08965633aa0859 to your computer and use it in GitHub Desktop.
client.ml file for pub-sub-publisher
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
open Lwt.Infix | |
(* Shared mutable counter *) | |
let listen_address = Unix.inet_addr_loopback | |
let port = 9000 | |
let handle_message msg = | |
print_endline ("Received message in handle_message: " ^ msg); | |
match msg with "quit" -> "quit" | _ -> "Ready for next message" | |
let send_message server_socket msg = | |
Unix.sleepf 0.2; | |
print_endline ("Printing note " ^ msg); | |
let status_byte = int_of_char (String.get msg 0) in | |
let channel = status_byte land 0x0F in | |
let publishMsg = "publish " ^ string_of_int channel ^ " " ^ msg in | |
Lwt_unix.sendto server_socket (Bytes.of_string publishMsg) 0 (String.length publishMsg) [] (ADDR_INET (listen_address, port)) | |
>>= fun _ -> Lwt.return_unit | |
let send_messages server_socket messages = | |
Lwt_list.iter_s (send_message server_socket) messages | |
let rec handle_request server_socket midiMessageList = | |
server_socket >>= fun server_socket -> | |
send_messages server_socket midiMessageList | |
>>= fun _ -> | |
handle_request (Lwt.return server_socket) midiMessageList | |
let create_socket () : Lwt_unix.file_descr Lwt.t = | |
print_endline "Creating socket"; | |
let open Lwt_unix in | |
let sock = socket PF_INET SOCK_DGRAM 0 in | |
Lwt.return sock |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment