Net2/usr/src/contrib/isode/others/rfa/rfa.ry

--
-- RFA - Remote File Access
--
-- Access and Management for a partial file system tree that exists
-- at two side either as master files or slave files
--
-- rfa.ry : Definition of Remote Operations that are used by RFA
--
--
-- Contributed by Oliver Wenzel, GMD Berlin, 1990
--
--  $Header: /f/osi/others/rfa/RCS/rfa.ry,v 7.3 91/02/22 09:28:16 mrose Interim $
-- 
--  $Log:	rfa.ry,v $
-- Revision 7.3  91/02/22  09:28:16  mrose
-- Interim 6.8
-- 
-- Revision 7.2  91/01/14  13:54:51  mrose
-- update
-- 
--  Revision 1.1  91/01/04  16:10:29  ow
--  Initial revision
--
-- 
-- 
--                               NOTICE
-- 
--     Acquisition, use, and distribution of this module and related
--     materials are subject to the restrictions of a license agreement.
--     Consult the Preface in the User's Manual for the full terms of
--     this agreement.
-- 


RFA DEFINITIONS ::=

BEGIN

-- operations


getFileData  OPERATION
    ARGUMENT	GetFileDataArg
    RESULT	GetFileDataRes
    ERRORS	{ miscError, fileAccessError }
    ::=	    1

GetFileDataArg ::= SEQUENCE {
    filename		FileName,
    slaveVersion	INTEGER
}

GetFileDataRes ::= SEQUENCE {
    mode	INTEGER {
			actual(0),  -- local version is still valid
			data(1),
			zero(2),
			compressed(3) },
    fileinfo	FileInfo,
    data	OCTETSTRING OPTIONAL
}

    
requestMaster OPERATION
    ARGUMENT	RequestMasterArg
    RESULT	RequestMasterRes
    ERRORS	{ miscError, statusError, fileAccessError }
    ::=	    2

RequestMasterArg ::= SEQUENCE {
    filename		FileName,
    slaveVersion	INTEGER
}

RequestMasterRes ::= INTEGER  -- modification time



listDir	OPERATION
    ARGUMENT	FileName
    RESULT 	FileInfoList
    ERRORS	{ miscError, fileAccessError }
    ::=	    3

FileName ::= IA5String

FileInfo ::= SEQUENCE {
    name	IA5String,
    mode	INTEGER,
    user	IA5String,
    group	IA5String,
    size	INTEGER,
    accTime	INTEGER,
    modTime	INTEGER,
    lnkName 	[0] IA5String OPTIONAL,
    status	INTEGER {
			unregistered(0),
			master(1),
			masterLocked(2),
			slave(3) },
    lockedBy	[1] IA5String OPTIONAL,
    lockedSince INTEGER 
}

FileInfoList ::= SEQUENCE OF FileInfo



syncTime	OPERATION
    ARGUMENT	SyncTimeArg
    RESULT 	SyncTimeRes
    ERRORS	{ miscError }
    ::=	    4

SyncTimeArg ::= SEQUENCE {
	role	INTEGER {
			 master(0),
			 slave(1)
		},
	time	INTEGER -- only used when role = master
}

SyncTimeRes ::= SEQUENCE {
	time	INTEGER		-- contains clock of master if role was slave
				-- otherwise the time diff at slave
}


-- errors

miscError ERROR
    PARAMETER Reason
    ::= 0

fileAccessError ERROR
    PARAMETER Reason
    ::= 1

Reason ::= SEQUENCE {
    reason  IA5String
}

statusError ERROR
    PARAMETER	StatusErrorParm
    ::= 2

StatusErrorParm ::= SEQUENCE {
    reason	INTEGER {
		    notMaster (0),
		    locked (1),
		    notRegistered(2),
		    notWritable(3),
		    wrongVersion(4),
		    notRegularFile(5),
		    slaveNewer(6)},
    user    [0] IA5String OPTIONAL,
    since   [1] INTEGER 
}

-- types


Initiate ::= SEQUENCE {
    user	IA5String,
    password	IA5String
}

END