/* $Id$ * CORBA ORBit IDL definition of sandbox intra-captive interface * Copyright (C) 2002-2003 Jan Kratochvil * * 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; exactly version 2 of June 1991 is required * * 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 */ module Captive { typedef sequence Bytes; typedef unsigned long GnomeVFSResult; /* enum */ exception GnomeVFSResultException { GnomeVFSResult gnome_vfs_result; }; typedef unsigned long GIOStatus; /* enum */ exception GIOStatusException { GIOStatus g_io_status; }; typedef unsigned long GLogLevelFlags; /* enum mask */ struct GLogMessage { /* accepted by 'GLogFunc' */ /* string log_domain; always "Captive" */ GLogLevelFlags log_level; string message; }; exception GLogMessageFatal { GLogMessage g_log_message; }; interface GLogFunc { /* Do not use 'oneway' as we would loose logging order coherency. */ void g_log_func(in GLogMessage g_log_message); }; typedef unsigned long GnomeVFSFileType; /* enum */ typedef unsigned short GnomeVFSFilePermissions; typedef unsigned long guint; typedef unsigned long long time_t; typedef unsigned long long GnomeVFSFileSize; typedef unsigned long long GnomeVFSFileFlags; typedef long long GnomeVFSFileOffset; typedef unsigned long GnomeVFSSeekPosition; /* enum */ typedef unsigned long GnomeVFSSetFileInfoMask; /* enum mask */ typedef unsigned long long GnomeVFSOpenMode; /* enum mask */ struct CaptiveFileInfoObject { string name; /* Base name of the file (no path). */ /* File type (i.e. regular, directory, block device...). */ GnomeVFSFileType type; boolean type_valid; GnomeVFSFilePermissions permissions; /* File permissions. */ boolean permissions_valid; GnomeVFSFileSize size; /* Size in bytes. */ boolean size_valid; GnomeVFSFileSize block_count; /* Size measured in units of 512-byte blocks. */ boolean block_count_valid; /* Access, modification and change times. */ time_t atime; /* not valid if ==(time_t)0 */ guint atime_nsec; time_t mtime; /* not valid if ==(time_t)0 */ guint mtime_nsec; time_t ctime; /* not valid if ==(time_t)0 */ guint ctime_nsec; GnomeVFSFileFlags flags; boolean flags_valid; }; typedef long long GInt64; typedef unsigned long long GUInt64; typedef unsigned long GSeekType; /* enum */ typedef unsigned long GSize; interface CaptiveIOChannel { void read(out Bytes buffer,in GSize count) raises (GIOStatusException,GLogMessageFatal); void write(in Bytes buffer,out GSize bytes_written_return) raises (GIOStatusException,GLogMessageFatal); void seek(in GInt64 offset,in GSeekType type) raises (GIOStatusException,GLogMessageFatal); GUInt64 size() raises (GLogMessageFatal); }; typedef unsigned long CaptiveOptionRwmode; /* enum */ typedef unsigned long CaptiveOptionMedia; /* enum */ struct CaptiveOptionsModule { string pathname_utf8; Bytes data; }; typedef sequence CaptiveOptionsModuleList; struct CaptiveOptions { GLogFunc g_log_func; CaptiveOptionsModule filesystem; CaptiveOptionRwmode rwmode; CaptiveOptionMedia media; boolean debug_messages; CaptiveIOChannel image_iochannel; CaptiveOptionsModuleList load_module; }; typedef unsigned long GUInt32; struct CaptiveVfsVolumeInfo { GUInt32 block_size; GUInt64 bytes; GUInt64 bytes_free; GUInt64 bytes_available; }; interface Directory { void read(out CaptiveFileInfoObject file_info) raises (GnomeVFSResultException,GLogMessageFatal); void remove() raises (GnomeVFSResultException,GLogMessageFatal); void shutdown(); }; interface File { void read(out Bytes buffer,in GnomeVFSFileSize num_bytes) raises (GnomeVFSResultException,GLogMessageFatal); void write(in Bytes buffer,out GnomeVFSFileSize bytes_written_return) raises (GnomeVFSResultException,GLogMessageFatal); void seek(in GnomeVFSSeekPosition whence,in GnomeVFSFileOffset offset) raises (GnomeVFSResultException,GLogMessageFatal); void tell(out GnomeVFSFileOffset offset_return) raises (GnomeVFSResultException,GLogMessageFatal); void remove() raises (GnomeVFSResultException,GLogMessageFatal); void file_info_get(out CaptiveFileInfoObject file_info) raises (GnomeVFSResultException,GLogMessageFatal); void file_info_set(in CaptiveFileInfoObject file_info,in GnomeVFSSetFileInfoMask mask) raises (GnomeVFSResultException,GLogMessageFatal); void truncate(in GnomeVFSFileSize file_size) raises (GnomeVFSResultException,GLogMessageFatal); void move(in string pathname_new,in boolean force_replace) raises (GnomeVFSResultException,GLogMessageFatal); void shutdown(); }; interface Vfs { void init(in CaptiveOptions options); void shutdown(); Directory directory_new_open(in string pathname) raises (GnomeVFSResultException,GLogMessageFatal); Directory directory_new_make(in string pathname,in GnomeVFSFilePermissions perm) raises (GnomeVFSResultException,GLogMessageFatal); File file_new_open(in string pathname,in GnomeVFSOpenMode mode) raises (GnomeVFSResultException,GLogMessageFatal); File file_new_create(in string pathname,in GnomeVFSOpenMode mode,in boolean exclusive,in unsigned long perm) raises (GnomeVFSResultException,GLogMessageFatal); void volume_info_get(out CaptiveVfsVolumeInfo volume_info) raises (GnomeVFSResultException,GLogMessageFatal); }; };