(* Copyright 2010 Gerd Stolpmann This file is part of Plasma, a distributed filesystem and a map/reduce computation framework. Unless you have a written license agreement with the copyright holder (Gerd Stolpmann), the following terms apply: Plasma 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, either version 3 of the License, or (at your option) any later version. Plasma 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 Foobar. If not, see <http://www.gnu.org/licenses/>. *) (* $Id: dn_store.mli 276 2010-10-25 18:51:27Z gerd $ *) class type dn_store_config = object method dn_directory : string (** The directory containing the store. There are two files: - config: first line contains the identity string. Second line contains the block size - data: one big file with the data blocks *) method dn_blocksize : int (** The blocksize. This value is used for new stores, and only existing stores can be opened that have the same blocksize *) end val init_store : dn_store_config -> string -> int64 -> unit (** [init_dn_store config identity size]: Initializes the store. The directory must already exist. The files [config] and [data] must not exist. *) type dn_store val open_store : dn_store_config -> dn_store (** Opens the store *) val close_store : dn_store -> unit (** Closes the store *) val get_identity : dn_store -> string (** Returns the identity string *) val get_blocksize : dn_store -> int (** Returns the block size *) val get_size : dn_store -> int64 (** Returns the number of blocks *) val read_block : dn_store -> int64 -> int -> Netsys_mem.memory -> int -> int -> unit (** [read_block st block blockpos mem mpos len]: Reads the bytes [blockpos] to [blockpos+len-1] from [block] into the range [mpos] to [mpos+len-1] of [mem]. *) val write_block : dn_store -> int64 -> Netsys_mem.memory -> int -> unit (** [write_block st block blockpos mem mpos]: Writes a complete block out. The block data are in [mem] from byte position [mpos] to [mpos+blocksize-1]. The data is written into [block]. *) val will_read_block : dn_store -> int64 -> unit (** [will_read_block st block]: announces that this block will be read in the near future *) val sync : dn_store -> unit (** Syncs the store to disk *)