mirror of
https://github.com/status-im/status-go.git
synced 2025-02-27 14:10:54 +00:00
This commit adds basic syncing capabilities with peers if they are both online. It updates the work done on MVDS, but I decided to create the code in status-go instead, since it's very tight to the application (similarly the code that was the inspiration for mvds, bramble, is all tight together at the database level). I reused parts of the protobufs. The flow is: 1) An OFFER message is sent periodically with a bunch of message-ids and group-ids. 2) Anyone can REQUEST some of those messages if not present in their database. 3) The peer will then send over those messages. It's disabled by default, but I am planning to add a way to set up the flags.
54 lines
921 B
C
54 lines
921 B
C
#ifndef _LINK_H
|
|
#define _LINK_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <elf.h>
|
|
#define __NEED_size_t
|
|
#define __NEED_uint32_t
|
|
#include <bits/alltypes.h>
|
|
|
|
#if UINTPTR_MAX > 0xffffffff
|
|
#define ElfW(type) Elf64_ ## type
|
|
#else
|
|
#define ElfW(type) Elf32_ ## type
|
|
#endif
|
|
|
|
#include <bits/link.h>
|
|
|
|
struct dl_phdr_info {
|
|
ElfW(Addr) dlpi_addr;
|
|
const char *dlpi_name;
|
|
const ElfW(Phdr) *dlpi_phdr;
|
|
ElfW(Half) dlpi_phnum;
|
|
unsigned long long int dlpi_adds;
|
|
unsigned long long int dlpi_subs;
|
|
size_t dlpi_tls_modid;
|
|
void *dlpi_tls_data;
|
|
};
|
|
|
|
struct link_map {
|
|
ElfW(Addr) l_addr;
|
|
char *l_name;
|
|
ElfW(Dyn) *l_ld;
|
|
struct link_map *l_next, *l_prev;
|
|
};
|
|
|
|
struct r_debug {
|
|
int r_version;
|
|
struct link_map *r_map;
|
|
ElfW(Addr) r_brk;
|
|
enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state;
|
|
ElfW(Addr) r_ldbase;
|
|
};
|
|
|
|
int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *), void *);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|