00001 /*MT* 00002 00003 MediaTomb - http://www.mediatomb.cc/ 00004 00005 process_io_handler.h - this file is part of MediaTomb. 00006 00007 Copyright (C) 2005 Gena Batyan <bgeradz@mediatomb.cc>, 00008 Sergey 'Jin' Bostandzhyan <jin@mediatomb.cc> 00009 00010 Copyright (C) 2006-2010 Gena Batyan <bgeradz@mediatomb.cc>, 00011 Sergey 'Jin' Bostandzhyan <jin@mediatomb.cc>, 00012 Leonhard Wimmer <leo@mediatomb.cc> 00013 00014 MediaTomb is free software; you can redistribute it and/or modify 00015 it under the terms of the GNU General Public License version 2 00016 as published by the Free Software Foundation. 00017 00018 MediaTomb is distributed in the hope that it will be useful, 00019 but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00021 GNU General Public License for more details. 00022 00023 You should have received a copy of the GNU General Public License 00024 version 2 along with MediaTomb; if not, write to the Free Software 00025 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 00026 00027 $Id: process_io_handler.h 2081 2010-03-23 20:18:00Z lww $ 00028 */ 00029 00032 #ifndef __PROCESS_IO_HANDLER_H__ 00033 #define __PROCESS_IO_HANDLER_H__ 00034 00035 #include "common.h" 00036 #include "io_handler.h" 00037 #include "executor.h" 00038 00039 #define FIFO_READ_TIMEOUT 2 00040 #define FIFO_WRITE_TIMEOUT 2 00041 00042 class ProcListItem : public zmm::Object 00043 { 00044 public: 00045 ProcListItem(zmm::Ref<Executor> exec, bool abortOnDeath = false); 00046 zmm::Ref<Executor> getExecutor(); 00047 bool abortOnDeath(); 00048 00049 protected: 00050 zmm::Ref<Executor> executor; 00051 bool abort; 00052 }; 00053 00055 class ProcessIOHandler : public IOHandler 00056 { 00057 public: 00062 ProcessIOHandler(zmm::String filename, zmm::Ref<Executor> main_proc, 00063 zmm::Ref<zmm::Array<ProcListItem> > proclist = nil, 00064 bool ignoreSeek = false); 00065 00067 virtual void open(IN enum UpnpOpenFileMode mode); 00068 00072 virtual int read(OUT char *buf, IN size_t length); 00073 00078 virtual int write(OUT char *buf, IN size_t length); 00079 00087 virtual void seek(IN off_t offset, IN int whence); 00088 00089 00091 virtual void close(); 00092 00093 ~ProcessIOHandler(); 00094 00095 protected: 00097 zmm::Ref<zmm::Array<ProcListItem> > proclist; 00098 00100 zmm::Ref<Executor> main_proc; 00101 00103 zmm::String filename; 00104 00106 int fd; 00107 00109 bool ignore_seek; 00110 00111 00112 bool abort(); 00113 void killall(); 00114 void registerAll(); 00115 void unregisterAll(); 00116 }; 00117 00118 00119 #endif // __PROCESS_IO_HANDLER_H__
1.6.1