00001 /* 00002 Copyright 2007, 2008, 2009, 2010, 2011 Instituto de Sistemas e Robotica, Instituto Superior Tecnico 00003 00004 This file is part of MeRMaID. 00005 00006 MeRMaID is free software: you can redistribute it and/or modify 00007 it under the terms of the GNU Lesser General Public License as published by 00008 the Free Software Foundation, either version 3 of the License, or 00009 (at your option) any later version. 00010 00011 MeRMaID is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU Lesser General Public License for more details. 00015 00016 You should have received a copy of the GNU Lesser General Public License 00017 along with MeRMaID. If not, see <http://www.gnu.org/licenses/>. 00018 */ 00019 00020 00021 00022 #ifndef COMPONENTS_IOSERVICE_IOTESTREADSERVICE_HPP 00023 #define COMPONENTS_IOSERVICE_IOTESTREADSERVICE_HPP 00024 00025 #include <ActiveObject.hpp> 00026 00027 #include <Entity.hpp> 00028 #include <EntityDescription.hpp> 00029 #include <ServiceConfiguration.hpp> 00030 #include <Service.hpp> 00031 #include <ServiceInstanceDescription.hpp> 00032 #include <ServiceInterfaceDescription.hpp> 00033 #include <ServiceReply.hpp> 00034 #include <ServiceRequest.hpp> 00035 #include <XmlDocument.hpp> 00036 #include <DeviceHandle.hpp> 00037 #include <fstream> 00038 00039 namespace components 00040 { 00041 namespace ioservice 00042 { 00043 00044 using mermaid::support::activeobject::ActiveObject; 00045 using boost::shared_ptr; 00046 using mermaid::support::service::Entity; 00047 using mermaid::support::service::EntityDescription; 00048 using mermaid::support::service::ServiceConfiguration; 00049 using mermaid::support::service::Service; 00050 using mermaid::support::service::ServiceInstanceDescription; 00051 using mermaid::support::service::ServiceReply; 00052 using mermaid::support::service::ServiceRequest; 00053 using mermaid::support::xml::XmlDocument; 00054 using mermaid::support::io::DeviceHandle; 00055 00056 class IOTestReadService : public Service 00057 { 00058 public: 00059 00060 IOTestReadService (shared_ptr<ActiveObject> ao, shared_ptr<Entity> entity, shared_ptr<ServiceInstanceDescription> serviceInstanceDescription, shared_ptr<ServiceConfiguration> serviceConfiguration); 00061 00062 virtual void initialize(); 00063 virtual void update(); 00064 00065 virtual ~IOTestReadService(); 00066 00067 private: 00068 void handler (size_t, size_t, const char*, bool); 00069 void endTest(); 00070 void croak(); 00071 00072 shared_ptr<DeviceHandle> device_; 00073 std::ifstream file_; 00074 int fsize_; 00075 }; // class IOTestReadService 00076 }; // namespace ioservice 00077 }; // namespace components 00078 00079 00080 #endif // COMPONENTS_IOSERVICE_IOTESTREADSERVICE_HPP