privacore-open-source-searc.../Proxy.h
Ivan Skytte Jørgensen beeddcf35d Got rid of gb-include.h
2018-07-26 17:29:51 +02:00

70 lines
1.6 KiB
C++

#ifndef GB_PROXY_H
#define GB_PROXY_H
#include "max_hosts.h"
#include <inttypes.h>
#define MAX_STRIPES 8
class Host;
class TcpSocket;
class UdpProtocol;
class HttpRequest;
class Proxy {
public:
Proxy();
~Proxy();
void reset();
bool initHttpServer ( uint16_t httpPort,
uint16_t httpsPort );
bool initProxy ( int32_t proxyId,
uint16_t udpPort,
uint16_t udpPort2,
UdpProtocol *dp );
bool handleRequest ( TcpSocket *s );
bool forwardRequest ( struct StateControl *stC );
void gotReplyPage ( void *state, class UdpSlot *slot );
Host *pickBestHost ( struct StateControl *stC );
bool isProxyRunning () {return m_proxyRunning;}
// are we a proxy?
bool isProxy () {return m_proxyRunning;}
//pages.getUser needs to know if we're proxy to display the admintop
//and main.cpp needs to set this so that it can stop the proxy
bool m_proxyRunning;
// protected:
void printRequest (TcpSocket *s, HttpRequest *r,
uint64_t took = 0,
char *content = nullptr,
int32_t contentLen = 0 );
int32_t m_proxyId;
//number of requests outstanding per hosts
int32_t m_numOutstanding[MAX_HOSTS];
//last host to which we sent the request
int32_t m_lastHost;
//host to which we pass the index page and the addurl page
int32_t m_mainHost;
// assume no more than 8 stripes for now
int32_t m_stripeLastHostId [MAX_STRIPES];
// how many query terms are outstanding on this stripe
int32_t m_termsOutOnStripe [MAX_STRIPES];
int32_t m_queriesOutOnStripe [MAX_STRIPES];
int32_t m_nextStripe;
};
extern Proxy g_proxy;
#endif // GB_PROXY_H