mirror of
https://projects.vdr-developer.org/git/vdr-plugin-streamdev.git
synced 2023-10-10 19:16:51 +02:00
afe255aa0b
with the "red" key. The former main menu action of suspending live TV moved to the "blue" key. Squashed commit of the following: commit7175d7de91
Author: Frank Schmirler <vdr@schmirler.de> Date: Sun Nov 27 11:51:26 2011 +0100 Updated README commit94aef85adc
Author: Frank Schmirler <vdr@schmirler.de> Date: Sun Nov 27 11:32:16 2011 +0100 Moved "closing connection" log message to overload of cTBSocket::Close() in cServerConnection. commit9b91301d94
Author: Frank Schmirler <vdr@schmirler.de> Date: Fri Nov 25 00:24:37 2011 +0100 Don't keep a pointer to the connection in components MulticastGroup structure as the connection may now be deleted from outside via menu. commit7347e24123
Author: Frank Schmirler <vdr@schmirler.de> Date: Thu Nov 24 23:45:59 2011 +0100 Fixed missing Display() call after disconnecting a client. commitc652e8fa81
Author: Frank Schmirler <vdr@schmirler.de> Date: Tue Nov 22 01:15:09 2011 +0100 Added server menu with list of clients. Connections can be terminated with the "red" key. The former main menu action of suspending live TV moved to the "blue" key.
62 lines
1.7 KiB
C++
62 lines
1.7 KiB
C++
/*
|
|
* $Id: componentIGMP.h,v 1.1 2009/02/13 10:39:22 schmirl Exp $
|
|
*/
|
|
|
|
#ifndef VDR_STREAMDEV_IGMPSERVER_H
|
|
#define VDR_STREAMDEV_IGMPSERVER_H
|
|
|
|
#include <sys/time.h>
|
|
#include <time.h>
|
|
#include <vdr/thread.h>
|
|
#include "server/component.h"
|
|
|
|
class cMulticastGroup;
|
|
|
|
class cComponentIGMP: public cServerComponent, public cThread {
|
|
private:
|
|
char m_ReadBuffer[2048];
|
|
cList<cMulticastGroup> m_Groups;
|
|
in_addr_t m_BindIp;
|
|
int m_MaxChannelNumber;
|
|
struct timeval m_GeneralQueryTimer;
|
|
int m_StartupQueryCount;
|
|
bool m_Querier;
|
|
cCondWait m_CondWait;
|
|
|
|
cMulticastGroup* FindGroup(in_addr_t Group) const;
|
|
|
|
/* Add or remove local host to multicast group */
|
|
bool IGMPMembership(in_addr_t Group, bool Add = true);
|
|
void IGMPSendQuery(in_addr_t Group, int Timeout);
|
|
|
|
cServerConnection* ProcessMessage(struct igmp *Igmp, in_addr_t Group, in_addr_t Sender);
|
|
|
|
void IGMPStartGeneralQueryTimer();
|
|
void IGMPStartOtherQuerierPresentTimer();
|
|
void IGMPSendGeneralQuery();
|
|
|
|
void IGMPStartTimer(cMulticastGroup* Group, in_addr_t Member);
|
|
void IGMPStartV1HostTimer(cMulticastGroup* Group);
|
|
void IGMPStartTimerAfterLeave(cMulticastGroup* Group, unsigned int MaxResponseTime);
|
|
void IGMPStartRetransmitTimer(cMulticastGroup* Group);
|
|
void IGMPClearRetransmitTimer(cMulticastGroup* Group);
|
|
void IGMPSendGroupQuery(cMulticastGroup* Group);
|
|
cServerConnection* IGMPStartMulticast(cMulticastGroup* Group);
|
|
void IGMPStopMulticast(cMulticastGroup* Group);
|
|
|
|
virtual void Action();
|
|
|
|
protected:
|
|
virtual cServerConnection *NewClient(void);
|
|
|
|
public:
|
|
virtual bool Initialize(void);
|
|
virtual void Destruct(void);
|
|
virtual cServerConnection* Accept(void);
|
|
|
|
cComponentIGMP(void);
|
|
~cComponentIGMP(void);
|
|
};
|
|
|
|
#endif // VDR_STREAMDEV_IGMPSERVER_H
|