20#include <netinet/in.h>
29typedef struct ssl_st
SSL;
72class SimpleServerConnection;
78#define WRITE_BUFFER_SIZE 393216
80#define WRITE_BUFFER_SIZE 64000
82#define READ_BUFFER_SIZE WRITE_BUFFER_SIZE
135 char *read_buf =
nullptr;
138 mutable void (*remove_socket)(int);
141 bool sendMessage(
int senderId,
int senderType,
const Message *msg)
const;
153 void set_peer(
int id,
int type);
154 int get_peer_id()
const;
155 int get_peer_type()
const;
161 return (get_id() != -1);
163 virtual int receive(
void *
buf,
unsigned nbyte)
const;
164 virtual int send(
const void *
buf,
unsigned nbyte)
const;
165 virtual int recv_msg(
Message *msg,
char *
ip =
nullptr)
const;
166 virtual int recv_msg_fast(
Message *msg)
const;
167 virtual bool sendMessage(
const Message *msg)
const override;
168 virtual bool sendMessage(
const UdpMessage *msg)
const override;
169 virtual int send_msg_fast(
const Message *msg);
170 int check_for_input(
float time = 0.0)
const;
175 void set_hostid(
int id);
184 int get_id(
void (*remove_func)(
int))
const;
197 return message_to_do;
201 std::cerr <<
"port: " << port << std::endl;
204 const Host *get_host()
const;
205 const char *get_hostname()
const;
215 bool sendMessage(
const UdpMessage* msg)
const override;
216 bool send_udp_msg(
const UdpMessage* msg,
const char*
ip =
nullptr)
const;
222 void get_dataformat();
238 std::unique_ptr<ServerConnection> spawn_connection()
const;
240 std::unique_ptr<SimpleServerConnection> spawnSimpleConnection()
const;
262 const char *readLine();
289 const char *readLine();
290 void get_dataformat();
323class NETEXPORT MulticastConnection :
public Connection
326 MulticastConnection(
int id,
int s_type,
int p,
char *MulticastGroup =
"224.10.10.10",
int ttl = 200);
331template<
typename Conn,
typename... Args>
333 std::unique_ptr<Conn> conn{
new Conn(std::forward<Args>(args)...)};
334 if (!conn->is_connected())
336 return std::move(conn);
339template<
typename Conn,
typename... Args>
341 std::unique_ptr<Conn> conn = createConnectedConn<Conn>(std::forward<Args>(args)...);
344 struct linger linger;
347 setsockopt(conn->get_id(
NULL), SOL_SOCKET, SO_LINGER, (
char *)&linger,
sizeof(linger));
349 return std::move(conn);
352std::unique_ptr<ServerConnection>
NETEXPORT setupServerConnection(
int id,
int senderType,
int timeoutstd, std::function<
bool(
const ServerConnection&)> informClient);
356 friend struct ConnectionAdder;
369template<
typename Conn,
typename ...Args>
371 std::unique_ptr<Conn> conn{
new Conn(std::forward<Args>(args)...)};
372 return dynamic_cast<const Conn*
>(add(std::move(conn)));
375template<
typename Conn,
typename ...Args>
377 std::unique_ptr<Conn> conn = createListeningConn<Conn>(std::forward<Args>(args)...);
380 return dynamic_cast<const Conn*
>(add(std::move(conn)));
385template<
typename Conn,
typename ...Args>
387 std::unique_ptr<Conn> conn = createConnectedConn<Conn>(std::forward<Args>(args)...);
390 return dynamic_cast<const Conn*
>(add(std::move(conn)));
396 const Connection *add(std::unique_ptr<Connection> &&conn);
402 const Connection *check_for_input(
float time = 0.0);
408 void addRemoveNotice(
const Connection *conn,
const std::function<
void(
void)> callback);
424 typedef int(PasswordCallback)(
char *
buf,
int size,
int rwflag,
void *userdata);
427 SSLConnection(
int sfd);
436 int AttachSSLToSocket(Socket *sock);
438 int receive(
void *
buf,
unsigned nbyte);
439 int send(
const void *
buf,
unsigned nbyte);
440 int recv_msg(Message *msg,
char *
ip =
nullptr)
const override;
441 int send_msg(
const Message *msg)
const;
442 bool sendMessage(
const Message *msg)
const override;
443 const char *readLine();
444 bool IsClosed()
const;
449 struct sockaddr_in mSA_client;
450 struct sockaddr_in mSA_server;
455 mutable SSL_STATE mState;
459 void setPasswdCallback(PasswordCallback *,
void *userData);
460 void validateConnState()
const;
462 PasswordCallback *mSSLCB;
468class NETEXPORT SSLServerConnection :
public SSLConnection
471 SSLServerConnection(PasswordCallback *cb,
void *userData);
472 SSLServerConnection(
int *
p,
int id,
int s_type, PasswordCallback *cb,
void *userData);
473 SSLServerConnection(
int p,
int id,
int st, PasswordCallback *cb,
void *userData);
474 SSLServerConnection(SSLSocket *socket, PasswordCallback *cb,
void *userData);
475 ~SSLServerConnection();
484 SSLServerConnection *spawnConnection();
490class NETEXPORT SSLClientConnection :
public SSLConnection
493 SSLClientConnection(Host *,
int p, PasswordCallback *cb,
void *userData );
494 ~SSLClientConnection();
504 void getErrorMessage(
long result);
#define NETEXPORT
Definition: coExport.h:373
#define NULL
Definition: covise_list.h:22
GLsizei const GLchar *const * string
Definition: khronos-glext.h:6750
GLboolean reset
Definition: khronos-glext.h:6369
const GLubyte * c
Definition: khronos-glext.h:9864
GLuint address
Definition: khronos-glext.h:10368
GLuint64EXT * result
Definition: khronos-glext.h:12573
GLuint buffer
Definition: khronos-glext.h:6606
GLsizeiptr size
Definition: khronos-glext.h:6610
GLuint GLuint GLsizei count
Definition: khronos-glext.h:6343
typedef void(APIENTRY *GLDEBUGPROCARB)(GLenum source
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: khronos-glext.h:8469
GLfloat GLfloat p
Definition: khronos-glext.h:9861
GLdouble s
Definition: khronos-glext.h:6441
GLbitfield GLuint64 timeout
Definition: khronos-glext.h:7882
GLenum GLuint id
Definition: khronos-glext.h:6279
GLenum type
Definition: khronos-glext.h:6279
GLfloat GLfloat GLfloat GLfloat h
Definition: khronos-glext.h:8441
struct ssl_ctx_st SSL_CTX
Definition: covise_connect.h:30
const int EC_CLIENT
Definition: covise_connect.h:66
struct ssl_st SSL
Definition: covise_connect.h:29
struct ssl_method_st SSL_METHOD
Definition: covise_connect.h:31
const int EC_SERVER
Definition: covise_connect.h:65
struct in_addr ip
Definition: coSimClient.h:202
list of all chemical elements
Definition: coConfig.h:27
static std::unique_ptr< Conn > createConnectedConn(Args &&...args)
Definition: covise_connect.h:332
std::unique_ptr< ServerConnection > NETEXPORT setupServerConnection(int id, int senderType, int timeoutstd, std::function< bool(const ServerConnection &)> informClient)
Definition: covise_connect.cpp:1313
static std::unique_ptr< Conn > createListeningConn(Args &&...args)
Definition: covise_connect.h:340
Definition: covise_connect.h:122
Socket * getSocket() const
Definition: covise_connect.h:149
char convert_to
Definition: covise_connect.h:144
int get_hostid() const
Definition: covise_connect.h:176
int sender_id
Definition: covise_connect.h:128
int peer_type_
Definition: covise_connect.h:131
int peer_id_
Definition: covise_connect.h:130
int hostid
Definition: covise_connect.h:137
unsigned long tru
Definition: covise_connect.h:134
int has_message() const
Definition: covise_connect.h:191
int get_port() const
Definition: covise_connect.h:171
int get_sender_id() const
Definition: covise_connect.h:185
int get_sendertype() const
Definition: covise_connect.h:180
int port
Definition: covise_connect.h:127
void print() const
Definition: covise_connect.h:199
int * header_int
Definition: covise_connect.h:140
int send_type
Definition: covise_connect.h:129
int is_connected() const
Definition: covise_connect.h:157
int bytes_to_process
Definition: covise_connect.h:133
int message_to_do
Definition: covise_connect.h:132
Definition: covise_connect.h:209
Definition: covise_connect.h:220
ServerConnection(Socket *s)
Definition: covise_connect.h:229
virtual ~ServerConnection()
Definition: covise_connect.h:233
Definition: covise_connect.h:243
Definition: covise_connect.h:251
size_t buflen
Definition: covise_connect.h:254
Definition: covise_connect.h:267
Host * lhost
Definition: covise_connect.h:268
Definition: covise_connect.h:279
Host * lhost
Definition: covise_connect.h:281
Host * host
Definition: covise_connect.h:280
size_t buflen
Definition: covise_connect.h:283
Definition: covise_connect.h:294
~DataManagerConnection()
Definition: covise_connect.h:309
DataManagerConnection(Host *hp, int pp, int my_id, int st)
Definition: covise_connect.h:298
DataManagerConnection(int pp, int my_id, int st)
Definition: covise_connect.h:305
Definition: covise_connect.h:314
ControllerConnection(Host *h, int p, int id, int st)
Definition: covise_connect.h:317
Definition: covise_connect.h:355
ConnectionList(ConnectionList &&)=delete
int maxfd
Definition: covise_connect.h:415
ConnectionList(const ConnectionList &)=delete
fd_set fdvar
Definition: covise_connect.h:414
const Conn * tryAddNewListeningConn(Args &&...args)
Definition: covise_connect.h:376
ConnectionList & operator=(ConnectionList &&)=delete
const Conn * addNewConn(Args &&...args)
Definition: covise_connect.h:370
std::vector< std::unique_ptr< Connection > > connlist
Definition: covise_connect.h:412
ConnectionList & operator=(const ConnectionList &)=delete
ServerConnection * open_sock
Definition: covise_connect.h:416
const Conn * tryAddNewConnectedConn(Args &&...args)
Definition: covise_connect.h:386
std::map< const Connection *, std::vector< std::function< void(void)> > > m_onRemoveCallbacks
Definition: covise_connect.h:413
Definition: covise_host.h:19
Definition: covise_socket.h:129
Definition: covise_socket.h:248
Definition: message_sender_interface.h:20
Definition: udpMessage.h:32