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

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

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

#ifndef SCTPasp__PortType_HH
#define SCTPasp__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 "SCTPasp_Types.hh"
#include "SCTPasp_PT.hh"

#if TTCN3_VERSION != 90000
#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 SCTPasp__PortType_HH
#endif

namespace SCTPasp__PortType {

/* Forward declarations of classes */

class SCTPasp__PT;

} /* end of namespace */

#ifndef SCTPasp__PortType_HH
#define SCTPasp__PortType_HH

namespace SCTPasp__PortType {

/* Class definitions */

class SCTPasp__PT : public SCTPasp__PT_PROVIDER {
enum msg_selection { MESSAGE_0, MESSAGE_1, MESSAGE_2, MESSAGE_3, MESSAGE_4, MESSAGE_5, MESSAGE_6, MESSAGE_7, MESSAGE_8, MESSAGE_9, MESSAGE_10 };
struct msg_queue_item : public msg_queue_item_base {
msg_selection item_selection;
union {
SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE *message_0;
SCTPasp__Types::ASP__SCTP__PEER__ADDR__CHANGE *message_1;
SCTPasp__Types::ASP__SCTP__SEND__FAILED *message_2;
SCTPasp__Types::ASP__SCTP__REMOTE__ERROR *message_3;
SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT *message_4;
SCTPasp__Types::ASP__SCTP__PARTIAL__DELIVERY__EVENT *message_5;
SCTPasp__Types::ASP__SCTP__ADAPTION__INDICATION *message_6;
SCTPasp__Types::ASP__SCTP__Connected *message_7;
SCTPasp__Types::ASP__SCTP__SENDMSG__ERROR *message_8;
SCTPasp__Types::ASP__SCTP__RESULT *message_9;
SCTPasp__Types::ASP__SCTP *message_10;
};
component sender_component;
};

void remove_msg_queue_head();
protected:
void clear_queue();
private:
PORT** mapped_ports;
size_t n_mapped_ports;
public:
SCTPasp__PT(const char *par_port_name = NULL);
~SCTPasp__PT();
void send(const SCTPasp__Types::ASP__SCTP__Connect& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Connect& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Connect_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Connect_template& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__ConnectFrom& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__ConnectFrom& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__ConnectFrom_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__ConnectFrom_template& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Listen& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Listen& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Listen_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Listen_template& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__SetSocketOptions& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__SetSocketOptions& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__SetSocketOptions_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__SetSocketOptions_template& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Close& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Close& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Close_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP__Close_template& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP& send_par, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const SCTPasp__Types::ASP__SCTP_template& send_par, 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 SCTPasp__Types::ASP__SCTP__Connect& send_par);
void outgoing_public_send(const SCTPasp__Types::ASP__SCTP__ConnectFrom& send_par);
void outgoing_public_send(const SCTPasp__Types::ASP__SCTP__Listen& send_par);
void outgoing_public_send(const SCTPasp__Types::ASP__SCTP__SetSocketOptions& send_par);
void outgoing_public_send(const SCTPasp__Types::ASP__SCTP__Close& send_par);
void outgoing_public_send(const SCTPasp__Types::ASP__SCTP& 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 SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE_template& value_template, SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE_template& value_template, SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE_template& value_template, SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const SCTPasp__Types::ASP__SCTP__PEER__ADDR__CHANGE_template& value_template, SCTPasp__Types::ASP__SCTP__PEER__ADDR__CHANGE *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP__PEER__ADDR__CHANGE_template& value_template, SCTPasp__Types::ASP__SCTP__PEER__ADDR__CHANGE *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP__PEER__ADDR__CHANGE_template& value_template, SCTPasp__Types::ASP__SCTP__PEER__ADDR__CHANGE *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const SCTPasp__Types::ASP__SCTP__SEND__FAILED_template& value_template, SCTPasp__Types::ASP__SCTP__SEND__FAILED *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP__SEND__FAILED_template& value_template, SCTPasp__Types::ASP__SCTP__SEND__FAILED *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP__SEND__FAILED_template& value_template, SCTPasp__Types::ASP__SCTP__SEND__FAILED *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const SCTPasp__Types::ASP__SCTP__REMOTE__ERROR_template& value_template, SCTPasp__Types::ASP__SCTP__REMOTE__ERROR *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP__REMOTE__ERROR_template& value_template, SCTPasp__Types::ASP__SCTP__REMOTE__ERROR *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP__REMOTE__ERROR_template& value_template, SCTPasp__Types::ASP__SCTP__REMOTE__ERROR *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT_template& value_template, SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT_template& value_template, SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT_template& value_template, SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const SCTPasp__Types::ASP__SCTP__PARTIAL__DELIVERY__EVENT_template& value_template, SCTPasp__Types::ASP__SCTP__PARTIAL__DELIVERY__EVENT *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP__PARTIAL__DELIVERY__EVENT_template& value_template, SCTPasp__Types::ASP__SCTP__PARTIAL__DELIVERY__EVENT *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP__PARTIAL__DELIVERY__EVENT_template& value_template, SCTPasp__Types::ASP__SCTP__PARTIAL__DELIVERY__EVENT *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const SCTPasp__Types::ASP__SCTP__ADAPTION__INDICATION_template& value_template, SCTPasp__Types::ASP__SCTP__ADAPTION__INDICATION *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP__ADAPTION__INDICATION_template& value_template, SCTPasp__Types::ASP__SCTP__ADAPTION__INDICATION *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP__ADAPTION__INDICATION_template& value_template, SCTPasp__Types::ASP__SCTP__ADAPTION__INDICATION *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const SCTPasp__Types::ASP__SCTP__Connected_template& value_template, SCTPasp__Types::ASP__SCTP__Connected *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP__Connected_template& value_template, SCTPasp__Types::ASP__SCTP__Connected *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP__Connected_template& value_template, SCTPasp__Types::ASP__SCTP__Connected *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const SCTPasp__Types::ASP__SCTP__SENDMSG__ERROR_template& value_template, SCTPasp__Types::ASP__SCTP__SENDMSG__ERROR *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP__SENDMSG__ERROR_template& value_template, SCTPasp__Types::ASP__SCTP__SENDMSG__ERROR *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP__SENDMSG__ERROR_template& value_template, SCTPasp__Types::ASP__SCTP__SENDMSG__ERROR *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const SCTPasp__Types::ASP__SCTP__RESULT_template& value_template, SCTPasp__Types::ASP__SCTP__RESULT *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP__RESULT_template& value_template, SCTPasp__Types::ASP__SCTP__RESULT *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP__RESULT_template& value_template, SCTPasp__Types::ASP__SCTP__RESULT *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const SCTPasp__Types::ASP__SCTP_template& value_template, SCTPasp__Types::ASP__SCTP *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const SCTPasp__Types::ASP__SCTP_template& value_template, SCTPasp__Types::ASP__SCTP *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const SCTPasp__Types::ASP__SCTP_template& value_template, SCTPasp__Types::ASP__SCTP *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
private:
void incoming_message(const SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE& incoming_par, component sender_component);
void incoming_message(const SCTPasp__Types::ASP__SCTP__PEER__ADDR__CHANGE& incoming_par, component sender_component);
void incoming_message(const SCTPasp__Types::ASP__SCTP__SEND__FAILED& incoming_par, component sender_component);
void incoming_message(const SCTPasp__Types::ASP__SCTP__REMOTE__ERROR& incoming_par, component sender_component);
void incoming_message(const SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT& incoming_par, component sender_component);
void incoming_message(const SCTPasp__Types::ASP__SCTP__PARTIAL__DELIVERY__EVENT& incoming_par, component sender_component);
void incoming_message(const SCTPasp__Types::ASP__SCTP__ADAPTION__INDICATION& incoming_par, component sender_component);
void incoming_message(const SCTPasp__Types::ASP__SCTP__Connected& incoming_par, component sender_component);
void incoming_message(const SCTPasp__Types::ASP__SCTP__SENDMSG__ERROR& incoming_par, component sender_component);
void incoming_message(const SCTPasp__Types::ASP__SCTP__RESULT& incoming_par, component sender_component);
void incoming_message(const SCTPasp__Types::ASP__SCTP& incoming_par, component sender_component);
private:
protected:
void incoming_message(const SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE& incoming_par);
void incoming_message(const SCTPasp__Types::ASP__SCTP__PEER__ADDR__CHANGE& incoming_par);
void incoming_message(const SCTPasp__Types::ASP__SCTP__SEND__FAILED& incoming_par);
void incoming_message(const SCTPasp__Types::ASP__SCTP__REMOTE__ERROR& incoming_par);
void incoming_message(const SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT& incoming_par);
void incoming_message(const SCTPasp__Types::ASP__SCTP__PARTIAL__DELIVERY__EVENT& incoming_par);
void incoming_message(const SCTPasp__Types::ASP__SCTP__ADAPTION__INDICATION& incoming_par);
void incoming_message(const SCTPasp__Types::ASP__SCTP__Connected& incoming_par);
void incoming_message(const SCTPasp__Types::ASP__SCTP__SENDMSG__ERROR& incoming_par);
void incoming_message(const SCTPasp__Types::ASP__SCTP__RESULT& incoming_par);
void incoming_message(const SCTPasp__Types::ASP__SCTP& incoming_par);
boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
};


/* Function prototypes */

extern void pre_init_module();
extern void post_init_module();

/* Global variable declarations */

extern const unsigned char module_checksum[];
extern TTCN_Module module_object;
extern const RuntimeVersionChecker ver_checker;

} /* end of namespace */

#endif
