diff options
Diffstat (limited to 'toxcore/Messenger.h')
-rw-r--r-- | toxcore/Messenger.h | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/toxcore/Messenger.h b/toxcore/Messenger.h index d306da45..09f631ff 100644 --- a/toxcore/Messenger.h +++ b/toxcore/Messenger.h | |||
@@ -29,6 +29,7 @@ | |||
29 | #include "friend_requests.h" | 29 | #include "friend_requests.h" |
30 | #include "logger.h" | 30 | #include "logger.h" |
31 | #include "net_crypto.h" | 31 | #include "net_crypto.h" |
32 | #include "state.h" | ||
32 | 33 | ||
33 | #define MAX_NAME_LENGTH 128 | 34 | #define MAX_NAME_LENGTH 128 |
34 | /* TODO(irungentoo): this must depend on other variable. */ | 35 | /* TODO(irungentoo): this must depend on other variable. */ |
@@ -50,6 +51,36 @@ typedef enum Message_Type { | |||
50 | MESSAGE_ACTION | 51 | MESSAGE_ACTION |
51 | } Message_Type; | 52 | } Message_Type; |
52 | 53 | ||
54 | typedef struct Messenger Messenger; | ||
55 | |||
56 | // Returns the size of the data | ||
57 | typedef uint32_t m_state_size_cb(const Messenger *m); | ||
58 | |||
59 | // Returns the new pointer to data | ||
60 | typedef uint8_t *m_state_save_cb(const Messenger *m, uint8_t *data); | ||
61 | |||
62 | // Returns if there were any erros during loading | ||
63 | typedef State_Load_Status m_state_load_cb(Messenger *m, const uint8_t *data, uint32_t length); | ||
64 | |||
65 | typedef enum Messenger_State_Type { | ||
66 | MESSENGER_STATE_TYPE_NOSPAMKEYS = 1, | ||
67 | MESSENGER_STATE_TYPE_DHT = 2, | ||
68 | MESSENGER_STATE_TYPE_FRIENDS = 3, | ||
69 | MESSENGER_STATE_TYPE_NAME = 4, | ||
70 | MESSENGER_STATE_TYPE_STATUSMESSAGE = 5, | ||
71 | MESSENGER_STATE_TYPE_STATUS = 6, | ||
72 | MESSENGER_STATE_TYPE_TCP_RELAY = 10, | ||
73 | MESSENGER_STATE_TYPE_PATH_NODE = 11, | ||
74 | MESSENGER_STATE_TYPE_END = 255, | ||
75 | } Messenger_State_Type; | ||
76 | |||
77 | typedef struct Messenger_State_Plugin { | ||
78 | Messenger_State_Type type; | ||
79 | m_state_size_cb *size; | ||
80 | m_state_save_cb *save; | ||
81 | m_state_load_cb *load; | ||
82 | } Messenger_State_Plugin; | ||
83 | |||
53 | typedef struct Messenger_Options { | 84 | typedef struct Messenger_Options { |
54 | bool ipv6enabled; | 85 | bool ipv6enabled; |
55 | bool udp_disabled; | 86 | bool udp_disabled; |
@@ -63,6 +94,9 @@ typedef struct Messenger_Options { | |||
63 | logger_cb *log_callback; | 94 | logger_cb *log_callback; |
64 | void *log_context; | 95 | void *log_context; |
65 | void *log_user_data; | 96 | void *log_user_data; |
97 | |||
98 | Messenger_State_Plugin *state_plugins; | ||
99 | uint8_t state_plugins_length; | ||
66 | } Messenger_Options; | 100 | } Messenger_Options; |
67 | 101 | ||
68 | 102 | ||
@@ -156,8 +190,6 @@ typedef enum Filekind { | |||
156 | } Filekind; | 190 | } Filekind; |
157 | 191 | ||
158 | 192 | ||
159 | typedef struct Messenger Messenger; | ||
160 | |||
161 | typedef void m_self_connection_status_cb(Messenger *m, unsigned int connection_status, void *user_data); | 193 | typedef void m_self_connection_status_cb(Messenger *m, unsigned int connection_status, void *user_data); |
162 | typedef void m_friend_status_cb(Messenger *m, uint32_t friend_number, unsigned int status, void *user_data); | 194 | typedef void m_friend_status_cb(Messenger *m, uint32_t friend_number, unsigned int status, void *user_data); |
163 | typedef void m_friend_connection_status_cb(Messenger *m, uint32_t friend_number, unsigned int connection_status, | 195 | typedef void m_friend_connection_status_cb(Messenger *m, uint32_t friend_number, unsigned int connection_status, |
@@ -758,6 +790,14 @@ uint32_t messenger_run_interval(const Messenger *m); | |||
758 | 790 | ||
759 | /* SAVING AND LOADING FUNCTIONS: */ | 791 | /* SAVING AND LOADING FUNCTIONS: */ |
760 | 792 | ||
793 | /* Registers a state plugin for saving, loadding, and getting the size of a section of the save | ||
794 | * | ||
795 | * returns true on success | ||
796 | * returns false on error | ||
797 | */ | ||
798 | bool m_register_state_plugin(Messenger *m, Messenger_State_Type type, m_state_size_cb size_callback, | ||
799 | m_state_load_cb load_callback, m_state_save_cb save_callback); | ||
800 | |||
761 | /* return size of the messenger data (for saving). */ | 801 | /* return size of the messenger data (for saving). */ |
762 | uint32_t messenger_size(const Messenger *m); | 802 | uint32_t messenger_size(const Messenger *m); |
763 | 803 | ||