#include <stdio.h>
#include <winsock.h>
#include <stdlib.h>
#include <qtextview.h>

#include "LoggingMgr.h"
#include "ProtocolCommands.h"

#define JUSTONE_RUNEXETHREAD  //make sure that when RunExeThread is included, only 1 LoggingMgr.h is included
#include "RunExeThread.h"
#include "utils.h"

#ifndef JUSTONE_RSSCLIENTDIALOG
	#include "rssclientdialog.h" //because of main.cpp
#endif


#define MAXRECVSTRING 255
#define BUFLEN 64





class BroadReceiver 
{
public:
	
	BroadReceiver( LoggingMgr *lm, RSSClientDialog *rcd );
	SetupSocket( void );
	SetupSendSocket( void );
	BeginReceive( void );
	StartWinsock( void );
	ShutdownWinsock( void );
	SleepTillDeath( void );

	AllocateThreadArray( int size );
	InitThreadArray( void );
	RunThreadArray( void );
	FreeThreadArray( void );
private:
	RunExeThread **ThreadArray;/*****************************/
	int m_nThreadArraySize;
	LoggingMgr *m_pLogger;
	RSSClientDialog *m_pRssDialog;
	bool m_bRequested;
	
	int sock;                         /* Socket */
	int s_sock;
    struct sockaddr_in broadcastAddr; /* Broadcast Address */
	struct sockaddr_in ServAddr;
    unsigned int broadcastPort;       /* Port */
	unsigned int ServPort;
    char recvString[MAXRECVSTRING+1]; /* Buffer for received string */
    int recvStringLen;                /* Length of received string */
    WORD wVersionRequested;           /* Version of Winsock to load */
    WSADATA wsaData;                  /* Winsock implementation details */

};
