blob: 1e8260960f793913e397f4ce16a175ee0db8e383 [file] [log] [blame]
open Thrift
class t port =
object
inherit Transport.server_t
val mutable sock = None
method listen =
let s = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in
sock <- Some s;
Unix.bind s (Unix.ADDR_INET (Unix.inet_addr_any, port));
Unix.listen s 256
method close =
match sock with
Some s -> Unix.shutdown s Unix.SHUTDOWN_ALL; Unix.close s;
sock <- None
| _ -> ()
method acceptImpl =
match sock with
Some s -> let (fd,_) = Unix.accept s in
new TChannelTransport.t (Unix.in_channel_of_descr fd,Unix.out_channel_of_descr fd)
| _ -> raise (Transport.E (Transport.NOT_OPEN,"TServerSocket: Not listening but tried to accept"))
end