Initial implementation of pin/pin
This commit is contained in:
parent
d9774095d3
commit
ef380f2a69
7 changed files with 101 additions and 2 deletions
2
Makefile
2
Makefile
|
@ -12,6 +12,7 @@ all:
|
||||||
cd merkledag; make all;
|
cd merkledag; make all;
|
||||||
cd multibase; make all;
|
cd multibase; make all;
|
||||||
cd os; make all;
|
cd os; make all;
|
||||||
|
cd pin; make all;
|
||||||
cd repo; make all;
|
cd repo; make all;
|
||||||
cd flatfs; make all;
|
cd flatfs; make all;
|
||||||
cd datastore; make all;
|
cd datastore; make all;
|
||||||
|
@ -30,6 +31,7 @@ clean:
|
||||||
cd merkledag; make clean;
|
cd merkledag; make clean;
|
||||||
cd multibase; make clean;
|
cd multibase; make clean;
|
||||||
cd os; make clean;
|
cd os; make clean;
|
||||||
|
cd pin; make clean;
|
||||||
cd repo; make clean;
|
cd repo; make clean;
|
||||||
cd flatfs; make clean;
|
cd flatfs; make clean;
|
||||||
cd datastore; make clean;
|
cd datastore; make clean;
|
||||||
|
|
32
include/ipfs/pin/pin.h
Normal file
32
include/ipfs/pin/pin.h
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#ifndef IPFS_PIN_H
|
||||||
|
#define IPFS_PIN_H
|
||||||
|
|
||||||
|
#include "ipfs/util/errs.h"
|
||||||
|
|
||||||
|
#ifdef IPFS_PIN_C
|
||||||
|
const char *ipfs_pin_linkmap[] = {
|
||||||
|
"recursive",
|
||||||
|
"direct",
|
||||||
|
"indirect",
|
||||||
|
"internal",
|
||||||
|
"not pinned",
|
||||||
|
"any",
|
||||||
|
"all"
|
||||||
|
};
|
||||||
|
#else // IPFS_PIN_C
|
||||||
|
extern const char *ipfs_pin_map[];
|
||||||
|
#endif // IPFS_PIN_C
|
||||||
|
enum {
|
||||||
|
Recursive = 0,
|
||||||
|
Direct,
|
||||||
|
Indirect,
|
||||||
|
Internal,
|
||||||
|
NotPinned,
|
||||||
|
Any,
|
||||||
|
All
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef int PinMode;
|
||||||
|
|
||||||
|
int ipfs_pin_init ();
|
||||||
|
#endif // IPFS_PIN_H
|
|
@ -26,6 +26,7 @@
|
||||||
ErrResolveLimit,
|
ErrResolveLimit,
|
||||||
ErrInvalidSignature,
|
ErrInvalidSignature,
|
||||||
ErrInvalidSignatureFmt,
|
ErrInvalidSignatureFmt,
|
||||||
ErrNoRecord
|
ErrNoRecord,
|
||||||
|
ErrCidDecodeFailed
|
||||||
} ErrsIdx;
|
} ErrsIdx;
|
||||||
#endif // IPFS_ERRS_H
|
#endif // IPFS_ERRS_H
|
||||||
|
|
|
@ -9,6 +9,7 @@ OBJS = main.o \
|
||||||
../commands/argument.o ../commands/command_option.o ../commands/command.o ../commands/cli/parse.o \
|
../commands/argument.o ../commands/command_option.o ../commands/command.o ../commands/cli/parse.o \
|
||||||
../core/builder.o \
|
../core/builder.o \
|
||||||
../datastore/ds_helper.o \
|
../datastore/ds_helper.o \
|
||||||
|
../datastore/key.o \
|
||||||
../dnslink/dnslink.o \
|
../dnslink/dnslink.o \
|
||||||
../flatfs/flatfs.o \
|
../flatfs/flatfs.o \
|
||||||
../importer/importer.o ../importer/exporter.o ../importer/resolver.o \
|
../importer/importer.o ../importer/exporter.o ../importer/resolver.o \
|
||||||
|
@ -17,6 +18,7 @@ OBJS = main.o \
|
||||||
../multibase/multibase.o \
|
../multibase/multibase.o \
|
||||||
../namesys/isdomain.o \
|
../namesys/isdomain.o \
|
||||||
../os/utils.o \
|
../os/utils.o \
|
||||||
|
../pin/pin.o \
|
||||||
../repo/init.o \
|
../repo/init.o \
|
||||||
../repo/fsrepo/fs_repo.o ../repo/fsrepo/jsmn.o ../repo/fsrepo/lmdb_datastore.o \
|
../repo/fsrepo/fs_repo.o ../repo/fsrepo/jsmn.o ../repo/fsrepo/lmdb_datastore.o \
|
||||||
../repo/config/config.o ../repo/config/identity.o \
|
../repo/config/config.o ../repo/config/identity.o \
|
||||||
|
|
18
pin/Makefile
Normal file
18
pin/Makefile
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
CC = gcc
|
||||||
|
CFLAGS = -O0 -I../include -I../../c-libp2p/include -I../../c-multihash/include -I../../c-multiaddr/include -I../../c-protobuf -Wall
|
||||||
|
|
||||||
|
ifdef DEBUG
|
||||||
|
CFLAGS += -g3
|
||||||
|
endif
|
||||||
|
|
||||||
|
LFLAGS =
|
||||||
|
DEPS =
|
||||||
|
OBJS = pin.o
|
||||||
|
|
||||||
|
%.o: %.c $(DEPS)
|
||||||
|
$(CC) -c -o $@ $< $(CFLAGS)
|
||||||
|
|
||||||
|
all: $(OBJS)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o
|
43
pin/pin.c
Normal file
43
pin/pin.c
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define IPFS_PIN_C
|
||||||
|
#include "ipfs/pin/pin.h"
|
||||||
|
|
||||||
|
#include "ipfs/cid/cid.h"
|
||||||
|
#include "ipfs/datastore/key.h"
|
||||||
|
#include "ipfs/util/errs.h"
|
||||||
|
|
||||||
|
// package pin implements structures and methods to keep track of
|
||||||
|
// which objects a user wants to keep stored locally.
|
||||||
|
|
||||||
|
#define PIN_DATASTOREKEY_SIZE 100
|
||||||
|
char *pinDatastoreKey = NULL;
|
||||||
|
size_t pinDatastoreKeySize = 0;
|
||||||
|
|
||||||
|
struct Cid *emptyKey = NULL;
|
||||||
|
|
||||||
|
int ipfs_pin_init ()
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
unsigned char *empty_hash = (unsigned char*) "QmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n";
|
||||||
|
|
||||||
|
if (!pinDatastoreKey) { // initialize just one time.
|
||||||
|
pinDatastoreKey = malloc(PIN_DATASTOREKEY_SIZE);
|
||||||
|
if (!pinDatastoreKey) {
|
||||||
|
return ErrAllocFailed;
|
||||||
|
}
|
||||||
|
err = ipfs_datastore_key_new("/local/pins", pinDatastoreKey, PIN_DATASTOREKEY_SIZE, &pinDatastoreKeySize);
|
||||||
|
if (err) {
|
||||||
|
free (pinDatastoreKey);
|
||||||
|
pinDatastoreKey = NULL;
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ipfs_cid_protobuf_decode(empty_hash, strlen ((char*)empty_hash), &emptyKey)) {
|
||||||
|
return ErrCidDecodeFailed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -28,5 +28,6 @@ char *Err[] = {
|
||||||
"resolve depth exceeded",
|
"resolve depth exceeded",
|
||||||
NULL,
|
NULL,
|
||||||
"Invalid value. Not signed by PrivateKey corresponding to %s",
|
"Invalid value. Not signed by PrivateKey corresponding to %s",
|
||||||
"no usable records in given set"
|
"no usable records in given set",
|
||||||
|
"failed to decode empty key constant"
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue