ThreadedSocketAcceptor.h
Go to the documentation of this file.
1/* -*- C++ -*- */
2
3/****************************************************************************
4** Copyright (c) 2001-2014
5**
6** This file is part of the QuickFIX FIX Engine
7**
8** This file may be distributed under the terms of the quickfixengine.org
9** license as defined by quickfixengine.org and appearing in the file
10** LICENSE included in the packaging of this file.
11**
12** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
14**
15** See http://www.quickfixengine.org/LICENSE for licensing information.
16**
17** Contact ask@quickfixengine.org if any conditions of this licensing are
18** not clear to you.
19**
20****************************************************************************/
21
22#ifndef FIX_THREADEDSOCKETACCEPTOR_H
23#define FIX_THREADEDSOCKETACCEPTOR_H
24
25#ifdef _MSC_VER
26#pragma warning( disable : 4503 4355 4786 4290 )
27#endif
28
29#include "Acceptor.h"
31#include "Mutex.h"
32
33namespace FIX
34{
37{
38 friend class SocketConnection;
39public:
41 const SessionSettings& ) throw( ConfigError );
43 const SessionSettings&,
44 LogFactory& ) throw( ConfigError );
45
47
48private:
50 {
51 AcceptorThreadInfo( ThreadedSocketAcceptor* pAcceptor, int socket, int port )
52 : m_pAcceptor( pAcceptor ), m_socket( socket ), m_port( port ) {}
53
56 int m_port;
57 };
58
68
70
71 typedef std::set < int > Sockets;
72 typedef std::set < SessionID > Sessions;
73 typedef std::map < int, Sessions > PortToSessions;
74 typedef std::map < int, int > SocketToPort;
75 typedef std::map < int, thread_id > SocketToThread;
76
77 void onConfigure( const SessionSettings& ) throw ( ConfigError );
78 void onInitialize( const SessionSettings& ) throw ( RuntimeError );
79
80 void onStart();
81 bool onPoll( double timeout );
82 void onStop();
83
84 void addThread( int s, thread_id t );
85 void removeThread( int s );
86 static THREAD_PROC socketAcceptorThread( void* p );
87 static THREAD_PROC socketConnectionThread( void* p );
88
94};
96}
97
98#endif //FIX_THREADEDSOCKETACCEPTOR_H
#define THREAD_PROC
Definition Utility.h:184
Base for classes which act as an acceptor for incoming connections.
Definition Acceptor.h:50
This interface must be implemented to define what your FIX application does.
Definition Application.h:44
This interface must be implemented to create a Log.
Definition Log.h:43
This interface must be implemented to create a MessageStore.
Portable implementation of a mutex.
Definition Mutex.h:31
Container for setting dictionaries mapped to sessions.
Encapsulates a socket file descriptor (single-threaded).
Threaded Socket implementation of Acceptor.
bool onPoll(double timeout)
Implemented to connect and poll for events.
std::map< int, Sessions > PortToSessions
static THREAD_PROC socketConnectionThread(void *p)
static THREAD_PROC socketAcceptorThread(void *p)
bool readSettings(const SessionSettings &)
void onStop()
Implemented to stop a running acceptor.
void onStart()
Implemented to start listening for connections.
std::map< int, thread_id > SocketToThread
void onConfigure(const SessionSettings &)
Implemented to configure acceptor.
void onInitialize(const SessionSettings &)
Implemented to initialize acceptor.
Encapsulates a socket file descriptor (multi-threaded).
pthread_t thread_id
Definition Utility.h:190
Application is not configured correctly
Definition Exceptions.h:88
Application encountered serious error during runtime
Definition Exceptions.h:95
AcceptorThreadInfo(ThreadedSocketAcceptor *pAcceptor, int socket, int port)
ConnectionThreadInfo(ThreadedSocketAcceptor *pAcceptor, ThreadedSocketConnection *pConnection)

Generated on Mon Oct 14 2024 06:04:44 for QuickFIX by doxygen 1.9.8 written by Dimitri van Heesch, © 1997-2001