SocketConnection.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_SOCKETCONNECTION_H
23#define FIX_SOCKETCONNECTION_H
24
25#ifdef _MSC_VER
26#pragma warning( disable : 4503 4355 4786 4290 )
27#endif
28
29#include "Parser.h"
30#include "Responder.h"
31#include "SessionID.h"
32#include "SocketMonitor.h"
33#include "Utility.h"
34#include "Mutex.h"
35#include <set>
36
37namespace FIX
38{
39class SocketAcceptor;
40class SocketServer;
41class SocketConnector;
42class SocketInitiator;
43class Session;
44
47{
48public:
49 typedef std::set<SessionID> Sessions;
50
51 SocketConnection( int s, Sessions sessions, SocketMonitor* pMonitor );
53 virtual ~SocketConnection();
54
55 int getSocket() const { return m_socket; }
56 Session* getSession() const { return m_pSession; }
57
58 bool read( SocketConnector& s );
60 bool processQueue();
61
62 void signal()
63 {
64 Locker l( m_mutex );
65 if( m_sendQueue.size() == 1 )
67 }
68
69 void unsignal()
70 {
71 Locker l( m_mutex );
72 if( m_sendQueue.size() == 0 )
74 }
75
76 void onTimeout();
77
78private:
79 typedef std::deque<std::string, ALLOCATOR<std::string> >
81
82 bool isValidSession();
83 void readFromSocket() throw( SocketRecvFailed );
84 bool readMessage( std::string& msg );
85 void readMessages( SocketMonitor& s );
86 bool send( const std::string& );
87 void disconnect();
88
90 char m_buffer[BUFSIZ];
91
94 unsigned m_sendLength;
99 fd_set m_fds;
100};
101}
102
103#endif //FIX_SOCKETCONNECTION_H
Locks/Unlocks a mutex using RAII.
Definition Mutex.h:96
Portable implementation of a mutex.
Definition Mutex.h:31
Parses FIX messages off an input stream.
Definition Parser.h:37
Interface implements sending on and disconnecting a transport.
Definition Responder.h:35
Maintains the state and implements the logic of a FIX session.
Definition Session.h:46
Unique session id consists of BeginString, SenderCompID and TargetCompID.
Definition SessionID.h:31
Socket implementation of Acceptor.
Encapsulates a socket file descriptor (single-threaded).
Session * getSession() const
void readMessages(SocketMonitor &s)
SocketMonitor * m_pMonitor
bool send(const std::string &)
bool readMessage(std::string &msg)
std::deque< std::string, ALLOCATOR< std::string > > Queue
std::set< SessionID > Sessions
bool read(SocketConnector &s)
Connects sockets to remote ports and addresses.
Socket implementation of Initiator.
Monitors events on a collection of sockets.
void unsignal(int socket)
void signal(int socket)
Listens for and accepts incoming socket connections on a port.
Socket recv operation failed.
Definition Exceptions.h:279

Generated on Thu May 22 2025 08:23:50 for QuickFIX by doxygen 1.9.8 written by Dimitri van Heesch, © 1997-2001