blob: d03273c448c81f1f576f0e7ba8de166867691998 [file]
/*-------------------------------------------------------------------------
*
* ic_proxy_backend.h
*
*
* Copyright (c) 2020-Present VMware, Inc. or its affiliates.
*
*
*-------------------------------------------------------------------------
*/
#ifndef IC_PROXY_BACKEND_H
#define IC_PROXY_BACKEND_H
#include "postgres.h"
#include "ic_internal.h"
#include <uv.h>
/*
* ICProxyBackendContext represents the common state of ic_proxy backend for each
* ChunkTransportState.
*/
typedef struct ICProxyBackendContext
{
uv_loop_t loop;
/* timer for interrupt */
uv_timer_t interruptTimer;
uv_timer_t cancelFromQDTimer;
/* timer and queue for connect and reconnect */
uv_timer_t connectTimer;
List *connectQueue;
/* Pointer to ChunkTransportState * */
ChunkTransportState *transportState;
} ICProxyBackendContext;
extern void ic_proxy_backend_connect(ICProxyBackendContext *context,
ChunkTransportStateEntry *pEntry,
MotionConn *conn, bool isSender);
extern void ic_proxy_backend_init_context(ChunkTransportState *state);
extern void ic_proxy_backend_close_context(ChunkTransportState *state);
extern void ic_proxy_backend_run_loop(ICProxyBackendContext *context);
#endif /* IC_PROXY_BACKEND_H */