SBinetTimedStream.hpp
上传用户:xqtpzdz
上传日期:2022-05-21
资源大小:1764k
文件大小:3k
源码类别:

xml/soap/webservice

开发平台:

Visual C++

  1. /****************License************************************************
  2.  * Vocalocity OpenVXI
  3.  * Copyright (C) 2004-2005 by Vocalocity, Inc. All Rights Reserved.
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *  
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  * Vocalocity, the Vocalocity logo, and VocalOS are trademarks or 
  18.  * registered trademarks of Vocalocity, Inc. 
  19.  * OpenVXI is a trademark of Scansoft, Inc. and used under license 
  20.  * by Vocalocity.
  21.  ***********************************************************************/
  22. #ifndef SBINETTIMEDSTREAM_HPP
  23. #define SBINETTIMEDSTREAM_HPP
  24. /**
  25.  * A SBinetTimedStream is a class that is a wrapper around a
  26.  * SBinetStoppableStream.  The only purpose of the SBinetTimedStream is to set
  27.  * time-out of the wrapped stream and then to invoke the request operation on
  28.  * the wrapped stream.  The wrapped stream are actually responsible for
  29.  * respecting time-outs.
  30.  *
  31.  * @doc <p>
  32.  * Copyright 2004 Vocalocity, Inc.
  33.  *  All Rights Reserved.
  34.  **/
  35. #include "VXIinetStream.hpp"
  36. #include "SWIutilLogger.hpp"
  37. #include "SBinetLog.h"
  38. #include "SBinetStoppable.hpp"
  39. class SBinetStoppableStream;
  40. class SBinetTimedStream: public VXIinetStream, public SWIutilLogger
  41. {
  42.   // ................. CONSTRUCTORS, DESTRUCTOR  ............
  43.   //
  44.   // ------------------------------------------------------------
  45.   /**
  46.    * Default constructor.
  47.    **/
  48.  public:
  49.   SBinetTimedStream(SBinetStoppableStream *aStream,
  50.                     VXIlogInterface *log, VXIunsigned diagLogBase);
  51.   /**
  52.    * Destructor.
  53.    **/
  54.  public:
  55.   virtual ~SBinetTimedStream();
  56.   VXIinetResult Open(VXIint flags,
  57.      const VXIMap* properties,
  58.      VXIMap* streamInfo);
  59.   VXIinetResult Read(/* [OUT] */ VXIbyte*         pBuffer,
  60.                      /* [IN]  */ VXIulong         nBuflen,
  61.                      /* [OUT] */ VXIulong*        pnRead );
  62.   VXIinetResult Write(/* [IN]  */ const VXIbyte*   pBuffer,
  63.                       /* [IN]  */ VXIulong         nBuflen,
  64.                       /* [OUT] */ VXIulong*        pnWritten);
  65.   VXIinetResult Close();
  66.   /**
  67.     * Disabled copy constructor.
  68.    **/
  69.  private:
  70.   SBinetTimedStream(const SBinetTimedStream&);
  71.   /**
  72.     * Disabled assignment operator.
  73.    **/
  74.  private:
  75.   SBinetTimedStream& operator=(const SBinetTimedStream&);
  76.  private:
  77.   void setDelay(VXIint32 delay);
  78.   bool hasTimedOut() const;
  79.  private:
  80.   SBinetStoppableStream* _stream;
  81.   VXIint32 _timeoutOpen;
  82.   VXIint32 _timeoutIO;
  83.   VXIint32 _timeoutDownload;
  84.   SWITimeStamp *_finalTime;
  85. };
  86. #endif