mirror of
https://github.com/gigablast/open-source-search-engine.git
synced 2024-10-05 12:47:37 +03:00
82494baa89
for simplicity.
112 lines
3.3 KiB
C++
112 lines
3.3 KiB
C++
// Matt Wells copyright Jan 9, 2002
|
|
|
|
// ad fetcher and parser
|
|
|
|
#ifndef _ADS_H_
|
|
#define _ADS_H_
|
|
|
|
#include "Url.h"
|
|
#include "SafeBuf.h"
|
|
//#include "CollectionRec.h"
|
|
|
|
#define MAX_BLOB_SIZE 2048
|
|
|
|
#define MAX_ADS 20
|
|
#define MAX_FEEDS 4
|
|
#define MAX_AD_QUERY_LEN 1024
|
|
|
|
#define PI_PRIMARY 0
|
|
#define PI_BACKUP 1
|
|
#define SS_PRIMARY 2
|
|
#define SS_BACKUP 3
|
|
|
|
|
|
class Ads {
|
|
public:
|
|
|
|
Ads(); // constructor
|
|
~Ads(); // destructor
|
|
|
|
bool getAds ( char *q ,
|
|
long qlen ,
|
|
long pageNum ,
|
|
long queryIP ,
|
|
char *coll ,
|
|
void *state ,
|
|
void (*callback)(void *state) );
|
|
// . returns false if blocks, true otherwise
|
|
// . sets g_errno on error
|
|
// . "q" is the NULL terminated query
|
|
// . "ip" is the ip of the user performing the query
|
|
|
|
long getNumPaidInclusionAds ( ) { return m_numAds[m_indexPIAds]; };
|
|
long getNumSkyscraperAds ( ) { return m_numAds[m_indexSSAds]; };
|
|
bool hasAds ( ) {
|
|
return (bool)(m_numAds[m_indexPIAds] || m_numAds[m_indexSSAds]);
|
|
};
|
|
bool gotAllRequests () {
|
|
return (bool)(m_numGotAds >= MAX_FEEDS);
|
|
};
|
|
|
|
void printPaidInclusionAds(SafeBuf *sb, long numCharPerLine );
|
|
void printSkyscraperAds (SafeBuf *sb, long numCharPerLine );
|
|
|
|
// need to keep public so wrapper can call
|
|
void gotDoc( class TcpSocket *ts, long index );
|
|
void selectDisplayAds( );
|
|
void *m_state;
|
|
void (*m_callback)(void *state);
|
|
|
|
//static void initCollAvailAds( );
|
|
//static void setAvailableAds ( char *coll );
|
|
//static long getAdFeedIndex ( collnum_t cn );
|
|
|
|
private:
|
|
bool getAd ( long index ,
|
|
char *cgi ,
|
|
long numAds );
|
|
void printAd( SafeBuf *sb ,
|
|
char *url , long urlLen,
|
|
char *title , long titleLen,
|
|
char *desc , long descLen,
|
|
char *site , long siteLen,
|
|
long numCharPerLine );
|
|
|
|
char *m_coll;
|
|
long m_queryIP;
|
|
long m_pageAds;
|
|
long m_feedIndex;
|
|
long m_indexPIAds;
|
|
long m_indexSSAds;
|
|
long m_numGotAds;
|
|
bool m_adSSSameasPI;
|
|
bool m_adBSSSameasBPI;
|
|
CollectionRec *m_cr;
|
|
|
|
char m_q [ MAX_AD_QUERY_LEN ];
|
|
long m_qlen;
|
|
char *m_titles [MAX_FEEDS][ MAX_ADS ];
|
|
long m_titlesLen[MAX_FEEDS][ MAX_ADS ];
|
|
char *m_desc [MAX_FEEDS][ MAX_ADS ];
|
|
long m_descLen [MAX_FEEDS][ MAX_ADS ];
|
|
char *m_sites [MAX_FEEDS][ MAX_ADS ];
|
|
long m_sitesLen [MAX_FEEDS][ MAX_ADS ];
|
|
char *m_urls [MAX_FEEDS][ MAX_ADS ];
|
|
long m_urlsLen [MAX_FEEDS][ MAX_ADS ];
|
|
long m_numAds [MAX_FEEDS];
|
|
char *m_buf [MAX_FEEDS];
|
|
long m_bufLen [MAX_FEEDS];
|
|
//Url m_url [MAX_FEEDS];
|
|
Xml m_xml [MAX_FEEDS];
|
|
|
|
//static long s_availableAds[16][MAX_AD_FEEDS];
|
|
//static long s_numAvailableAds[16];
|
|
};
|
|
|
|
struct AdFeed {
|
|
Ads *m_ads;
|
|
long m_index;
|
|
};
|
|
|
|
#endif
|