PUBLIC err_t channel_setup(void) { pstore_init(&_chan.session); pstore_init(&_chan.request); return E_GOOD; }
void *pstore_read(int tx_op, char *name) { SHFL *fl; shbuf_t *buff; char path[PATH_MAX+1]; char prefix[256]; unsigned char *data; size_t data_len; int err; pstore_init(); memset(prefix, 0, sizeof(prefix)); switch (tx_op) { case TX_ACCOUNT: strcpy(prefix, "account"); break; case TX_IDENT: strcpy(prefix, "id"); break; case TX_SESSION: strcpy(prefix, "session"); break; case TX_APP: strcpy(prefix, "app"); break; case TX_LEDGER: strcpy(prefix, "ledger"); break; default: strcpy(prefix, "default"); break; } buff = shbuf_init(); sprintf(path, "/sys/net/tx/%s/%s", prefix, name); fl = shfs_file_find(_pstore_fs, path); err = shfs_read(fl, buff); if (err) { shbuf_free(&buff); return (NULL); } return (shbuf_unmap(buff)); }
int pstore_write(int tx_op, char *name, unsigned char *data, size_t data_len) { SHFL *fl; char prefix[256]; char path[PATH_MAX+1]; shbuf_t *buff; int err; pstore_init(); memset(prefix, 0, sizeof(prefix)); switch (tx_op) { case TX_ACCOUNT: strcpy(prefix, "account"); break; case TX_IDENT: strcpy(prefix, "id"); break; case TX_SESSION: strcpy(prefix, "session"); break; case TX_APP: strcpy(prefix, "app"); break; case TX_LEDGER: strcpy(prefix, "ledger"); break; default: strcpy(prefix, "default"); break; } sprintf(path, "/sys/net/tx/%s/%s", prefix, name); fl = shfs_file_find(_pstore_fs, path); buff = shbuf_init(); shbuf_cat(buff, data, data_len); err = shfs_write(fl, buff); shbuf_free(&buff); if (err) return (err); return (0); }
int pstore_delete(int tx_op, char *hash) { char path[PATH_MAX+1]; char prefix[256]; shfs_ino_t *fl; int err; pstore_init(); memset(prefix, 0, sizeof(prefix)); switch (tx_op) { case TX_ACCOUNT: strcpy(prefix, "account"); break; case TX_IDENT: strcpy(prefix, "id"); break; case TX_SESSION: strcpy(prefix, "session"); break; case TX_APP: strcpy(prefix, "app"); break; case TX_LEDGER: strcpy(prefix, "ledger"); break; case TX_LICENSE: strcpy(prefix, "license"); break; default: strcpy(prefix, "default"); break; } sprintf(path, "/sys/net/tx/%s/%s", prefix, hash); fl = shfs_file_find(_pstore_fs, path); err = shfs_file_remove(fl); if (err) return (err); return (0); }