ftp.nice.ch/pub/next/connectivity/infosystems/Archie.2.18.s.tar.gz#/Archie/tmp.h

This is tmp.h in view mode; [Download] [Up]

#ifndef FTPObject_H
#define FTPObject_H
/* An Object subclass which provides access to remote ftpd servers. In
	its  interactive mode it manages a panel that gives a browser interface
	to the remote ftp file heirarchy similar to the Workspace browser. */

#import <objc/Object.h>
#import <appkit/Application.h>	// NXModalSession declaration
#import <ObjectList.h>		// Sorted List object declaration
#import "InspectorInfo.h"	// Defines InspectorInfo class and InspectorInfoUpdate protocol
#import "FileInspectorInfo.h"	// Defines the InspectorInfo attributes we handle
#import "ftplib.h"		// FTPInfoPtr declaration
#import <mach/cthreads.h>

@class FtpFile, MenuCell;

@interface FTPObject : Object
{
	/* Outlets to the FTP Status panel */
	id statusPanelID;	// The progress Panel
	id hostnameID;		// A TextField for the ftp hostname
	id bytesTransferredID;	// A TextField for the bytes transferred
	id percentID;		// The PercentView for the transfer status
	id msgID;			// A TextField for a status message
	id filenameID;		// A TextField for the filename
	id clockViewID;	// The ClockView for the time

	/* Outlets to the FTP log console panel */
	id logPanelID;		// The Panel object
	id ftpLogID;		// A TextConsole object

	/* General FTP session variables */
	id ftpLoginPanelID;	// A panel for the ftp login info
	id loginHostnameID;	// The hostname TextField
	id loginUsernameID;	// The username TextField
	id loginPasswdID;		// The password TextField
	id visiblePasswdID;	// The visible password Button
	id netrcStringID;		// A string displayed if fields were filled from a .netrc file

	/* Outlets used with the interactive window  */
	id ftpWindowID;	// The interactive ftp Window
	id fileBrowserID;	// The NXBrowser used to display the remote files
	id fileInfoID;		// The file info Form
	id calViewID;		// The CalendarView for the date
	id fileWellID;		// The FileWellView for diplaying the selection
	id statusMsgID;	// The status msg TextField

	/* General instance variables */
	FtpFile *rootDir;			// FtpFile object for the ftpHost's top directory
	ObjectList *orphanDirs;	// FtpFile directories that have been loaded
								//	during link resolution but don't have their
								//	parent in the rootDir heirarchy yet
	List *activePathNodes;		// The List of Files for the currently selected branch
	List *selectionList;		// The List of selected cells in the file browser
	id preferences;			// A reference to the app Prefences object
	const char *ftpHost;		// The current ftp host
	const char *loginDirectory;	// The directory at login
	const char *currentDirectory;	// The current ftp directory
	FTPInfoPtr ftpInfo;		// The info required by the ftplib.c routines
	char *localTransferDir;	// The location for depositing files
	char *currentSubDir;	// The location relative to localTransferDir for
							// 	the current sub directory retrieval
	BOOL isInteractive;	// A flag indicating if this is an interactive session
	NXModalSession *ftpSession;
	struct FileTransferInfo
	{	// File transfer information used by transfer thread
		cthread_t transferThread;	// File transfer thread
		FTPObject *ftpd;			// FTPObject sed by cthread function
		NXStream *fileStream;		// Memory stream the file is transfered to
		long bytesTransferred;		// Transfer byte count
		BOOL abort;		// Has an abort: message been sent to main thread
		BOOL done;		// Is the transfer complete
	} transferInfo;
	/*  Instance variables required by the FTPObject(Inspector) category.
		I need to create a new superclass to implement this properly. */
	id fileInspector;
	id inspectedFile;
	FileInfo *fileInfo;
	int inspectorGroup;
	DirectorySortKey *sortKey;
		// Inspector panel outlets
	id sourceNameID;
	id sourcePathID;
	id fileIconID;
	id sourceHostID;
	id localPathID;
	id sortMatrixID;

}

/*\ ------------- Initialization Methods ------------- \*/
- init;
- initForHost:(const char *) host interactive:(BOOL) interactive;
- initForGeneralLogin;
- initForGeneralLogin:(const char *) hostname;
- free;

/*\ ------------- FTP Session Methods ------------- \*/
- abort: sender;
- doLogin: sender;
- login:(const char *) hostname interactive:(BOOL) interactive;
- login:(const char *) hostname user:(const char *) username
	passwd:(const char *) passwd interactive:(BOOL) interactive;
