blob: 1a85809b0623324920268914c110dc7e8aba475e [file] [log] [blame]
open Thrift
module S = TServer
class t pf st itf otf ipf opf =
object
inherit S.t pf st itf otf ipf opf
method serve =
try
st#listen;
let c = st#accept in
let proc = pf#getProcessor c in
let itrans = itf#getTransport c in
let otrans = try
otf#getTransport c
with e -> itrans#close; raise e
in
let inp = ipf#getProtocol itrans in
let op = opf#getProtocol otrans in
try
while (proc#process inp op) do () done;
itrans#close; otrans#close
with e -> itrans#close; otrans#close; raise e
with _ -> ()
end