/****************************************************************************** * Copyright (c) 2000-2022 Ericsson Telecom AB * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html * * Contributors: * Jozsef Gyurusi - initial implementation and initial documentation * Csaba Bela Koppany * Gabor Szalai * Peter Kremer * Tamas Buti * Zoltan Jasz ******************************************************************************/ // // File: UDPasp_PT.hh // Description: UDP test port header // Rev: R8B // Prodnr: CNL 113 346 // #ifndef UDPasp__PT_HH #define UDPasp__PT_HH #include #include "UDPasp_Types.hh" #include #include #include #include namespace UDPasp__Types { class ASP__UDP; class ASP__UDP__message; class ASP__UDP__open; class ASP__UDP__open_result; class ASP__UDP__close; } namespace UDPasp__PortType { class UDPasp__PT_PROVIDER : public PORT { public: UDPasp__PT_PROVIDER(const char *par_port_name=NULL); ~UDPasp__PT_PROVIDER(); void set_parameter(const char *parameter_name, const char *parameter_value); void Event_Handler(const fd_set *read_fds, const fd_set *write_fds, const fd_set *error_fds, double time_since_last_call); protected: void user_map(const char *system_port); void user_unmap(const char *system_port); void user_start(); void user_stop(); void outgoing_send(const UDPasp__Types::ASP__UDP& send_par); void outgoing_send(const UDPasp__Types::ASP__UDP__message& send_par); void outgoing_send(const UDPasp__Types::ASP__UDP__open& send_par); void outgoing_send(const UDPasp__Types::ASP__UDP__close& send_par); virtual void incoming_message(const UDPasp__Types::ASP__UDP& incoming_par) = 0; virtual void incoming_message(const UDPasp__Types::ASP__UDP__message& incoming_par) = 0; virtual void incoming_message(const UDPasp__Types::ASP__UDP__open__result& incoming_par) = 0; void log(const char *fmt, ...); void logHex(const char *prompt, const OCTETSTRING& msg); int setUpSocket(bool do_bind); void closeDownSocket(); unsigned long getHostId(const char* destHostName); private: bool debugging; bool port_mode; // false: basic mode. Works like R1A02 // true: advanced mode. The new features are activated bool broadcast; bool reuseaddr; struct conn_data{ int fd; int port_num; int status; struct sockaddr_in remote_Addr; }; conn_data *conn_list; int num_of_conn; int conn_list_length; struct sockaddr_in localAddr; int target_fd; fd_set conn_map; }; } #endif