- logout : sender;
- (NXStream *) retrieveFiles: fileList;
- setTransferDir: sender;
- setLocalTransferDir:(const char *) transferDir;
- (NXStream *) streamForCmd:(const char *) command :(const char *) arg;
- fileFromPath:(const char *) path;
- addOrphanDir:(FtpFile *) ftpDir;
- removeOrphanDir:(const char *) path;

/*\ ------------- FTP Action Methods ------------- \*/
- openInWorkspace: sender;
- retrieve: sender;
- showFTPLog: sender;
- showFTPStatus: sender;

/*\ ------------- File Delegate Methods ------------- \*/
- incSubDirPath:(const char *) newDir;
- decSubDirPath;
- (const char *) createLocalFile: theFile;

/*\ ------------- Browser Delegate Methods ------------- \*/
- (int) browser: sender getNumRowsInColumn:(int) column;
- browser: sender loadCell: cell atRow:(int) row inColumn:(int) column;
- displaySelection: sender;

/*\ ------------- Window Delegate Methods ------------- \*/
- windowWillClose: sender;

/*\ ------------- Menu Update Methods ------------- \*/
- (BOOL) validateCommand:(MenuCell *) menuCell;

@end

/*\ ------ InspectorInfo Protocol & Related Methods ------ \*/
@interface FTPObject(Inspector) <InspectorInfoUpdate>
- (BOOL) updateWithInspectorInfo:(InspectorInfo *) theInfo;
- (BOOL) getInspectorInfo: theInfo;
- inspectorIsActive: inspector;
- inspectObject: theObject msg:(const char *) theMsg;
	// InspectorManager delegate methods & panel object action methods
- groupChanged: sender to: (int) newGroup;
- inspectRevert: sender;
- inspectOK: sender;
- setSortKey: sender;
@end

/*\ ------------- FTPD Category Methods ------------- \*/
@interface Object(FTPDaemon)
- (FTPInfoPtr) ftpOpen:(const char *) hostname textConsole: ftpConsole;
- (FTPInfoPtr) ftpOpenAddress:(struct in_addr *) address
	port:(unsigned short) port textConsole: ftpConsole;
- ftpLogin:(FTPInfoPtr) info user:(char *) user passwd:(char *) passwd;
- (int) ftpSendCmd:(FTPInfoPtr) info cmd:(char *) command arg:(char *) arg;
- (int) ftpPort:(FTPInfoPtr) info;
- (int) ftpOpenDataConn:(FTPInfoPtr) info cmd:(char *) command
	arg:(char *) arg;
- (int) ftpCloseDataConn:(FTPInfoPtr) info;
- (int) ftpReadDataConn:(FTPInfoPtr) info buffer:(char *) buffer
	length:(int) length;
- ftpQuit:(FTPInfoPtr) info;
- ftpClose:(FTPInfoPtr) info;
- (int) ftpAbort:(FTPInfoPtr) info;
- (int) ftpCwd:(FTPInfoPtr) info newDir:(char *) directory;
- (const char *) ftpPwd:(FTPInfoPtr) info;
- (int) ftpType:(FTPInfoPtr) info type:(char *) type;
- (int) ftpReplyCode:(FTPInfoPtr) info;
- ftpError:(FTPInfoPtr) info;
@end

/*\ ------------- Exceptions ------------- \*/
#import "ObjectArchival.h"
enum {eRtnMemoryErr = END_ObjectArchival_EXCEPTIONS, eNoFtpHost, eCWDFailure,
	eOpenFailure, eNoListing, eNoFileEntry, eRetreiveErr, eFileMemoryErr,
	eSaveFileErr, eFTPAbort, END_FTPObject_EXCEPTIONS};

/*\ ------------ Error & Debugging Categories ------------ \*/
#import "Object_AllocNDebug.h"

/* RCS Information:
	$Author: me $;
	$Date: 94/01/08 14:40:26 $;
	$Source: /usr1/me/NeXTSrc/Archie/RCS/FTPObject.h,v $;
	$Revision: 1.1 $;
	$Log:	FTPObject.h,v $
 * Revision 1.1  94/01/08  14:40:26  me
 * Check point of 2.09a version.
 * 
 * Revision 1.3  93/03/29  01:58:44  me
 * Fixed problem that would not allow ftp transfers when we were launched as a service.  Updated to act as the file inspector delegate for the new inspector panel.
 * 
 * Revision 1.2  93/03/02  15:54:32  me
 * Added outlet for visible password button.
 * 
 * Revision 1.1  93/02/23  02:10:37  me
 * Version 2.01a of the project.
 * ;
*/

#endif	// FTPObject_H

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.