text: // ------------------------------------------------------------------------------------------------
  #include "Library/Utils/Announce.hpp"
  
  // ------------------------------------------------------------------------------------------------
  namespace SqMod {
  
  // ------------------------------------------------------------------------------------------------
  SQMOD_DECL_TYPENAME(SqServerAnnouncer, _SC("SqServerAnnouncer"))
  
  // ------------------------------------------------------------------------------------------------
  void AnnounceTerminate()
  {
      // Go over all sockets and try to close them
      for (SqAnnouncer * inst = SqAnnouncer::sHead; inst && inst->mNext != SqAnnouncer::sHead; inst = inst->mNext)
      {
          inst->Stop(); // Stop the announcer
      }
  }
  
  // ================================================================================================
  void Register_ServerAnnouncer(HSQUIRRELVM vm, Table & ns)
  {
      // --------------------------------------------------------------------------------------------
      ns.Bind(_SC("Announcer"),
          Class< SqAnnouncer, NoCopy< SqAnnouncer > >(vm, SqServerAnnouncer::Str)
          // Constructors
          .Ctor< StackStrF & >()
          .Ctor< SQInteger, StackStrF & >()
          // Meta-methods
          .SquirrelFunc(_SC("_typename"), &SqServerAnnouncer::Fn)
          // Properties
          .Prop(_SC("Running"), &SqAnnouncer::Running)
          .Prop(_SC("Log"), &SqAnnouncer::GetLog, &SqAnnouncer::SetLog)
          .Prop(_SC("Interval"), &SqAnnouncer::GetInterval, &SqAnnouncer::SetInterval)
          .Prop(_SC("Retries"), &SqAnnouncer::GetRetries, &SqAnnouncer::SetRetries)
          .Prop(_SC("Count"), &SqAnnouncer::GetCount)
          .Prop(_SC("Success"), &SqAnnouncer::GetSuccess)
          .Prop(_SC("Failures"), &SqAnnouncer::GetFailures)
          .Prop(_SC("URI"), &SqAnnouncer::GetURI, &SqAnnouncer::SetURI)
          // Member Methods
          .Func(_SC("Run"), &SqAnnouncer::Run)
          .Func(_SC("Stop"), &SqAnnouncer::Stop)
      );
  }
  
  } // Namespace:: SqMod
  