/* * Device.h * * Created on: Oct 25, 2012 * Author: dklein */ #ifndef DEVICE_H_ #define DEVICE_H_ #include "Configurable.h" #include "StateMachine.h" #include #include "Context.h" #include "Socket.h" #include #include "Logger.h" #include #include namespace Highway { template class Device : public StateMachine, public Configurable { protected: std::string fId; int fNumIoThreads; Context* fPayloadContext; std::vector *fBindAddress; std::vector *fBindSocketType; std::vector *fBindSndBufferSize; std::vector *fBindRcvBufferSize; std::vector *fConnectAddress; std::vector *fConnectSocketType; std::vector *fConnectSndBufferSize; std::vector *fConnectRcvBufferSize; std::vector *fPayloadInputs; std::vector *fPayloadOutputs; int fLogIntervalInMs; public: enum { Id = Configurable::Last, NumIoThreads, BindAddress, BindSocketType, BindSndBufferSize, BindRcvBufferSize, ConnectAddress, ConnectSocketType, ConnectSndBufferSize, ConnectRcvBufferSize, LogIntervalInMs, Last }; Device(); virtual void Init(); virtual void Bind(); virtual void Connect(); virtual void Run(); virtual void Pause(); virtual void Shutdown(); virtual void LogSocketRates(); virtual void SetProperty(int key, std::string value, int slot = 0); virtual std::string GetProperty(int key, std::string default_ = "", int slot = 0); virtual void SetProperty(int key, int value, int slot = 0); virtual int GetProperty(int key, int default_ = 0, int slot = 0); virtual ~Device(); }; } /* namespace Highway */ #include "Device.txx" #endif /* DEVICE_H_ */