diff options
Diffstat (limited to 'lib/cosFileTransfer/src/CosFileTransfer.idl')
-rw-r--r-- | lib/cosFileTransfer/src/CosFileTransfer.idl | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/lib/cosFileTransfer/src/CosFileTransfer.idl b/lib/cosFileTransfer/src/CosFileTransfer.idl new file mode 100644 index 0000000000..2eb310478a --- /dev/null +++ b/lib/cosFileTransfer/src/CosFileTransfer.idl @@ -0,0 +1,157 @@ +//File: CosFileTransfer.idl +#ifndef _COS_FILE_TRANSFER_IDL_ +#define _COS_FILE_TRANSFER_IDL_ + +#include <CosProperty.idl> +#pragma prefix "omg.org" + +module CosFileTransfer { + + typedef string Istring; + typedef Istring ProtocolAddress; + typedef long ContentType; + + const ContentType FTAM_1 = 1; + const ContentType FTAM_2 = 2; + const ContentType FTAM_3 = 3; + const ContentType FTAM_4 = 4; + const ContentType FTAM_5 = 5; + const ContentType NBS_9 = 6; + const ContentType INTAP_1 = 7; + + exception CommandNotImplementedException { Istring reason; }; + exception SessionException { Istring reason; }; + exception TransferException { Istring reason; }; + exception FileNotFoundException { Istring reason; }; + exception RequestFailureException { Istring reason; }; + exception IllegalOperationException { Istring reason; }; + + interface VirtualFileSystem; + + struct AccessLevel { + boolean read; + boolean insert; + boolean replace; + boolean extend; + boolean erase; + boolean read_attr; + boolean change_attr; + boolean delete; + }; + + typedef sequence<ProtocolAddress> ProtocolAddressList; + + struct ProtocolSupport { + Istring protocol_name; + ProtocolAddressList addresses; + }; + + typedef sequence<ProtocolSupport> SupportedProtocolAddresses; + + interface Directory; + interface FileTransferSession; + + typedef Istring FileName; + typedef sequence<FileName> FileNameList; + + interface File:CosPropertyService::PropertySetDef { + + readonly attribute FileName name; + readonly attribute FileNameList complete_file_name; + readonly attribute Directory parent; + readonly attribute FileTransferSession associated_session; + + }; + + enum FileType {nfile, ndirectory}; + + struct FileWrapper { + File the_file; + FileType file_type; + }; + + typedef sequence<FileWrapper> FileList; + + interface FileIterator; + interface Directory : File { + + void list(in unsigned long how_many, out FileList fl, out FileIterator fi); + + }; + + interface FileIterator { + + boolean next_one(out FileWrapper f); + boolean next_n(in unsigned long how_many, out FileList fl); + + void destroy(); + }; + + interface FileTransferSession { + + readonly attribute SupportedProtocolAddresses protocols_supported; + + void set_directory(in Directory new_directory) + raises(SessionException, FileNotFoundException, RequestFailureException, + IllegalOperationException); + + File create_file(in FileNameList name) + raises(SessionException, FileNotFoundException, RequestFailureException, + IllegalOperationException); + + Directory create_directory(in FileNameList name) + raises(SessionException, FileNotFoundException, RequestFailureException, + IllegalOperationException); + + FileWrapper get_file(in FileNameList complete_file_name) + raises(SessionException, FileNotFoundException, RequestFailureException, + IllegalOperationException); + + void delete(in File file) + raises(SessionException, FileNotFoundException, RequestFailureException, + IllegalOperationException); + + void transfer(in File src, in File dest) + raises(SessionException, TransferException, FileNotFoundException, + RequestFailureException, IllegalOperationException); + + void append(in File src, in File dest) + raises(CommandNotImplementedException, SessionException, TransferException, + FileNotFoundException, RequestFailureException, + IllegalOperationException); + + void insert(in File src, in File dest, in long offset) + raises(CommandNotImplementedException, SessionException, TransferException, + FileNotFoundException, RequestFailureException, + IllegalOperationException); + + void logout(); + + // WARNING!!! + // Theses are Orber specific operations and may only be used internally!! + // Maybe removed, altered and changed in any way without warning!! + Directory oe_orber_create_directory_current() + raises(SessionException, FileNotFoundException, IllegalOperationException); + FileList oe_orber_get_content(in FileNameList complete_file_name, + in Directory parent); + long oe_orber_count_children(in FileNameList complete_file_name); + + }; + + interface VirtualFileSystem { + + enum NativeFileSystemType { FTAM, FTP, NATIVE }; + + readonly attribute NativeFileSystemType file_system_type; + + typedef sequence<ContentType> ContentList; + + readonly attribute ContentList supported_content_types; + + FileTransferSession login(in Istring username, in Istring password, + in Istring account, out Directory root) + raises(SessionException, FileNotFoundException, IllegalOperationException); + }; +}; + +#endif //_COS_FILE_TRANSFER_IDL_ |