⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chunk.h

📁 这是基于C语言开发的分布式搜索源代码
💻 H
字号:
#include <stdio.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <stdlib.h>#include <locale.h>#include <fcntl.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/time.h>#include <sys/resource.h>#include <sys/socket.h>#include <sys/mman.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include "buffer.h"#ifndef _CHUNK_H#define _CHUNK_H#ifdef __cplusplusextern "C" {#endif/* CHUNK */#ifndef _TYPEDEF_CHUNK#define _TYPEDEF_CHUNK#define MEM_CHUNK   0x02#define FILE_CHUNK  0x04#define ALL_CHUNK  (MEM_CHUNK | FILE_CHUNK)#define FILE_NAME_LIMIT 255 typedef struct _CHUNK{        /* property */        int id;        int type;        BUFFER *buf;        struct {                int   fd ;                char  name[FILE_NAME_LIMIT + 1];        } file;        uint64_t offset;        uint64_t len;	pthread_mutex_t mutex;        /* method */        int (*set)(struct _CHUNK *, int , int , char *, uint64_t, uint64_t);        int (*append)(struct _CHUNK *, void *, size_t);         int (*fill)(struct _CHUNK *, void *, size_t);         int (*send)(struct _CHUNK *, int , size_t );        void (*reset)(struct _CHUNK *);         void (*clean)(struct _CHUNK **); }CHUNK;#define CHUNK_SIZE sizeof(CHUNK)/* Initialize struct CHUNK */CHUNK *chunk_init();#define CHUNK_VIEW(chunk) \{ \	if(chunk) \	{ \		fprintf(stdout, "chunk:%08X\n" \		"chunk->id:%d\n" \		"chunk->type:%02X\n" \		"chunk->buf:%08X\n" \		"chunk->buf->data:%08X\n" \		"chunk->buf->size:%u\n" \		"chunk->file.fd:%d\n" \		"chunk->file.name:%s\n" \		"chunk->offset:%llu\n" \		"chunk->len:%llu\n\n", \		chunk, chunk->id, chunk->type, \		chunk->buf, chunk->buf->data, chunk->buf->size, \		chunk->file.fd, chunk->file.name, \		chunk->offset, chunk->len \		); \	} \}#endif/* Initialzie CHUNK */int chk_set( CHUNK *, int , int, char *, uint64_t, uint64_t);/* append data to CHUNK BUFFER */int chk_append(CHUNK *, void *, size_t );/* fill CHUNK with data */int chk_fill(CHUNK *, void *, size_t);/* write CHUNK data to fd */int chk_send(CHUNK *, int , size_t );/* reset CHUNK */void chk_reset(CHUNK *);/* clean CHUNK */void chk_clean(CHUNK **);#ifdef __cplusplus }#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -