Source: lib/rfsv16.h


Annotated List
Files
Globals
Hierarchy
Index
/*-*-c++-*-
 * $Id: rfsv16.h,v 1.18 2002/07/14 06:35:33 felfert Exp $
 *
 * This file is part of plptools.
 *
 *  Copyright (C) 1999  Philip Proudman 
 *  Copyright (C) 1999-2001 Fritz Elfert 
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */
#ifndef _RFSV16_H_
#define _RFSV16_H_

#include 

class rfsvfactory;

/**
 * This is the implementation of the @ref rfsv protocol for
 * Psion series 3 (SIBO) variant. You normally never create
 * objects of this class directly. Thus the constructor is
 * private. Use @ref rfsvfactory for creating an instance of
 * @ref rfsv . For a complete documentation, see @ref rfsv .
 */
class rfsv16 : public rfsv {

    /**
     * rfsvfactory may call our constructor.
     */
    friend class rfsvfactory;

public:
    Enum fopen(const u_int32_t, const char * const, u_int32_t &);
    Enum mktemp(u_int32_t &, std::string &);
    Enum fcreatefile(const u_int32_t, const char * const, u_int32_t &);
    Enum freplacefile(const u_int32_t, const char * const, u_int32_t &);
    Enum fclose(const u_int32_t);
    Enum dir(const char * const, PlpDir &);
    Enum fgetmtime(const char * const, PsiTime &);
    Enum fsetmtime(const char * const, const PsiTime);
    Enum fgetattr(const char * const, u_int32_t &);
    Enum fgeteattr(const char * const, PlpDirent &);
    Enum fsetattr(const char * const, const u_int32_t seta, const u_int32_t unseta);
    Enum dircount(const char * const, u_int32_t &);
    Enum devlist(u_int32_t &);
    Enum devinfo(const char, PlpDrive &);
    Enum fread(const u_int32_t, unsigned char * const, const u_int32_t, u_int32_t &);
    Enum fwrite(const u_int32_t, const unsigned char * const, const u_int32_t, u_int32_t &);
    Enum copyFromPsion(const char * const, const char * const, void *, cpCallback_t);
    Enum copyFromPsion(const char *from, int fd, cpCallback_t cb);
    Enum copyToPsion(const char * const, const char * const, void *, cpCallback_t);
    Enum copyOnPsion(const char *, const char *, void *, cpCallback_t);
    Enum fsetsize(const u_int32_t, const u_int32_t);
    Enum fseek(const u_int32_t, const int32_t, const u_int32_t, u_int32_t &);
    Enum mkdir(const char * const);
    Enum rmdir(const char * const);
    Enum rename(const char * const, const char * const);
    Enum remove(const char * const);
    Enum opendir(const u_int32_t, const char * const, rfsvDirhandle &);
    Enum readdir(rfsvDirhandle &, PlpDirent &);
    Enum closedir(rfsvDirhandle &);
    Enum setVolumeName(const char, const char * const);

    u_int32_t opMode(const u_int32_t);
    int getProtocolVersion() { return 3; }

private:
    enum commands {
	FOPEN = 0, // File Open
	FCLOSE = 2, // File Close
	FREAD = 4, // File Read
	FDIRREAD = 6, // Read Directory entries
	FDEVICEREAD = 8, // Device Information
	FWRITE = 10, // File Write
	FSEEK = 12, // File Seek
	FFLUSH = 14, // Flush
	FSETEOF = 16,
	RENAME = 18,
	DELETE = 20,
	FINFO = 22,
	SFSTAT = 24,
	PARSE = 26,
	MKDIR = 28,
	OPENUNIQUE = 30,
	STATUSDEVICE = 32,
	PATHTEST = 34,
	STATUSSYSTEM = 36,
	CHANGEDIR = 38,
	SFDATE = 40,
	RESPONSE = 42
    };

    enum fopen_attrib {
	P_FOPEN = 0x0000, /* Open file */
	P_FCREATE = 0x0001, /* Create file */
	P_FREPLACE = 0x0002, /* Replace file */
	P_FAPPEND = 0x0003, /* Append records */
	P_FUNIQUE = 0x0004, /* Unique file open */
	P_FSTREAM = 0x0000, /* Stream access to a binary file */
	P_FSTREAM_TEXT = 0x0010, /* Stream access to a text file */
	P_FTEXT = 0x0020, /* Record access to a text file */
	P_FDIR = 0x0030, /* Record access to a directory file */
	P_FFORMAT = 0x0040, /* Format a device */
	P_FDEVICE = 0x0050, /* Record access to device name list */
	P_FNODE = 0x0060, /* Record access to node name list */
	P_FUPDATE = 0x0100, /* Read and write access */
	P_FRANDOM = 0x0200, /* Random access */
	P_FSHARE = 0x0400 /* File can be shared */
    };

    enum status_enum {
	P_FAWRITE  = 0x0001, /* can the file be written to? */
	P_FAHIDDEN = 0x0002, /* set if file is hidden */
	P_FASYSTEM = 0x0004, /* set if file is a system file */
	P_FAVOLUME = 0x0008, /* set if the name is a volume name */
	P_FADIR    = 0x0010, /* set if file is a directory file */
	P_FAMOD    = 0x0020, /* has the file been modified? */
	P_FAREAD   = 0x0100, /* can the file be read? */
	P_FAEXEC   = 0x0200, /* is the file executable? */
	P_FASTREAM = 0x0400, /* is the file a byte stream file? */
	P_FATEXT   = 0x0800, /* is it a text file? */
	P_FAMASK   = 0x0f3f  /* All of the above */
    };

    /**
    * Private constructor. Shall be called by
    * rfsvfactory only.
    */
    rfsv16(ppsocket *);

    // Miscellaneous
    Enum fopendir(const char * const, u_int32_t &);
    u_int32_t attr2std(const u_int32_t);
    u_int32_t std2attr(const u_int32_t);

    // Communication
    bool sendCommand(enum commands, bufferStore &);
    Enum getResponse(bufferStore &);
};

#endif

/*
 * Local variables:
 * c-basic-offset: 4
 * End:
 */

Generated by: rrt on drom on Mon Nov 26 16:06:15 2007, using kdoc 2.0a54.