blob: de68300dd05037a72014b8bb64bf29b7156501e8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 - 2018 Johannes Messmer (admin@jomess.com), 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:
* Johannes Messmer - initial API and implementation and/or initial documentation
* Jose Cabral - Cleaning of namespaces
*******************************************************************************/
#ifndef SRC_CORE_IO_MAPPER_HANDLE_H_
#define SRC_CORE_IO_MAPPER_HANDLE_H_
#include <forte_any.h>
#include <forte_bool.h>
#include "io_mapper.h"
namespace forte {
namespace core {
namespace io {
class IODeviceController;
class IOHandle {
friend class IOMapper;
public:
IOHandle(IODeviceController *paController, IOMapper::Direction paDirection, CIEC_ANY::EDataTypeID paType);
virtual ~IOHandle();
bool hasObserver() {
return !!mObserver;
}
IOObserver* getObserver() {
return mObserver;
}
bool is(CIEC_ANY::EDataTypeID paType) {
return this->mType == paType;
}
bool is(IOMapper::Direction paDirection) {
return this->mDirection == paDirection;
}
virtual void set(const CIEC_ANY &) = 0;
virtual void get(CIEC_ANY &) = 0;
void onChange();
protected:
IODeviceController *mController;
CIEC_ANY::EDataTypeID mType;
IOMapper::Direction mDirection;
virtual void onObserver(IOObserver *paObserver);
virtual void dropObserver();
private:
IOObserver *mObserver;
};
} //namespace IO
} //namepsace core
} //namespace forte
#endif /* SRC_CORE_IO_MAPPER_HANDLE_H_ */