mnesia_corba_session.idl
来自「OTP是开放电信平台的简称」· IDL 代码 · 共 416 行
IDL
416 行
// ``The contents of this file are subject to the Erlang Public License,// Version 1.1, (the "License"); you may not use this file except in// compliance with the License. You should have received a copy of the// Erlang Public License along with this software. If not, it can be// retrieved via the world wide web at http://www.erlang.org/.// // Software distributed under the License is distributed on an "AS IS"// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See// the License for the specific language governing rights and limitations// under the License.// // The Initial Developer of the Original Code is Ericsson Utvecklings AB.// Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings// AB. All Rights Reserved.''// // $Id$////////////////////////////////////////////////////////////////////// Mnesia Session - CORBA/IDL interface to Mnesia//////////////////////////////////////////////////////////////////#include <erlang.idl>// All types are enclosed by the mnesia modulemodule mnesia{ /////////////////////////////////////////////////////////////// // Status - a general type for keeping track of // the outcome of the session related functions. enum Status { // Success codes: ok, // The operation was successful and // the all out parameters except 'reason' // contains valid data. end_of_table, // End of table has been reached. // This return code is only used by // a few functions, such as dirty_slot/4, // dirty_first/3, dirty_next/4 ... // Failure codes: timeout, // This return code is only used by // wait_for_table. error // Miscellaneous error. // Operation did not succeed and the out // parameter 'reason' contains a description // of the error. The other out parameters // contains garbage. // In future releases we will probably expand this enum // with more precise error codes like no_exists, badarg etc. }; // Record - an erlang record, i.e. a tagged tuple with the // following layout: {tab_name, key, attr_1, ... attr_N} typedef erlang::term Record; typedef sequence <Record> Recordlist; // TableName - a name of a table. Note that the character '_' // should be avoided if the table is intended to be used // via the Corba Session. typedef string TableName; typedef sequence <TableName> TableList; // Key - a key of a record typedef erlang::term Key; typedef sequence <Key> KeyList; // Indecies - list of index positions. // In the sample record above, attr_1 has position 3 typedef sequence <long> Indices; // AttrNames - a list of attribute names typedef sequence <string> AttrNames; // RecordName - Type information typedef string RecordName; // Node - an Erlang node, e.g. "name1@host[.org.country]" typedef string Node; typedef sequence <Node> NodeList; // Storage - table storage type enum Storage {ram_copies, disc_copies, disc_only_copies}; // SetOrBag - table type enum SetOrBag {set, bag}; // AccessMode - controls the accessibility of a table enum AccessMode {read_only, read_write}; // Checkpoints - a list of checkpoint names typedef sequence <string> Checkpoints; /////////////////////////////////////////////////////////////// // TableDef - initial specification of a table struct TableDef { SetOrBag type; AccessMode mode; NodeList ram_copies; NodeList disc_copies; NodeList disc_only_copies; Indices index_list; AttrNames attributes; RecordName record_name; }; /////////////////////////////////////////////////////////////// // CheckpointDef - initial specification of a checkpoint struct CheckpointDef { string cpName; TableList max; TableList min; boolean allow_remote; boolean ram_overrides_dump; }; /////////////////////////////////////////////////////////////// // TableInfo - information about a table struct TableInfo { AccessMode mode; AttrNames attributes; long arity; Checkpoints checkpoints; NodeList ram_copies; NodeList disc_copies; NodeList disc_only_copies; Indices indexlist; long load_order; boolean local_content; NodeList master_nodes; long memory; long size; Storage storage_type; SetOrBag type; Node where_to_read; NodeList where_to_write; RecordName record_name; // Not supported: cookie, snmp, subscribers, version, wild_pattern }; /////////////////////////////////////////////////////////////// // SystemInfo - information about the Mnesia system // Some info can always be determined, but // other info is only valid if Mnesia is running. struct SystemInfo { // The following information is always determined by // system_info/2: boolean auto_repair; string backup_module; string event_module; NodeList db_nodes; string debug; string directory; boolean dump_log_load_regulation; long dump_log_time_threshold; boolean dump_log_update_in_place; long dump_log_write_threshold; NodeList extra_db_nodes; boolean is_running; string schema_location; boolean use_dir; // Not supported: log_version, protocol_version, version // The following information is only valid if Mnesia is running. // Check 'is_running' before the info is accessed and regard the // values as undefined if 'is_running' is false. Checkpoints checkpoints; boolean fallback_activated; TableList local_tables; TableList master_node_tables; NodeList running_db_nodes; TableList tables; long transaction_failures; long transaction_commits; long transaction_restarts; long transaction_log_writes; // Not supported: held_locks, lock_queue, communication protocol, // subscribers, transactions }; ///////////////////////////////////////////////////////////////// Most of the following functions returns Status and in case of// an error, the out parameter 'reason' contains the description// of the cause and all other out parameters contains undefined values.//// If the function was successful, 'reason' contains an empty string// and the other out parameters contains valid data. interface corba_session { /////////////////////////////////////////////////////////////// // Dirty access functions Status dirty_write( in TableName tab, in Record object, out string reason); Status dirty_read( in TableName tab, in Key key, out Recordlist result, out string reason); Status dirty_update_counter(in TableName tab, in Key key, in long val, out long newval, out string reason); Status dirty_delete( in TableName tab, in Key key, out string reason); Status dirty_delete_object( in TableName tab, in Record object, out string reason); Status dirty_slot( in TableName tab, in long slot, out Recordlist result, out string reason); Status dirty_first( in TableName tab, out Key next_key, out string reason); Status dirty_next( in TableName tab, in Key key, out Key next_key, out string reason); Status dirty_all_keys( in TableName tab, out KeyList keys, out string reason); Status dirty_match_all( in TableName tab, out Recordlist result, out string reason); Status dirty_index_read( in TableName tab, in Key key, in long pos, out Recordlist result, out string reason); /////////////////////////////////////////////////////////////// // Table management Status create_table( in TableName tab, in TableDef tabDefs, out string reason); Status delete_table( in TableName tab, out string reason); Status add_table_copy( in TableName tab, in Node node, in Storage type, out string reason); Status del_table_copy( in TableName tab, in Node node, out string reason); Status move_table_copy( in TableName tab, in Node from, in Node to, out string reason); Status add_table_index( in TableName tab, in long attrname, out string reason); Status del_table_index( in TableName tab, in long attrname, out string reason); Status change_table_copy_type( in TableName tab, in Node node, in Storage type, out string reason); Status change_table_access_mode(in TableName tab, in AccessMode mode, out string reason); /////////////////////////////////////////////////////////////// // Table load Status wait_for_tables( in TableList tabs, in long timeout, out TableList failed_tabs, out string reason); Status force_load_table( in TableName tab, out string reason); Status change_table_load_order(in TableName tab, in long load_order, out string reason); Status set_master_nodes1( in NodeList nodes, out string reason); Status set_master_nodes2( in TableName tab, in NodeList nodes, out string reason); /////////////////////////////////////////////////////////////// // Database management Status backup1( in string filename, out string reason); Status backup2( in erlang::term opaque, in string modulename, out string reason); Status install_fallback1( in string filename, out string reason); Status install_fallback2( in erlang::term opaque, in string modulename, out string reason); Status uninstall_fallback( out string reason); Status dump_log( out string reason); Status dump_tables( in TableList list, out string reason); Status activate_checkpoint( in CheckpointDef cpdef, out string reason); Status deactivate_checkpoint(in string cpName, out string reason); Status backup_checkpoint1( in string cpName, in string filename, out string reason); Status backup_checkpoint2( in string cpName, in erlang::term opaque, in string modulename, out string reason); /////////////////////////////////////////////////////////////// // Miscellaneous Status load_textfile( in string filename, out string reason); Status dump_to_textfile(in string filename, out string reason); Status table_info( in TableName tab, out TableInfo info, out string reason); Status system_info( out SystemInfo info, out string reason); }; //////////////////////////////////////////////////////////////////// The corba_connector object registers itself in the local name// service at startup of the Mnesia Session application interface corba_connector { // Connects to Mnesia on the same Erlang node as the // Corba Connector object, creates a Corba Session object // and returns its object key. corba_session connect(); // Disconnects from Mnesia and disposes // the Corba Session object void disconnect(in corba_session object_key); };};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?