home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / Internet / FWCyStrm.cpp < prev    next >
Encoding:
Text File  |  1996-09-17  |  4.7 KB  |  160 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWCyStrm.cpp
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //    Cyberdog Stream Utilities
  9. //    
  10. //========================================================================================
  11.  
  12. #ifndef FWFRAMEW_HPP
  13. #include "FWFrameW.hpp"
  14. #endif
  15.  
  16. #ifndef FWCYSTRM_H
  17. #include "FWCyStrm.h"
  18. #endif
  19.  
  20. #ifndef FWSTRMRW_H
  21. #include "FWStrmRW.h"
  22. #endif
  23.  
  24. #ifndef FWSOMENV_H
  25. #include "FWSOMEnv.h"
  26. #endif
  27.  
  28. // template definition for FW_TSOMPtr<TRep>
  29. #include "FWSOMPtr.tpp"
  30.  
  31. //
  32. // Cyberdog
  33. //
  34.  
  35. #ifndef SOM_CyberStream_xh
  36. #include <CyberStream.xh>
  37. #endif
  38.  
  39. #ifndef SOM_CyberItem_xh
  40. #include <CyberItem.xh>
  41. #endif
  42.  
  43. #ifndef SOM_CyberSession_xh
  44. #include <CyberSession.xh>
  45. #endif
  46.  
  47. //========================================================================================
  48. // Class FW_CCyberStream
  49. //========================================================================================
  50. #pragma mark Class FW_CCyberStream
  51.  
  52. //----------------------------------------------------------------------------------------
  53. // FW_CCyberStream Globals
  54. //----------------------------------------------------------------------------------------
  55.  
  56. const short FW_kCyberStreamDone = (kCDErrorOccurred | kCDDownloadComplete | kCDAbortComplete);
  57.  
  58. //----------------------------------------------------------------------------------------
  59. // FW_CCyberStream Runtime Information
  60. //----------------------------------------------------------------------------------------
  61.  
  62. FW_DEFINE_AUTO (FW_CCyberStream)
  63.  
  64. //----------------------------------------------------------------------------------------
  65. // FW_CCyberStream::Assign
  66. //----------------------------------------------------------------------------------------
  67.  
  68. void FW_CCyberStream::Assign (CyberStream* cs)
  69. {
  70.     FW_SOMEnvironment ev;
  71.     
  72.     if (fStream) {
  73.         // Is it deletable or must it be aborted?
  74.         short status = fStream->GetStreamStatus(ev);
  75.         if (!(status & FW_kCyberStreamDone)) {
  76.             fStream->Abort (ev);
  77.             do {
  78.                 ::SystemTask();
  79.                 status = fStream->GetStreamStatus(ev);
  80.             }
  81.             while (!(status & FW_kCyberStreamDone));
  82.         }
  83.         delete fStream;
  84.     }
  85.     
  86.     fStream = cs;
  87. }
  88.  
  89. //========================================================================================
  90. // Class FW_CCyberBuffer
  91. //========================================================================================
  92. #pragma mark Class FW_CCyberBuffer
  93.  
  94. //----------------------------------------------------------------------------------------
  95. // FW_CCyberBuffer Runtime Information
  96. //----------------------------------------------------------------------------------------
  97.  
  98. FW_DEFINE_AUTO (FW_CCyberBuffer)
  99.  
  100. //----------------------------------------------------------------------------------------
  101. // FW_CCyberBuffer::FW_CCyberBuffer
  102. //----------------------------------------------------------------------------------------
  103.  
  104. FW_CCyberBuffer::FW_CCyberBuffer (Environment* ev, CyberStream* cs)
  105. :    fStream (cs)
  106. {
  107.     FW_ASSERT (cs);
  108.     cs->GetBuffer (ev, &fBuffer, &fSize);
  109. }
  110.  
  111. //----------------------------------------------------------------------------------------
  112. // FW_CCyberBuffer::~FW_CCyberBuffer
  113. //----------------------------------------------------------------------------------------
  114.  
  115. FW_CCyberBuffer::~FW_CCyberBuffer ()
  116. {
  117.     FW_SOMEnvironment ev;
  118.     
  119.     fStream->ReleaseBuffer (ev, fBuffer);
  120. }
  121.  
  122. //========================================================================================
  123. // Class FW_PCyberSink
  124. //========================================================================================
  125. #pragma mark Class FW_PCyberSink
  126.  
  127. //----------------------------------------------------------------------------------------
  128. // FW_PCyberSink RunTime Info
  129. //----------------------------------------------------------------------------------------
  130.  
  131. FW_DEFINE_AUTO_TEMPLATE(FW_TSOMPtr, FW_OCyberSink)
  132.  
  133. #if FW_USE_TEMPLATE_PRAGMAS
  134. #pragma template_access public
  135. #pragma template FW_TSOMPtr<FW_OCyberSink>
  136. #endif
  137.  
  138. #if FW_ANSI_TEMPLATE_INSTANTIATION
  139. template class FW_TSOMPtr<FW_OCyberSink>;
  140. #endif
  141.  
  142. //----------------------------------------------------------------------------------------
  143. // FW_PCyberSink::FW_PCyberSink
  144. //----------------------------------------------------------------------------------------
  145.  
  146. FW_PCyberSink::FW_PCyberSink (Environment* ev, CyberStream* cs)
  147. :    FW_TSOMPtr<FW_OCyberSink> (ev, new FW_OCyberSink)
  148. {
  149.     GetRep()->InitFromStream (ev, cs);
  150. }
  151.  
  152. //----------------------------------------------------------------------------------------
  153. // FW_PCyberSink::~FW_PCyberSink
  154. //----------------------------------------------------------------------------------------
  155.  
  156. FW_PCyberSink::~FW_PCyberSink ()
  157. {
  158. }
  159.  
  160.