2017-08-24 15:08:27 +00:00
|
|
|
#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.
|
|
|
|
*/
|
2017-10-23 20:22:12 +00:00
|
|
|
int ipfs_journal_can_handle(const struct StreamMessage* msg);
|
2017-08-24 15:08:27 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* 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
|
|
|
|
*/
|
2017-11-08 15:54:31 +00:00
|
|
|
int ipfs_journal_handle_message(const struct StreamMessage* msg, struct Stream* stream, void* protocol_context) ;
|
2017-08-24 15:08:27 +00:00
|
|
|
|
|
|
|
/***
|
|
|
|
* 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
|
2017-08-28 11:56:22 +00:00
|
|
|
* @param replication_peer the peer to send it to
|
2017-08-24 15:08:27 +00:00
|
|
|
* @returns true(1) on success, false(0) otherwise.
|
|
|
|
*/
|
2017-08-28 11:56:22 +00:00
|
|
|
int ipfs_journal_sync(struct IpfsNode* local_node, struct ReplicationPeer* replication_peer);
|