50 lines
1.6 KiB
C
50 lines
1.6 KiB
C
#pragma once
|
|
#include <stdio.h>
|
|
#include <stdint.h>
|
|
|
|
#include "libp2p/conn/session.h"
|
|
#include "ipfs/core/ipfs_node.h"
|
|
#include "libp2p/net/protocol.h"
|
|
|
|
/**
|
|
* The journal protocol attempts to keep a journal in sync with other (approved) nodes
|
|
*/
|
|
|
|
/***
|
|
* See if we can handle this message
|
|
* @param incoming the incoming message
|
|
* @param incoming_size the size of the incoming message
|
|
* @returns true(1) if the protocol in incoming is something we can handle. False(0) otherwise.
|
|
*/
|
|
int ipfs_journal_can_handle(const uint8_t* incoming, size_t incoming_size);
|
|
|
|
/**
|
|
* Clean up resources used by this handler
|
|
* @param context the context to clean up
|
|
* @returns true(1)
|
|
*/
|
|
int ipfs_journal_shutdown_handler(void* context);
|
|
|
|
/***
|
|
* Handles a message
|
|
* @param incoming the message
|
|
* @param incoming_size the size of the message
|
|
* @param session_context details of the remote peer
|
|
* @param protocol_context in this case, an IpfsNode
|
|
* @returns 0 if the caller should not continue looping, <0 on error, >0 on success
|
|
*/
|
|
int ipfs_journal_handle_message(const uint8_t* incoming, size_t incoming_size, struct SessionContext* session_context, void* protocol_context) ;
|
|
|
|
/***
|
|
* Build the protocol handler struct for the Journal protocol
|
|
* @param local_node what to stuff in the context
|
|
* @returns the protocol handler
|
|
*/
|
|
struct Libp2pProtocolHandler* ipfs_journal_build_protocol_handler(const struct IpfsNode* local_node);
|
|
|
|
/***
|
|
* Send a journal message to a remote peer
|
|
* @param replication_peer the peer to send it to
|
|
* @returns true(1) on success, false(0) otherwise.
|
|
*/
|
|
int ipfs_journal_sync(struct IpfsNode* local_node, struct ReplicationPeer* replication_peer);
|