在C语言中为CRUD接口编写搜索功能

时间:2014-11-09 06:59:43

标签: c crud

我在创建自己的文件I / O的CRUD界面上工作。 目前我已经编写了用于打开/创建文件,读取文件,写入文件和删除文件的代码。 我的最后一步是编写一个搜索功能。

该函数传递2个参数,文件描述符,以及从文件开头寻找的位置。

crud接口使用了一个包含对象id,长度,请求类型,标志和返回值的int64_t。以及用于从中读取数据或从中写入数据的空缓冲区。

我不能为我的生活找出如何改变读写开始的位置。

我很乐意提供代码但是很长时间要求你们仔细查看。

如何在不能传递位置变量的情况下实现搜索功能?

编辑: 这是项目描述的片段。这是一个课程项目所以我不需要一个完整的解决方案,只是一些想法让我朝着正确的方向前进。

对象存储/ CRUD接口 对象存储是一种虚拟设备,用于存储可变大小的数据块,称为对象。使用存储的软件以与普通磁盘驱动器非常相似的方式在设备上创建和操作对象(请参阅下面的CRUD接口命令),除了它们操纵对象而不是磁盘块。每个对象由唯一标识由对象存储库分配的整数值引用,称为对象标识符。 您正在构建的对象存储库导出CRUD接口;它支持创建对象, 读取对象,更新对象和删除对象。此外,对象具有不可变的大小;一旦分配,内容可以重复更改,但大小永远不会改变。因此,任何需要改变对象大小的操作都必须通过执行 删除旧对象并创建新对象。 该接口包含一个函数调用,它接受两个参数,一个64位CRUD总线请求值 (使用类型CrudReuqest)和指向可变大小缓冲区的指针; CrudResponse crud_bus_request(CrudRequest request,void * buf); CRUD命令如下:

CRUD_INIT - 此命令初始化对象存储并准备它以用于文件操作。这个 请求必须在任何其他人之前调用。

CRUD_CREATE - 此命令创建一个对象,其长度在定义的缓冲区请求值中定义 下面。传递给函数的缓冲区应包含该长度的数据。请注意,CRUD接口将传递的数据复制到内部结构中,因此您负责管理传递给它的任何缓冲区。如果成功,操作将在响应对象值中返回新的对象ID。

CRUD_READ - 此命令从对象库中读取对象(完整地)并复制其内容 在传递缓冲区。长度字段应该设置为传递缓冲区的长度(因为你不知道对象有多大,你应该总是传入一个大小的缓冲区 CRUD_MAX_OBJECT_SIZE)。 返回的响应值表示读取的对象的长度。

CRUD_UPDATE - 此命令将更新对象的内容。注意对象大小CAN 从不改变。因此,除非发送的缓冲区与原始对象的大小相同,否则调用将失败 创建

CRUD_DELETE - 此命令删除对象,使其无法供以后访问。请注意 对象的对象ID可以在以后重用。

如上所述,int64_t由对象id,请求类型,文件长度,标志和返回值组成。

搜索功能如下所示

int32_t crud_seek(int16_t fd, uint32_t loc)
{

}

目前我有一个类似于

的文件信息的结构
typedef struct{
int32_t OID;
int32_t length;
int32_t Position;
int16_t fd;
}CRUD_FILE;

虽然我在结构中有一个位置变量。调用crud接口不允许它。

0 个答案:

没有答案