// 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 MTP3asp__PortType_HH
#define MTP3asp__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 "MTP3asp_Types.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 MTP3asp__PortType_HH
#endif

namespace MTP3asp__PortType {

/* Forward declarations of classes */

class MTP3asp__PT;
class MTP3asp__SP__PT;

} /* end of namespace */

#ifndef MTP3asp__PortType_HH
#define MTP3asp__PortType_HH

namespace MTP3asp__PortType {

/* Class definitions */

class MTP3asp__PT : public PORT {
enum msg_selection { MESSAGE_0, MESSAGE_1, MESSAGE_2, MESSAGE_3 };
struct msg_queue_item : public msg_queue_item_base {
msg_selection item_selection;
union {
MTP3asp__Types::ASP__MTP3__TRANSFERind *message_0;
MTP3asp__Types::ASP__MTP3__PAUSE *message_1;
MTP3asp__Types::ASP__MTP3__RESUME *message_2;
MTP3asp__Types::ASP__MTP3__STATUS *message_3;
};
component sender_component;
};

void remove_msg_queue_head();
protected:
void clear_queue();
public:
MTP3asp__PT(const char *par_port_name = NULL);
~MTP3asp__PT();
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERreq& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERreq& send_par, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& send_par, FLOAT* timestamp_redirect = NULL);
public:
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 MTP3asp__Types::ASP__MTP3__TRANSFERind_template& value_template, MTP3asp__Types::ASP__MTP3__TRANSFERind *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const MTP3asp__Types::ASP__MTP3__TRANSFERind_template& value_template, MTP3asp__Types::ASP__MTP3__TRANSFERind *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const MTP3asp__Types::ASP__MTP3__TRANSFERind_template& value_template, MTP3asp__Types::ASP__MTP3__TRANSFERind *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const MTP3asp__Types::ASP__MTP3__PAUSE_template& value_template, MTP3asp__Types::ASP__MTP3__PAUSE *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const MTP3asp__Types::ASP__MTP3__PAUSE_template& value_template, MTP3asp__Types::ASP__MTP3__PAUSE *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const MTP3asp__Types::ASP__MTP3__PAUSE_template& value_template, MTP3asp__Types::ASP__MTP3__PAUSE *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const MTP3asp__Types::ASP__MTP3__RESUME_template& value_template, MTP3asp__Types::ASP__MTP3__RESUME *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const MTP3asp__Types::ASP__MTP3__RESUME_template& value_template, MTP3asp__Types::ASP__MTP3__RESUME *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const MTP3asp__Types::ASP__MTP3__RESUME_template& value_template, MTP3asp__Types::ASP__MTP3__RESUME *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const MTP3asp__Types::ASP__MTP3__STATUS_template& value_template, MTP3asp__Types::ASP__MTP3__STATUS *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const MTP3asp__Types::ASP__MTP3__STATUS_template& value_template, MTP3asp__Types::ASP__MTP3__STATUS *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const MTP3asp__Types::ASP__MTP3__STATUS_template& value_template, MTP3asp__Types::ASP__MTP3__STATUS *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
private:
void incoming_message(const MTP3asp__Types::ASP__MTP3__TRANSFERind& incoming_par, component sender_component);
void incoming_message(const MTP3asp__Types::ASP__MTP3__PAUSE& incoming_par, component sender_component);
void incoming_message(const MTP3asp__Types::ASP__MTP3__RESUME& incoming_par, component sender_component);
void incoming_message(const MTP3asp__Types::ASP__MTP3__STATUS& incoming_par, component sender_component);
protected:
boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
};

class MTP3asp__SP__PT : public PORT {
enum msg_selection { MESSAGE_0 };
struct msg_queue_item : public msg_queue_item_base {
msg_selection item_selection;
union {
MTP3asp__Types::ASP__MTP3__TRANSFERreq *message_0;
};
component sender_component;
};

void remove_msg_queue_head();
protected:
void clear_queue();
public:
MTP3asp__SP__PT(const char *par_port_name = NULL);
~MTP3asp__SP__PT();
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERind& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERind& send_par, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERind_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERind_template& send_par, FLOAT* timestamp_redirect = NULL);
public:
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 MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& value_template, MTP3asp__Types::ASP__MTP3__TRANSFERreq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& value_template, MTP3asp__Types::ASP__MTP3__TRANSFERreq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& value_template, MTP3asp__Types::ASP__MTP3__TRANSFERreq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
private:
void incoming_message(const MTP3asp__Types::ASP__MTP3__TRANSFERreq& incoming_par, component sender_component);
protected:
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
