// 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 HTTPmsg__PortType_HH
#define HTTPmsg__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 "HTTPmsg_Types.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 HTTPmsg__PortType_HH
#endif

namespace HTTPmsg__PortType {

/* Forward declarations of classes */

class HTTPmsg__PT_BASE;
class HTTPmsg__PT;

} /* end of namespace */

#ifndef HTTPmsg__PortType_HH
#define HTTPmsg__PortType_HH

namespace HTTPmsg__PortType {

/* Class definitions */

class HTTPmsg__PT_BASE : public PORT {
enum msg_selection { MESSAGE_0, MESSAGE_1, MESSAGE_2, MESSAGE_3, MESSAGE_4, MESSAGE_5, MESSAGE_6, MESSAGE_7 };
struct msg_queue_item : public msg_queue_item_base {
msg_selection item_selection;
union {
HTTPmsg__Types::Connect__result *message_0;
HTTPmsg__Types::Client__connected *message_1;
HTTPmsg__Types::Listen__result *message_2;
HTTPmsg__Types::Send__failed *message_3;
HTTPmsg__Types::Close *message_4;
HTTPmsg__Types::Half__close *message_5;
HTTPmsg__Types::Shutdown *message_6;
HTTPmsg__Types::HTTPMessage *message_7;
};
component sender_component;
};

void remove_msg_queue_head();
protected:
void clear_queue();
public:
HTTPmsg__PT_BASE(const char *par_port_name);
~HTTPmsg__PT_BASE();
void send(const HTTPmsg__Types::Connect& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Connect& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Connect& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Connect_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Connect_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Connect_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Listen& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Listen& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Listen& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Listen_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Listen_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Listen_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Close& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Close& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Close& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Close_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Close_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Close_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Half__close& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Half__close& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Half__close& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Half__close_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Half__close_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Half__close_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Shutdown& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Shutdown& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Shutdown& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Shutdown_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Shutdown_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::Shutdown_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::HTTPMessage& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::HTTPMessage& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::HTTPMessage& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::HTTPMessage_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::HTTPMessage_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const HTTPmsg__Types::HTTPMessage_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
protected:
virtual void outgoing_send(const HTTPmsg__Types::Connect& send_par) = 0;
virtual void outgoing_send(const HTTPmsg__Types::Listen& send_par) = 0;
virtual void outgoing_send(const HTTPmsg__Types::Close& send_par) = 0;
virtual void outgoing_send(const HTTPmsg__Types::Half__close& send_par) = 0;
virtual void outgoing_send(const HTTPmsg__Types::Shutdown& send_par) = 0;
virtual void outgoing_send(const HTTPmsg__Types::HTTPMessage& send_par) = 0;
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 HTTPmsg__Types::Connect__result_template& value_template, HTTPmsg__Types::Connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const HTTPmsg__Types::Connect__result_template& value_template, HTTPmsg__Types::Connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const HTTPmsg__Types::Connect__result_template& value_template, HTTPmsg__Types::Connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const HTTPmsg__Types::Client__connected_template& value_template, HTTPmsg__Types::Client__connected *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const HTTPmsg__Types::Client__connected_template& value_template, HTTPmsg__Types::Client__connected *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const HTTPmsg__Types::Client__connected_template& value_template, HTTPmsg__Types::Client__connected *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const HTTPmsg__Types::Listen__result_template& value_template, HTTPmsg__Types::Listen__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const HTTPmsg__Types::Listen__result_template& value_template, HTTPmsg__Types::Listen__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const HTTPmsg__Types::Listen__result_template& value_template, HTTPmsg__Types::Listen__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const HTTPmsg__Types::Send__failed_template& value_template, HTTPmsg__Types::Send__failed *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const HTTPmsg__Types::Send__failed_template& value_template, HTTPmsg__Types::Send__failed *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const HTTPmsg__Types::Send__failed_template& value_template, HTTPmsg__Types::Send__failed *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const HTTPmsg__Types::Close_template& value_template, HTTPmsg__Types::Close *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const HTTPmsg__Types::Close_template& value_template, HTTPmsg__Types::Close *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const HTTPmsg__Types::Close_template& value_template, HTTPmsg__Types::Close *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const HTTPmsg__Types::Half__close_template& value_template, HTTPmsg__Types::Half__close *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const HTTPmsg__Types::Half__close_template& value_template, HTTPmsg__Types::Half__close *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const HTTPmsg__Types::Half__close_template& value_template, HTTPmsg__Types::Half__close *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const HTTPmsg__Types::Shutdown_template& value_template, HTTPmsg__Types::Shutdown *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const HTTPmsg__Types::Shutdown_template& value_template, HTTPmsg__Types::Shutdown *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const HTTPmsg__Types::Shutdown_template& value_template, HTTPmsg__Types::Shutdown *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const HTTPmsg__Types::HTTPMessage_template& value_template, HTTPmsg__Types::HTTPMessage *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const HTTPmsg__Types::HTTPMessage_template& value_template, HTTPmsg__Types::HTTPMessage *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const HTTPmsg__Types::HTTPMessage_template& value_template, HTTPmsg__Types::HTTPMessage *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
private:
void incoming_message(const HTTPmsg__Types::Connect__result& incoming_par, component sender_component);
void incoming_message(const HTTPmsg__Types::Client__connected& incoming_par, component sender_component);
void incoming_message(const HTTPmsg__Types::Listen__result& incoming_par, component sender_component);
void incoming_message(const HTTPmsg__Types::Send__failed& incoming_par, component sender_component);
void incoming_message(const HTTPmsg__Types::Close& incoming_par, component sender_component);
void incoming_message(const HTTPmsg__Types::Half__close& incoming_par, component sender_component);
void incoming_message(const HTTPmsg__Types::Shutdown& incoming_par, component sender_component);
void incoming_message(const HTTPmsg__Types::HTTPMessage& incoming_par, component sender_component);
protected:
inline void incoming_message(const HTTPmsg__Types::Connect__result& incoming_par) { incoming_message(incoming_par, SYSTEM_COMPREF); }
inline void incoming_message(const HTTPmsg__Types::Client__connected& incoming_par) { incoming_message(incoming_par, SYSTEM_COMPREF); }
inline void incoming_message(const HTTPmsg__Types::Listen__result& incoming_par) { incoming_message(incoming_par, SYSTEM_COMPREF); }
inline void incoming_message(const HTTPmsg__Types::Send__failed& incoming_par) { incoming_message(incoming_par, SYSTEM_COMPREF); }
inline void incoming_message(const HTTPmsg__Types::Close& incoming_par) { incoming_message(incoming_par, SYSTEM_COMPREF); }
inline void incoming_message(const HTTPmsg__Types::Half__close& incoming_par) { incoming_message(incoming_par, SYSTEM_COMPREF); }
inline void incoming_message(const HTTPmsg__Types::Shutdown& incoming_par) { incoming_message(incoming_par, SYSTEM_COMPREF); }
inline void incoming_message(const HTTPmsg__Types::HTTPMessage& incoming_par) { incoming_message(incoming_par, SYSTEM_COMPREF); }
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 */

/* Test port header files */

#include "HTTPmsg_PT.hh"

#endif
