• Main Page
  • Classes
  • Files
  • File List

CPacketStreamFilter.h

00001 /*
00002  * synergy -- mouse and keyboard sharing utility
00003  * Copyright (C) 2012 Bolton Software Ltd.
00004  * Copyright (C) 2004 Chris Schoeneman
00005  * 
00006  * This package is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU General Public License
00008  * found in the file COPYING that should have accompanied this file.
00009  * 
00010  * This package is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
00017  */
00018 
00019 #ifndef CPACKETSTREAMFILTER_H
00020 #define CPACKETSTREAMFILTER_H
00021 
00022 #include "CStreamFilter.h"
00023 #include "CStreamBuffer.h"
00024 #include "CMutex.h"
00025 
00027 
00030 class CPacketStreamFilter : public CStreamFilter {
00031 public:
00032     CPacketStreamFilter(synergy::IStream* stream, bool adoptStream = true);
00033     ~CPacketStreamFilter();
00034 
00035     // IStream overrides
00036     virtual void        close();
00037     virtual UInt32      read(void* buffer, UInt32 n);
00038     virtual void        write(const void* buffer, UInt32 n);
00039     virtual void        shutdownInput();
00040     virtual bool        isReady() const;
00041     virtual UInt32      getSize() const;
00042 
00043 protected:
00044     // CStreamFilter overrides
00045     virtual void        filterEvent(const CEvent&);
00046 
00047 private:
00048     bool                isReadyNoLock() const;
00049     void                readPacketSize();
00050     bool                readMore();
00051 
00052 private:
00053     CMutex              m_mutex;
00054     UInt32              m_size;
00055     CStreamBuffer       m_buffer;
00056     bool                m_inputShutdown;
00057 };
00058 
00059 #endif

Generated on Wed May 22 2013 00:00:05 for Synergy by  doxygen 1.7.1