Program Listing for File ConnectionManager.h¶
↰ Return to documentation for file (src/ConnectionManager.h)
//
// Created by Aleksey Timin on 11/18/19.
//
#ifndef EIPSCANNER_CONNECTIONMANAGER_H
#define EIPSCANNER_CONNECTIONMANAGER_H
#include <map>
#include "MessageRouter.h"
#include "IOConnection.h"
#include "cip/connectionManager/ConnectionParameters.h"
#include "cip/Services.h"
#include "cip/Types.h"
#include "sockets/UDPBoundSocket.h"
namespace eipScanner {
class ConnectionManager {
public:
ConnectionManager();
explicit ConnectionManager(const MessageRouter::SPtr& messageRouter);
~ConnectionManager();
IOConnection::WPtr forwardOpen(const SessionInfoIf::SPtr& si, cip::connectionManager::ConnectionParameters connectionParameters, bool isLarge = false);
IOConnection::WPtr largeForwardOpen(const SessionInfoIf::SPtr& si, cip::connectionManager::ConnectionParameters connectionParameters);
void forwardClose(const SessionInfoIf::SPtr& si, const IOConnection::WPtr& ioConnection);
void handleConnections(std::chrono::milliseconds timeout);
bool hasOpenConnections() const;
private:
MessageRouter::SPtr _messageRouter;
std::map<cip::CipUint, IOConnection::SPtr> _connectionMap;
std::map<sockets::EndPoint, std::shared_ptr<sockets::UDPBoundSocket>> _socketMap;
sockets::UDPBoundSocket::SPtr findOrCreateSocket(const sockets::EndPoint& endPoint);
cip::CipUint _incarnationId;
};
}
#endif // EIPSCANNER_CONNECTIONMANAGER_H