gecko-dev/lib/layout/fsfile.h

203 строки
6.8 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef FSFILE_H
#define FSFILE_H
#ifdef EDITOR
#include "xp.h"
#include "xp_file.h"
#include "streams.h"
#include "bits.h" // mac seems to need it for garray.h to work. hardts
#include "garray.h"
// Same as TXP_GrowableArray_pChar
Declare_GrowableArray(char,char*) // TXP_GrowableArray_char
Declare_GrowableArray(CStreamOutFile,CStreamOutFile *) // TXP_GrowableArray_CStreamOutFile
class CFileBackup;
Declare_GrowableArray(CFileBackup,CFileBackup *) // TXP_GrowableArray_CFileBackup
//-----------------------------------------------------------------------
// File based version of ITapeFileSystem
//-----------------------------------------------------------------------
class CTapeFSFile: public ITapeFileSystem {
public:
// Give the directory where everything will be saved.
CTapeFSFile(char *pDestPathURL,char *pDestURL);
virtual ~CTapeFSFile();
virtual intn GetType();
virtual void SetSourceBaseURL( char* pURL );
// See ITapeFileSystem::AddFile().
virtual intn AddFile( char* pURL, char *pMIMEType, int16 iDocCharSetID );
virtual intn GetNumFiles() {return m_srcURLs.Size();}
// Simply returns the URL given in AddFile(). Allocated with XP_STRDUP().
virtual char* GetSourceURL(intn iFileIndex);
virtual char* GetDestAbsURL();
// iFileIndex must be in {0...GetNumFiles()-1}
// Returns URL relative to document, i.e. just the stripped local file name.
virtual char* GetDestURL( intn iFileIndex );
virtual char* GetHumanName( intn iFileIndex ) {return GetDestURL(iFileIndex);}
virtual char* GetDestPathURL();
virtual XP_Bool IsLocalPersistentFile(intn iFileIndex);
virtual XP_Bool FileExists(intn iFileIndex);
// Save old file first.
virtual IStreamOut *OpenStream( intn iFileIndex );
virtual void CloseStream( intn iFileIndex );
virtual void Complete( XP_Bool bSuccess,
EDT_ITapeFileSystemComplete *complete, void *pArg );
void CopyURLInfo(intn iFileIndex, const URL_Struct *pURL);
protected:
// Can be NULL.
char *m_pSrcBaseURL;
// These are absolute URLs.
TXP_GrowableArray_char m_srcURLs;
// All dest filenames relative to pDestPathURL, which is a directory.
char *m_pDestPathURL;
// The destination filename for the root HTML document. Should be file:// url.
char *m_pDestURL;
// relative filenames
TXP_GrowableArray_char m_destFilenames;
TXP_GrowableArray_CStreamOutFile m_streamOuts;
TXP_GrowableArray_CFileBackup m_fileBackups;
};
//-----------------------------------------------------------------------
// HTTP/FTP publish based version of ITapeFileSystem
// Similar to CTapeFSFile because it writes to temporary files,
// then publishes.
//-----------------------------------------------------------------------
class CTapeFSPublish: public ITapeFileSystem {
public:
// Important: If pRemoteURL is a directory, it must end with a slash.
// pUsername and pPassword may be NULL.
CTapeFSPublish(MWContext *, char *pRemoteURL, char *pUsername, char *pPassword,
char *pTempDir); // where to put temp files, in xpURL format, ends in slash.
virtual ~CTapeFSPublish();
virtual intn GetType();
virtual void SetSourceBaseURL( char* pURL );
// See ITapeFileSystem::AddFile().
virtual intn AddFile( char* pURL, char *pMIMEType, int16 iDocCharSetID );
virtual intn GetNumFiles() {return m_srcURLs.Size();}
// Simply returns the URL given in AddFile(). Allocated with XP_STRDUP().
virtual char* GetSourceURL(intn iFileIndex);
virtual char* GetDestAbsURL();
char *GetUsername();
char *GetPassword();
// iFileIndex must be in {0...GetNumFiles()-1}
// Returns URL relative to document, i.e. just the stripped local file name.
virtual char* GetDestURL( intn iFileIndex );
virtual char* GetHumanName( intn iFileIndex ) {return GetDestURL(iFileIndex);}
// Returns the directory on the remote server (with trailing slash) where the document will
// be published. Does not contain username or password info.
// E.g. http://the_machine/the_directory/ not http://username:password@the_machine/the_directory/
virtual char* GetDestPathURL();
virtual XP_Bool IsLocalPersistentFile(intn iFileIndex);
virtual XP_Bool FileExists(intn /* iFileIndex */ ) {return FALSE;}
// Save old file first.
virtual IStreamOut *OpenStream( intn iFileIndex );
virtual void CloseStream( intn iFileIndex );
// Calls Net_PublishFiles().
virtual void Complete( XP_Bool bSuccess,
EDT_ITapeFileSystemComplete *pfComplete, void *pArg );
XP_Bool Verify() {return m_iVerifier == iVerifierKey;}
void CopyURLInfo(intn iFileIndex, const URL_Struct *pURL);
public:
// These are just here to pass data to edt_CTapeFSExit().
EDT_ITapeFileSystemComplete *m_pfComplete;
void *m_pArg;
private:
int32 m_iVerifier;
static int32 iVerifierKey;
// Makes a new url pointing to a file in the same directory as baseURL, baseURL may also be a
// directory, e.g. http://home.netscape.com/
// Uses srcURL to choose the name and returns an absolute URL.
char *makeLocal(char *baseURL, char *srcURL);
// For call to NET_PublishFiles.
MWContext *m_pMWContext;
// Can be NULL.
char *m_pSrcBaseURL;
// These are absolute URLs.
TXP_GrowableArray_char m_srcURLs;
// final location of the HTML file
char *m_pRemoteURL; // {http,ftp}://location
char *m_pUsername;
char *m_pPassword;
// final locations of all the files. Note that element 0 will be a copy of m_pRemoteURL.
// These contain username:password information.
TXP_GrowableArray_char m_remoteURLs;
char *m_pTempDir; // xpURL format.
// Absolute platform specific filenames. The temp files.
TXP_GrowableArray_char m_tempFilenames;
// Streams to write to temp files.
TXP_GrowableArray_CStreamOutFile m_streamOuts;
// TRUE if http, FALSE if ftp
XP_Bool m_bIsHTTP;
};
#endif // EDITOR
#endif