Swift SDK: Swift Package wrapping libquicproquo_ffi with QpqClient class (connect, login, send, receive, disconnect) for iOS 15+ / macOS 13+. Kotlin SDK: JNI bridge to libquicproquo_ffi with QpqClient class for Android (aarch64, armv7) and JVM, Gradle build configuration. Adds RegisterPushToken RPC (method ID 710) to device.proto for APNs/FCM/WebPush device push token registration.
53 lines
1.4 KiB
C
53 lines
1.4 KiB
C
// quicproquo_ffi.h — C header for libquicproquo_ffi.
|
|
//
|
|
// Mirrors the extern "C" functions from crates/quicproquo-ffi/src/lib.rs.
|
|
|
|
#ifndef QUICPROQUO_FFI_H
|
|
#define QUICPROQUO_FFI_H
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// Status codes.
|
|
#define QPQ_OK 0
|
|
#define QPQ_ERROR 1
|
|
#define QPQ_AUTH_FAILED 2
|
|
#define QPQ_TIMEOUT 3
|
|
#define QPQ_NOT_CONNECTED 4
|
|
|
|
// Opaque handle type.
|
|
typedef struct QpqHandle QpqHandle;
|
|
|
|
// Connect to a quicproquo server. Returns NULL on failure.
|
|
QpqHandle* qpq_connect(const char* server, const char* ca_cert, const char* server_name);
|
|
|
|
// Authenticate with OPAQUE credentials.
|
|
int qpq_login(QpqHandle* handle, const char* username, const char* password);
|
|
|
|
// Send a message to a recipient (by username).
|
|
int qpq_send(QpqHandle* handle, const char* recipient,
|
|
const uint8_t* message, size_t message_len);
|
|
|
|
// Receive pending messages (blocking). On success, *out_json is a
|
|
// heap-allocated JSON string that must be freed with qpq_free_string.
|
|
int qpq_receive(QpqHandle* handle, uint32_t timeout_ms, char** out_json);
|
|
|
|
// Disconnect and free the handle.
|
|
void qpq_disconnect(QpqHandle* handle);
|
|
|
|
// Return the last error message, or NULL. Do NOT free the result.
|
|
const char* qpq_last_error(const QpqHandle* handle);
|
|
|
|
// Free a string returned by qpq_receive.
|
|
void qpq_free_string(char* ptr);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // QUICPROQUO_FFI_H
|