#ifndef _BALANCE_H_ #define _BALANCE_H_ #define MY_PLUGIN_VERSION 0 #define MY_DESCRIPTION "Blance Plug-in: Dynamically balances load across a number of HelixDNA streaming servers." #define SPREAD_GROUP "helix" class CBalance : public IHXPlugin, public IHXPropWatchResponse, public IHXCallback { public: CBalance (void); /* * IHXPlugin Interface Methods */ STDMETHOD(GetPluginInfo) (THIS_ REF(BOOL) bLoadMultiple, REF(const char*) pDescription, REF(const char*) pCopyright, REF(const char*) pMoreInfoURL, REF(UINT32) ulVersionNumber ); STDMETHOD(InitPlugin) (THIS_ IUnknown* pContext); /* * IUnknown COM Interface Methods */ STDMETHOD (QueryInterface ) (THIS_ REFIID ID, void** ppInterfaceObj); STDMETHOD_(UINT32, AddRef ) (THIS); STDMETHOD_(UINT32, Release) (THIS); /* * IHXPropWatchResponse Interface Methods */ STDMETHOD(AddedProp) ( THIS_ const UINT32 id, const HXPropType propType, const UINT32 ulParentID ); STDMETHOD(DeletedProp) ( THIS_ const UINT32 id, const UINT32 ulParentID ); STDMETHOD(ModifiedProp) ( THIS_ const UINT32 id, const HXPropType propType, const UINT32 ulParentID ); /************************************************************************ * IHXCallback Interface Methods */ STDMETHOD (Func) (THIS); private: ~CBalance(void); INT32 m_RefCount; // Object's reference count IHXCommonClassFactory* m_pClassFactory;// Creates common Helix classes IHXRegistry* m_pRegistry; // Accesses server registry IHXPropWatch* m_pPropWatch; // Keep an eye on the registry IHXScheduler* m_pScheduler; // Lets call outselves back static const char* zm_pDescription; static const char* zm_pCopyright; static const char* zm_pMoreInfoURL; mailbox m_mbox; char m_private_group[MAX_GROUP_NAME]; bool sp_connected; PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME // Avoids GCC compiler warning }; #endif /* ifndef _BALANCE_H_ */