// This C++ header file was generated by the TTCN-3 compiler
// of the TTCN-3 Test Executor version 11.1.0
// The generation of user and time information were disabled by the -D flag.

// Copyright (c) 2000-2025 Ericsson Telecom AB

// Do not edit this file unless you know what you are doing.

#ifndef IPL4asp__PortType_HH
#define IPL4asp__PortType_HH

#ifdef TITAN_RUNTIME_2
#error Generated code does not match with used runtime.\
 Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
#endif

/* Header file includes */

#include <TTCN3.hh>
#include "IPL4asp_Types.hh"
#include "IPL4asp_PT.hh"

#if TTCN3_VERSION != 110100
#error Version mismatch detected.\
 Please check the version of the TTCN-3 compiler and the base library.\
 Run make clean and rebuild the project if the version of the compiler changed recently.
#endif

#ifndef LINUX
#error This file should be compiled on LINUX
#endif

#undef IPL4asp__PortType_HH
#endif

namespace IPL4asp__PortType {

/* Forward declarations of classes */

class IPL4asp__PT;

} /* end of namespace */

#ifndef IPL4asp__PortType_HH
#define IPL4asp__PortType_HH

namespace IPL4asp__PortType {

/* Class definitions */

class IPL4asp__PT : public IPL4asp__PT_PROVIDER {
enum msg_selection { MESSAGE_0, MESSAGE_1, MESSAGE_2 };
struct msg_queue_item : public msg_queue_item_base {
msg_selection item_selection;
union {
IPL4asp__Types::ASP__RecvFrom *message_0;
Socket__API__Definitions::PortEvent *message_1;
IPL4asp__Types::ASP__ConnId__ReadyToRelease *message_2;
};
component sender_component;
};

void remove_msg_queue_head();
protected:
void clear_queue();
private:
PORT** mapped_ports;
size_t n_mapped_ports;
public:
IPL4asp__PT(const char *par_port_name = NULL);
~IPL4asp__PT();
void send(const IPL4asp__Types::ASP__SendTo& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__SendTo& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__SendTo& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__SendTo_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__SendTo_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__SendTo_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__Send& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__Send& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__Send& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__Send_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__Send_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const IPL4asp__Types::ASP__Send_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
public:
void add_port(PORT* p);
void remove_port(PORT* p);
private:
void reset_port_variables();
public:
void outgoing_public_send(const IPL4asp__Types::ASP__SendTo& send_par);
void outgoing_public_send(const IPL4asp__Types::ASP__Send& send_par);
alt_status receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const IPL4asp__Types::ASP__RecvFrom_template& value_template, IPL4asp__Types::ASP__RecvFrom *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const IPL4asp__Types::ASP__RecvFrom_template& value_template, IPL4asp__Types::ASP__RecvFrom *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const IPL4asp__Types::ASP__RecvFrom_template& value_template, IPL4asp__Types::ASP__RecvFrom *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const Socket__API__Definitions::PortEvent_template& value_template, Socket__API__Definitions::PortEvent *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const Socket__API__Definitions::PortEvent_template& value_template, Socket__API__Definitions::PortEvent *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const Socket__API__Definitions::PortEvent_template& value_template, Socket__API__Definitions::PortEvent *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const IPL4asp__Types::ASP__ConnId__ReadyToRelease_template& value_template, IPL4asp__Types::ASP__ConnId__ReadyToRelease *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const IPL4asp__Types::ASP__ConnId__ReadyToRelease_template& value_template, IPL4asp__Types::ASP__ConnId__ReadyToRelease *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const IPL4asp__Types::ASP__ConnId__ReadyToRelease_template& value_template, IPL4asp__Types::ASP__ConnId__ReadyToRelease *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
private:
void incoming_message(const IPL4asp__Types::ASP__RecvFrom& incoming_par, component sender_component);
void incoming_message(const Socket__API__Definitions::PortEvent& incoming_par, component sender_component);
void incoming_message(const IPL4asp__Types::ASP__ConnId__ReadyToRelease& incoming_par, component sender_component);
private:
protected:
void incoming_message(const IPL4asp__Types::ASP__RecvFrom& incoming_par);
void incoming_message(const Socket__API__Definitions::PortEvent& incoming_par);
void incoming_message(const IPL4asp__Types::ASP__ConnId__ReadyToRelease& incoming_par);
boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
};


/* Function prototypes */

extern Socket__API__Definitions::Result f__IPL4__port__settings(IPL4asp__PT& portRef, const CHARSTRING& param__name, const CHARSTRING& param__value);
extern Socket__API__Definitions::Result f__IPL4__ConnId__release(IPL4asp__PT& portRef, const INTEGER& connId);
extern Socket__API__Definitions::Result f__IPL4__listen(IPL4asp__PT& portRef, const CHARSTRING& locName, const INTEGER& locPort, const Socket__API__Definitions::ProtoTuple& proto, const IPL4asp__Types::OptionList& options);
extern Socket__API__Definitions::Result f__IPL4__connect(IPL4asp__PT& portRef, const CHARSTRING& remName, const INTEGER& remPort, const CHARSTRING& locName, const INTEGER& locPort, const INTEGER& connId, const Socket__API__Definitions::ProtoTuple& proto, const IPL4asp__Types::OptionList& options);
extern Socket__API__Definitions::Result f__IPL4__setOpt(IPL4asp__PT& portRef, const IPL4asp__Types::OptionList& options, const INTEGER& connId, const Socket__API__Definitions::ProtoTuple& proto);
extern Socket__API__Definitions::Extended__Result f__IPL4__getOpt(IPL4asp__PT& portRef, const IPL4asp__Types::Option& option, const INTEGER& connId, const Socket__API__Definitions::ProtoTuple& proto);
extern Socket__API__Definitions::Result f__IPL4__close(IPL4asp__PT& portRef, const INTEGER& connId, const Socket__API__Definitions::ProtoTuple& proto);
extern Socket__API__Definitions::Result f__IPL4__setUserData(IPL4asp__PT& portRef, const INTEGER& connId, const INTEGER& userData);
extern Socket__API__Definitions::Result f__IPL4__getUserData(IPL4asp__PT& portRef, const INTEGER& connId, INTEGER& userData);
extern Socket__API__Definitions::Result f__IPL4__getConnectionDetails(IPL4asp__PT& portRef, const INTEGER& connId, const IPL4asp__Types::IPL4__Param& IPL4param, IPL4asp__Types::IPL4__ParamResult& IPL4paramResult);
extern Socket__API__Definitions::Extended__Result f__IPL4__getConnectedPathMTU(IPL4asp__PT& portRef, const INTEGER& connId, const Socket__API__Definitions::ProtoTuple& proto);
extern Socket__API__Definitions::Result f__IPL4__send(IPL4asp__PT& portRef, const IPL4asp__Types::ASP__Send& asp, INTEGER& sent__octets);
extern Socket__API__Definitions::Result f__IPL4__sendto(IPL4asp__PT& portRef, const IPL4asp__Types::ASP__SendTo& asp, INTEGER& sent__octets);
extern Socket__API__Definitions::Result f__IPL4__StartTLS(IPL4asp__PT& portRef, const INTEGER& connId, const BOOLEAN& server__side);
extern Socket__API__Definitions::Result f__IPL4__StopTLS(IPL4asp__PT& portRef, const INTEGER& connId);
extern OCTETSTRING f__IPL4__exportTlsKey(IPL4asp__PT& portRef, const INTEGER& connId, const CHARSTRING& pl__label, const OCTETSTRING& pl__context, const INTEGER& pl__keyLen);
extern IPL4asp__Types::IPL4__SrtpKeysAndSalts f__IPL4__exportSrtpKeysAndSalts(IPL4asp__PT& portRef, const INTEGER& connId);
extern OCTETSTRING f__IPL4__exportSctpKey(IPL4asp__PT& portRef, const INTEGER& connId);
extern CHARSTRING f__IPL4__getLocalCertificateFingerprint(IPL4asp__PT& portRef, const IPL4asp__Types::IPL4__DigestMethods& method, const INTEGER& connId, const CHARSTRING& certificate__file);
extern CHARSTRING f__IPL4__getPeerCertificateFingerprint(IPL4asp__PT& portRef, const INTEGER& connId, const IPL4asp__Types::IPL4__DigestMethods& method);
extern CHARSTRING f__IPL4__getSelectedSrtpProfile(IPL4asp__PT& portRef, const INTEGER& connId);
extern void f__IPL4__setGetMsgLen(IPL4asp__PT& portRef, const INTEGER& connId, Socket__API__Definitions::f__getMsgLen& f, const Socket__API__Definitions::ro__integer& msgLenArgs);
extern void f__IPL4__setGetMsgLen__forConnClosedEvent(IPL4asp__PT& portRef, const INTEGER& connId, Socket__API__Definitions::f__getMsgLen& f, const Socket__API__Definitions::ro__integer& msgLenArgs);
extern INTEGER f__IPL4__fixedMsgLen(const OCTETSTRING& stream, Socket__API__Definitions::ro__integer& args);
extern void pre_init_module();
extern void post_init_module();

/* Global variable declarations */

extern const IPL4asp__Types::OptionList& f__IPL4__listen_options_defval;
extern IPL4asp__Types::OptionList const_f__IPL4__listen_options_defval;
extern const INTEGER& f__IPL4__connect_connId_defval;
extern INTEGER const_f__IPL4__connect_connId_defval;
extern const IPL4asp__Types::OptionList& f__IPL4__connect_options_defval;
extern IPL4asp__Types::OptionList const_f__IPL4__connect_options_defval;
extern const INTEGER& f__IPL4__setOpt_connId_defval;
extern INTEGER const_f__IPL4__setOpt_connId_defval;
extern const Socket__API__Definitions::ProtoTuple& f__IPL4__setOpt_proto_defval;
extern Socket__API__Definitions::ProtoTuple const_f__IPL4__setOpt_proto_defval;
extern const INTEGER& f__IPL4__getOpt_connId_defval;
extern INTEGER const_f__IPL4__getOpt_connId_defval;
extern const Socket__API__Definitions::ProtoTuple& f__IPL4__getOpt_proto_defval;
extern Socket__API__Definitions::ProtoTuple const_f__IPL4__getOpt_proto_defval;
extern const Socket__API__Definitions::ProtoTuple& f__IPL4__close_proto_defval;
extern Socket__API__Definitions::ProtoTuple const_f__IPL4__close_proto_defval;
extern const INTEGER& f__IPL4__getConnectedPathMTU_connId_defval;
extern INTEGER const_f__IPL4__getConnectedPathMTU_connId_defval;
extern const Socket__API__Definitions::ProtoTuple& f__IPL4__getConnectedPathMTU_proto_defval;
extern Socket__API__Definitions::ProtoTuple const_f__IPL4__getConnectedPathMTU_proto_defval;
extern const BOOLEAN& f__IPL4__StartTLS_server__side_defval;
extern BOOLEAN const_f__IPL4__StartTLS_server__side_defval;
extern const INTEGER& f__IPL4__getLocalCertificateFingerprint_connId_defval;
extern INTEGER const_f__IPL4__getLocalCertificateFingerprint_connId_defval;
extern const CHARSTRING& f__IPL4__getLocalCertificateFingerprint_certificate__file_defval;
extern CHARSTRING const_f__IPL4__getLocalCertificateFingerprint_certificate__file_defval;
extern const INTEGER& f__IPL4__setGetMsgLen_connId_defval;
extern INTEGER const_f__IPL4__setGetMsgLen_connId_defval;
extern const INTEGER& f__IPL4__setGetMsgLen__forConnClosedEvent_connId_defval;
extern INTEGER const_f__IPL4__setGetMsgLen__forConnClosedEvent_connId_defval;
extern const CHARSTRING cs_0;
extern const unsigned char module_checksum[];
extern TTCN_Module module_object;
extern const RuntimeVersionChecker ver_checker;

} /* end of namespace */

#endif
