00001 /* 00002 Dashel 00003 A cross-platform DAta Stream Helper Encapsulation Library 00004 Copyright (C) 2007 -- 2012: 00005 00006 Stephane Magnenat <stephane at magnenat dot net> 00007 (http://stephane.magnenat.net) 00008 Mobots group - Laboratory of Robotics Systems, EPFL, Lausanne 00009 (http://mobots.epfl.ch) 00010 00011 Sebastian Gerlach 00012 Kenzan Technologies 00013 (http://www.kenzantech.com) 00014 00015 All rights reserved. 00016 00017 Redistribution and use in source and binary forms, with or without 00018 modification, are permitted provided that the following conditions are met: 00019 * Redistributions of source code must retain the above copyright 00020 notice, this list of conditions and the following disclaimer. 00021 * Redistributions in binary form must reproduce the above copyright 00022 notice, this list of conditions and the following disclaimer in the 00023 documentation and/or other materials provided with the distribution. 00024 * Neither the names of "Mobots", "Laboratory of Robotics Systems", "EPFL", 00025 "Kenzan Technologies" nor the names of the contributors may be used to 00026 endorse or promote products derived from this software without specific 00027 prior written permission. 00028 00029 THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS ``AS IS'' AND ANY 00030 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00031 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00032 DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS BE LIABLE FOR ANY 00033 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00034 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00035 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00036 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00037 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00038 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00039 */ 00040 00041 #ifndef INCLUDED_DASHEL_POSIX_H 00042 #define INCLUDED_DASHEL_POSIX_H 00043 00044 #include "dashel.h" 00045 00046 namespace Dashel 00047 { 00049 class SelectableStream: virtual public Stream 00050 { 00051 protected: 00052 int fd; 00053 bool writeOnly; 00054 friend class Hub; 00055 00056 public: 00058 SelectableStream(const std::string& protocolName); 00059 00060 virtual ~SelectableStream(); 00061 00063 virtual bool receiveDataAndCheckDisconnection() = 0; 00064 00066 virtual bool isDataInRecvBuffer() const = 0; 00067 }; 00068 } 00069 00070 #endif