Auto-indexing service and GraphQL API for AT Protocol Records
at main 28 lines 1.0 kB view raw
1import gleam/erlang/process 2 3pub type SubscriptionMessage { 4 SubscriptionData(id: String, data: String) 5} 6 7/// Send a subscription data message to the handler process 8@external(erlang, "websocket_ffi_impl", "send_to_handler") 9pub fn send_to_handler( 10 handler_pid: process.Pid, 11 subscription_id: String, 12 data: String, 13) -> Nil 14 15/// Send a ping to trigger mailbox check 16@external(erlang, "websocket_ffi_impl", "send_ping") 17pub fn send_ping(handler_pid: process.Pid) -> Nil 18 19/// Check for subscription data messages in the process mailbox 20/// Returns the subscription_id and data if a message is available 21@external(erlang, "websocket_ffi_impl", "receive_subscription_data") 22pub fn receive_subscription_data() -> Result(#(String, String), Nil) 23 24/// Add a selector branch that matches {subscription_data, Id, Data} tuples 25@external(erlang, "websocket_ffi_impl", "select_subscription_data") 26pub fn select_subscription_data( 27 selector: process.Selector(SubscriptionMessage), 28) -> process.Selector(SubscriptionMessage)