sig
type rcvd_pkt = int * Tcp.Pdu.t
module Streambuf :
sig
type elt = rcvd_pkt
type t
val empty : t
val is_empty : t -> bool
val singleton : elt -> t
val mem : elt -> t -> bool
val find : elt -> t -> elt
val add : elt -> t -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val sym_diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val disjoint : t -> t -> bool
val compare_subset : t -> t -> int
val iter : (elt -> unit) -> t -> unit
val map : (elt -> elt) -> t -> t
val filter : (elt -> bool) -> t -> t
val filter_map : (elt -> elt option) -> t -> t
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val partition : (elt -> bool) -> t -> t * t
val split : elt -> t -> t * bool * t
val split_opt : elt -> t -> t * elt option * t
val split_lt : elt -> t -> t * t
val split_le : elt -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val to_list : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val pop : t -> elt * t
val enum : t -> elt BatEnum.t
val backwards : t -> elt BatEnum.t
val of_enum : elt BatEnum.t -> t
val of_list : elt list -> t
val print :
?first:string ->
?last:string ->
?sep:string ->
('a BatInnerIO.output -> elt -> unit) ->
'a BatInnerIO.output -> t -> unit
module Exceptionless :
sig
val min_elt : t -> elt option
val max_elt : t -> elt option
val choose : t -> elt option
val find : elt -> t -> elt option
end
module Labels :
sig
val iter : f:(elt -> unit) -> t -> unit
val fold : f:(elt -> 'a -> 'a) -> t -> init:'a -> 'a
val for_all : f:(elt -> bool) -> t -> bool
val exists : f:(elt -> bool) -> t -> bool
val map : f:(elt -> elt) -> t -> t
val filter : f:(elt -> bool) -> t -> t
val filter_map : f:(elt -> elt option) -> t -> t
val partition : f:(elt -> bool) -> t -> t * t
end
end
type tcp_trx = {
trx : Tools.trx;
close : unit -> unit;
is_closed : unit -> bool;
}
type t = {
mutable tcp_trx : Tcp.TRX.tcp_trx;
mutable src : Tcp.Port.t;
mutable dst : Tcp.Port.t;
mutable emit : Bitstring.bitstring -> unit;
mutable recv : Bitstring.bitstring -> unit;
mtu : int;
isn : Tcp.SeqNum.t;
mutable rcvd_isn : Tcp.SeqNum.t option;
mutable closed : bool;
mutable sent_fin : bool;
mutable sent_pld : int;
mutable sent_acked : int;
mutable rcvd_pld : int;
mutable rcvd_acked : int;
mutable rcvd_pkts : Tcp.TRX.Streambuf.t;
mutable to_send : Bitstring.bitstring list;
mutable unacked_tx : Tcp.TRX.Streambuf.t;
mutable rcvd_fin : bool;
mutable cnx_established_cont : (Tcp.TRX.tcp_trx option -> unit) option;
}
val is_closed : Tcp.TRX.t -> unit -> bool
val int_of_bool : bool -> int
val ( +/ ) : int32 -> int32 -> int32
val ( -/ ) : int32 -> int32 -> int32
val next_seq_num : Tcp.TRX.t -> Tcp.SeqNum.t
val next_ack_num : Tcp.TRX.t -> Tcp.SeqNum.t option
val emit_one :
Tcp.TRX.t ->
?psh:bool ->
?rst:bool -> ?syn:bool -> ?fin:bool -> Bitstring.bitstring -> unit
val emit_multi : Tcp.TRX.t -> Bitstring.bitstring -> unit
val delayed_ack : Tcp.TRX.t -> unit
val establish_cnx : Tcp.TRX.t -> bool -> unit
val try_really_rx : Tcp.TRX.t -> unit
val drop_unacked_tx : Tcp.TRX.t -> unit
val inqueue_pkt : Tcp.TRX.t -> Tcp.Pdu.t -> unit
val is_established : Tcp.TRX.t -> bool
val rx : Tcp.TRX.t -> string * int * int -> unit
val try_really_tx : Tcp.TRX.t -> unit
val close : Tcp.TRX.t -> unit -> unit
val tx : Tcp.TRX.t -> Bitstring.bitstring -> unit
val make :
?isn:Tcp.SeqNum.t -> ?mtu:int -> Tcp.Port.t -> Tcp.Port.t -> Tcp.TRX.t
val may_timeout : Tcp.TRX.t -> unit
val default_connect_timeout : Clock.Interval.t
val connect :
?timeout:Clock.Interval.t ->
Tcp.TRX.t -> (Tcp.TRX.tcp_trx option -> unit) -> unit
end