blob: 4bff6cae708a8b04d3d0060cd66a5b76fb241595 [file]
/*******************************************************************************
* Copyright (c) 2015 fortiss GmbH
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Alois Zoitl - initial API and implementation and/or initial documentation
*******************************************************************************/
#ifndef _GENSOCKHAND_H_
#define _GENSOCKHAND_H_
#ifndef FORTE_SOCKET_TYPE
#define FORTE_SOCKET_TYPE int
#endif
#ifndef FORTE_INVALID_SOCKET
#define FORTE_INVALID_SOCKET -1
#endif
/*!\brief Template class allowing to easily setup IP communication socket handlers.
*
* There are two template parameters:
* - THandler an external event handler which allows Comlayers to register with a descriptor and get notifications on received messages
* - TSocektCreator a class providing methods for creating and deleting tcp and udp sockets
*/
template <typename THandler, typename TSocketCreator>
class CGenericIPComSocketHandler : public THandler, public TSocketCreator{
public:
//! Type needed by the class CIPCommLayer
typedef FORTE_SOCKET_TYPE TSocketDescriptor;
static const TSocketDescriptor scmInvalidSocketDescriptor = FORTE_INVALID_SOCKET;
//as this class is just a place holder for the others we don't want to have an instance of it
CGenericIPComSocketHandler() = delete;
CGenericIPComSocketHandler(const CGenericIPComSocketHandler&) = delete;
CGenericIPComSocketHandler& operator =(const CGenericIPComSocketHandler &) = delete;
~CGenericIPComSocketHandler() override = default;
};
#endif /* _GENSOCKHAND_H_ */