module UECUPS_CodecPort_CtrlFunct {

  import from UECUPS_CodecPort all;
  import from IPL4asp_Types all;

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

  external function f_IPL4_connect(
    inout UECUPS_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 UECUPS_CODEC_PT portRef,
    in ConnectionId id,
    in ProtoTuple proto := { unspecified := {} }
  ) return Result;

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

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

}

