module StatsD_CodecPort_CtrlFunct {

import from StatsD_CodecPort all;
import from IPL4asp_Types all;

external function f_IPL4_listen(
	inout STATSD_CODEC_PT portRef,
	in HostName locName,
	in PortNumber locPort,
	in ProtoTuple proto,
	in OptionList options := {}
) return Result;

external function f_IPL4_connect(
	inout STATSD_CODEC_PT portRef,
	in HostName remName,
	in PortNumber remPort,
	in HostName locName,
	in PortNumber locPort,
	in ConnectionId connId,
	in ProtoTuple proto,
	in OptionList options := {}
) return Result;

external function f_IPL4_close(
	inout STATSD_CODEC_PT portRef,
	in ConnectionId id,
	in ProtoTuple proto := { unspecified := {} }
) return Result;

external function f_IPL4_setUserData(
	inout STATSD_CODEC_PT portRef,
	in ConnectionId id,
	in UserData userData
) return Result;

external function f_IPL4_getUserData(
	inout STATSD_CODEC_PT portRef,
	in ConnectionId id,
	out UserData userData
) return Result;

}
