/****************************************************************************
 * This file is part of the project AqHome.
 * AqHome (c) by 2023 Martin Preuss, all rights reserved.
 *
 * The license for this file can be found in the file COPYING which you
 * should have received along with this file.
 ****************************************************************************/

#ifndef AQH_ENDPOINT_HTTP_P_H
#define AQH_ENDPOINT_HTTP_P_H



#include "aqhome/http/endpoint_http.h"

#include <gwenhywfar/db.h>
#include <gwenhywfar/buffer.h>



enum {
  AQH_EndpointHttpd_ReadMode_Aborted=-1,
  AQH_EndpointHttpd_ReadMode_Command=0,
  AQH_EndpointHttpd_ReadMode_Status,
  AQH_EndpointHttpd_ReadMode_Headers,
  AQH_EndpointHttpd_ReadMode_Body
};



typedef struct AQH_ENDPOINT_HTTP AQH_ENDPOINT_HTTP;
struct AQH_ENDPOINT_HTTP {
  int readMode;

  uint32_t flags;

  GWEN_MSG_ENDPOINT_ADDSOCKETS_FN addSocketsFn;
  GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN checkSocketsFn;

  GWEN_BUFFER *currentReadBuffer;
  GWEN_DB_NODE *dbCurrentReadCommand;
  GWEN_DB_NODE *dbCurrentReadHeader;
  int currentHeaderPos;
  int currentBodyPos;
  int currentBodySize;
  int remainingBodySize;
  int lastLineStartPos;
};



#endif

