Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cFileCopier.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cFileCopier_H
7 #define _INC_cFileCopier_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "cFile.h"
13 
14 namespace Gray
15 {
17  {
22 
24 
26  virtual cStringA get_ConnectName() const = 0;
27 
28  virtual HRESULT Connect(const FILECHAR_t* pszDevice)
29  {
33  UNREFERENCED_PARAMETER(pszDevice);
34  return S_FALSE; // not needed i guess.
35  }
36  virtual HRESULT RequestFile(const FILECHAR_t* pszSrcName, const FILECHAR_t* pszDestPath, IStreamProgressCallback* pProgress = nullptr, FILE_SIZE_t nOffsetStart = 0, FILE_SIZE_t* pnRequestSizeEst = nullptr)
37  {
41  UNREFERENCED_PARAMETER(pszSrcName);
42  UNREFERENCED_PARAMETER(pszDestPath);
43  UNREFERENCED_PARAMETER(pProgress);
44  UNREFERENCED_PARAMETER(nOffsetStart);
45  UNREFERENCED_PARAMETER(pnRequestSizeEst);
46  return E_NOTIMPL;
47  }
48  virtual HRESULT SendFile(const FILECHAR_t* pszSrcPath, const FILECHAR_t* pszDestName, IStreamProgressCallback* pProgress, FILE_SIZE_t nOffsetStart = 0, FILE_SIZE_t nSize = (FILE_SIZE_t)-1)
49  {
54  UNREFERENCED_PARAMETER(pszSrcPath);
55  UNREFERENCED_PARAMETER(pszDestName);
56  UNREFERENCED_PARAMETER(pProgress);
57  UNREFERENCED_PARAMETER(nOffsetStart);
59  return E_NOTIMPL;
60  }
61  virtual HRESULT SendAttr(const FILECHAR_t* pszDestName, cTimeFile timeChanged)
62  {
65  UNREFERENCED_PARAMETER(pszDestName);
66  UNREFERENCED_PARAMETER(timeChanged);
67  return E_NOTIMPL;
68  }
69  };
70 
72  {
75 
76  public:
78 
79  protected:
80  cStringF makeFilePath(const FILECHAR_t* pszFileName) const
81  {
82  return cFilePath::CombineFilePathX(m_sServerRoot, pszFileName);
83  }
84 
85  public:
86  virtual cStringA get_ConnectName() const override
87  {
89  return "File";
90  }
91  virtual HRESULT Connect(const FILECHAR_t* pszServerRoot) override
92  {
94  m_sServerRoot = pszServerRoot;
95  return S_OK;
96  }
97  virtual HRESULT RequestFile(const FILECHAR_t* pszSrcName, const FILECHAR_t* pszDestPath, IStreamProgressCallback* pProgress, FILE_SIZE_t nOffsetStart, FILE_SIZE_t* pnRequestSizeEst) override;
98  virtual HRESULT SendFile(const FILECHAR_t* pszSrcPath, const FILECHAR_t* pszDestName, IStreamProgressCallback* pProgress, FILE_SIZE_t nOffsetStart, FILE_SIZE_t nSize) override;
99  virtual HRESULT SendAttr(const FILECHAR_t* pszDestName, cTimeFile timeChanged) override;
100 
101 
102 #if defined(_WIN32) && ! defined(UNDER_CE)
103  static DWORD CALLBACK onCopyProgressCallback(LARGE_INTEGER TotalFileSize,
104  LARGE_INTEGER TotalBytesTransferred,
105  LARGE_INTEGER StreamSize,
106  LARGE_INTEGER StreamBytesTransferred,
107  DWORD dwStreamNumber,
108  DWORD dwCallbackReason, // CALLBACK_CHUNK_FINISHED or CALLBACK_STREAM_SWITCH
109  HANDLE hSourceFile,
110  HANDLE hDestinationFile,
111  void* lpData);
112 #endif
113 
114  static HRESULT GRAYCALL CopyFileStream(cStreamInput& stmIn, const FILECHAR_t* pszDstFileName, bool bFailIfExists = false, IStreamProgressCallback* pProgress = nullptr);
115 
116  static HRESULT GRAYCALL CopyFileX(const FILECHAR_t* pszExistingName, const FILECHAR_t* pszNewName, IStreamProgressCallback* pProgress = nullptr, bool bFailIfExists = false);
117  static HRESULT GRAYCALL RenamePath(const FILECHAR_t* pszOldName, const FILECHAR_t* pszNewName, IStreamProgressCallback* pProgress = nullptr);
118 
119  };
120 }
121 
122 #endif
123 
124 
#define IGNORE_WARN_ABSTRACT(c)
Definition: GrayCore.h:81
#define GRAYCORE_LINK
Definition: GrayCore.h:47
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define DECLSPEC_NOVTABLE
Definition: SysTypes.h:322
#define UNREFERENCED_PARAMETER(P)
< _WIN32 type thing. get rid of stupid warning.
Definition: SysTypes.h:299
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cFileCopier.h:72
virtual HRESULT Connect(const FILECHAR_t *pszServerRoot) override
Definition: cFileCopier.h:91
cStringF makeFilePath(const FILECHAR_t *pszFileName) const
Definition: cFileCopier.h:80
cStringF m_sServerRoot
Prefix all server side paths with this.
Definition: cFileCopier.h:77
virtual cStringA get_ConnectName() const override
get a debug name for the connection.
Definition: cFileCopier.h:86
static cStringF __stdcall CombineFilePathX(const FILECHAR_t *pszBase, const FILECHAR_t *pszName, FILECHAR_t chSep=k_DirSep)
Definition: cFilePath.cpp:596
Definition: cStream.h:306
Definition: cTimeFile.h:31
< The main namespace for all Core functions.
Definition: GrayCore.cpp:14
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22
UINT64 FILE_SIZE_t
similar to STREAM_POS_t size_t
Definition: cFileStatus.h:31
Definition: cFileCopier.h:17
virtual HRESULT RequestFile(const FILECHAR_t *pszSrcName, const FILECHAR_t *pszDestPath, IStreamProgressCallback *pProgress=nullptr, FILE_SIZE_t nOffsetStart=0, FILE_SIZE_t *pnRequestSizeEst=nullptr)
Definition: cFileCopier.h:36
virtual HRESULT SendFile(const FILECHAR_t *pszSrcPath, const FILECHAR_t *pszDestName, IStreamProgressCallback *pProgress, FILE_SIZE_t nOffsetStart=0, FILE_SIZE_t nSize=(FILE_SIZE_t) -1)
Definition: cFileCopier.h:48
virtual HRESULT Connect(const FILECHAR_t *pszDevice)
Definition: cFileCopier.h:28
virtual HRESULT SendAttr(const FILECHAR_t *pszDestName, cTimeFile timeChanged)
Definition: cFileCopier.h:61
virtual cStringA get_ConnectName() const =0
get a debug name for the connection.
Definition: cStreamProgress.h:168