//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_