view src/objstore/include/nomad/objstore_impl.h @ 103:b397469f53d2

objstore: rename "struct objstore" to "struct objstore_vol" The current structure keeps track of exactly one volume yet it uses the most generic and high-level name. In preparation of making volume groups (that will contain zero or more volumes) let's rename the volume's structure to something that more accurately reflects its purpose. Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net> Signed-off-by: Steve Dougherty <steve@asksteved.com>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Sat, 17 Oct 2015 15:27:29 -0400
parents e76e3ee73fb5
children 40b4277fb1e1
line wrap: on
line source

/*
 * Copyright (c) 2015 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

#ifndef __NOMAD_OBJSTORE_IMPL_H
#define __NOMAD_OBJSTORE_IMPL_H

#include <nomad/objstore.h>

struct vol_ops {
	int (*create)(struct objstore_vol *store);
	int (*load)(struct objstore_vol *store);
	int (*getroot)(struct objstore_vol *store, struct nobjhndl *hndl);
};

struct obj_ops {
	int (*getversions)();

	/* open objects must be closed */
	int (*open)();		/* open an object */
	int (*close)();		/* close an object */

	/* created/cloned objects must be committed/aborted */
	int (*create)();	/* create a new temp object */
	int (*clone)();		/*
				 * create a new temp obj as a copy of
				 * existing obj
				 */
	int (*commit)();	/* make temp object live */
	int (*abort)();		/* delete temp object */

	int (*getattr)(struct objstore_vol *store, const struct nobjhndl *hndl,
		       struct nattr *attr);
	int (*setattr)();	/* set attributes of an object */
	ssize_t (*read)();	/* read portion of an object */
	ssize_t (*write)();	/* write portion of an object */
};

struct objstore_vol_def {
	const char *name;
	const struct vol_ops *vol_ops;
	const struct obj_ops *obj_ops;
};

#endif