module M3UA_CodecPort_CtrlFunct {

  import from M3UA_CodecPort all;
  import from IPL4asp_Types all;

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

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

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

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

  external function f_IPL4_setGetMsgLen(
    inout M3UA_CODEC_PT portRef,
    in ConnectionId id,
    inout f_IPL4_getMsgLen f,
    in ro_integer msgLenArgs
  )

}