|
|
- #pragma once
-
- #include "pEpEngine.h"
- #include <time.h>
- #include <stdlib.h>
-
- // all functions are using POSIX struct tm
-
- typedef struct tm timestamp;
-
- typedef enum _PEP_transports {
- // auto transport chooses transport per message automatically
- PEP_trans_auto = 0,
- // PEP_trans_email,
- // PEP_trans_whatsapp,
-
- PEP_trans__count
- } PEP_transports;
-
- typedef struct _PEP_transport_t PEP_transport_t;
-
- typedef struct _identity_list {
- pEp_identity *ident;
- struct _identity_list *next;
- } identity_list;
-
- identity_list *new_identity_list(const pEp_identity *ident);
- identity_list *identity_list_dup(const identity_list *src);
- void free_identity_list(identity_list *id_list);
- identity_list *identity_list_add(identity_list *id_list, const pEp_identity *ident);
-
- typedef enum _msg_format {
- format_plain = 0,
- format_html
- } msg_format;
-
- typedef enum _msg_direction {
- dir_incoming = 0,
- dir_outgoing
- } msg_direction;
-
- struct _message_ref_list;
-
- typedef struct _message {
- msg_direction dir;
- char * id;
- size_t id_size;
- char * shortmsg;
- size_t shortmsg_size;
- char * longmsg;
- size_t longmsg_size;
- char * longmsg_formatted;
- size_t longmsg_formatted_size;
- msg_format format;
- char * rawmsg;
- size_t rawmsg_size;
- timestamp sent;
- timestamp recv;
- pEp_identity *from;
- identity_list *to;
- pEp_identity *recv_by;
- identity_list *cc;
- identity_list *bcc;
- char * refering_id;
- size_t refering_id_size;
- struct _message *refering_msg;
- struct _message_ref_list *refered_by;
- } message;
-
- typedef struct _message_ref_list {
- message *msg_ref;
- struct _message_ref_list *next;
- } message_ref_list;
-
- message *new_message(
- msg_direction dir,
- const pEp_identity *from,
- const identity_list *to,
- const char *shortmsg
- );
-
- void free_message(message *msg);
-
- message_ref_list *new_message_ref_list(message *msg);
- void free_message_ref_list(message_ref_list *msg_list);
- message_ref_list *message_ref_list_add(message_ref_list *msg_list, message *msg);
-
- typedef PEP_STATUS (*sendto_t)(PEP_SESSION session, const message *msg);
- typedef PEP_STATUS (*readnext_t)(PEP_SESSION session, message **msg, PEP_transport_t **via);
-
- struct _PEP_transport_t {
- uint8_t id;
- sendto_t sendto;
- readnext_t readnext;
- bool long_message_supported;
- msg_format native_format;
- };
-
- typedef uint64_t transports_mask;
-
- PEP_STATUS init_transport_system(PEP_SESSION session);
- void release_transport_system(PEP_SESSION session);
-
|