/* =============================================================================
 * transport.h - 바이트 스트림 전송 추상화 (TLS/평문 공용)
 *
 * httpapi.c 는 이 인터페이스만 사용한다. 실제 구현:
 *   tls_mbedtls.c : mbedTLS over LwIP socket (운영, HTTPS)
 *   (테스트)      : 메모리/루프백 스텁
 * ===========================================================================*/
#ifndef TRANSPORT_H
#define TRANSPORT_H

#include <stdint.h>
#include <stddef.h>

typedef struct transport_s {
    void *ctx;

    /* host:port 연결(+ TLS 핸드셰이크). 0 성공, 음수 실패. */
    int (*connect)(void *ctx, const char *host, uint16_t port, uint32_t timeout_ms);

    /* buf[0..len) 전체 전송. 전송한 바이트 수(>0) 또는 음수 실패. */
    int (*send)(void *ctx, const uint8_t *buf, size_t len, uint32_t timeout_ms);

    /* 최대 cap 바이트 수신. 읽은 바이트 수(>0), 0=연결 종료, 음수=오류. */
    int (*recv)(void *ctx, uint8_t *buf, size_t cap, uint32_t timeout_ms);

    /* 연결 종료/정리 */
    void (*close)(void *ctx);
} transport_t;

#endif /* TRANSPORT_H */
