www.pudn.com > simplec++codeforp2p.rar > peercast.cpp
#include "sys.h"
#include "peercast.h"
#include "channel.h"
#include "servmgr.h"
// ---------------------------------
// globals
Sys *sys=NULL;
ChanMgr *chanMgr;
ServMgr *servMgr;
PeercastInstance *peercastInst=NULL;
PeercastApplication *peercastApp=NULL;
// ---------------------------------
void APICALL PeercastInstance::init()
{
sys = createSys();
servMgr = new ServMgr();
chanMgr = new ChanMgr();
if (peercastApp->getIniFilename())
servMgr->loadSettings(peercastApp->getIniFilename());
servMgr->start();
}
// --------------------------------------------------
void APICALL PeercastInstance::setNotifyMask(int mask)
{
if (servMgr)
servMgr->notifyMask = mask;
}
// --------------------------------------------------
int APICALL PeercastInstance::getNotifyMask()
{
if (servMgr)
return servMgr->notifyMask;
else
return 0;
}
// --------------------------------------------------
void APICALL PeercastInstance::setAutoConnect(bool on)
{
if (servMgr)
servMgr->autoConnect = on;
}
// --------------------------------------------------
bool APICALL PeercastInstance::getAutoConnect()
{
if (servMgr)
return servMgr->autoConnect;
else
return false;
}
// --------------------------------------------------
void APICALL PeercastInstance::setMaxOutput(int kbps)
{
if (servMgr)
servMgr->maxBitrateOut = kbps;
}
// --------------------------------------------------
int APICALL PeercastInstance::getMaxOutput()
{
if (servMgr)
return servMgr->maxBitrateOut;
else
return 0;
}
// --------------------------------------------------
void APICALL PeercastInstance::setMaxRelays(int max)
{
if (servMgr)
servMgr->setMaxRelays(max);
}
// --------------------------------------------------
int APICALL PeercastInstance::getMaxRelays()
{
if (servMgr)
return servMgr->maxRelays;
else
return 0;
}
// --------------------------------------------------
void APICALL PeercastInstance::setActive(bool on)
{
if (servMgr)
{
servMgr->autoConnect = on;
servMgr->autoServe = on;
}
}
// --------------------------------------------------
bool APICALL PeercastInstance::getActive()
{
if (servMgr)
return servMgr->autoConnect&&servMgr->autoServe;
else
return false;
}
// --------------------------------------------------
void APICALL PeercastInstance::saveSettings()
{
if (servMgr)
servMgr->saveSettings(peercastApp->getIniFilename());
}
// --------------------------------------------------
void APICALL PeercastInstance::quit()
{
isQuitting = true;
if (chanMgr)
chanMgr->quit();
if (servMgr)
servMgr->quit();
}
// --------------------------------------------------
void APICALL PeercastInstance::setServerPort(int port)
{
if (servMgr)
{
servMgr->serverHost.port = port;
servMgr->restartServer = true;
}
}
// --------------------------------------------------
int APICALL PeercastInstance::getServerPort()
{
if (servMgr)
return servMgr->serverHost.port;
else
return 0;
}
// --------------------------------------------------
void APICALL PeercastInstance::setServerPassword(const char *pwd)
{
if (servMgr)
strcpy(servMgr->password,pwd);
}
// --------------------------------------------------
const char *APICALL PeercastInstance::getServerPassword()
{
return servMgr->password;
}
// --------------------------------------------------
void APICALL PeercastInstance::callLocalURL(const char *url)
{
if (sys && servMgr)
sys->callLocalURL(url,servMgr->serverHost.port);
}
// --------------------------------------------------
void ADDLOG(const char *fmt,va_list ap,LogBuffer::TYPE type)
{
if(sys)
{
const int MAX_LINELEN = 1024;
char str[MAX_LINELEN+1];
vsnprintf(str,MAX_LINELEN-1,fmt,ap);
str[MAX_LINELEN-1]=0;
if (type != LogBuffer::T_NONE)
sys->logBuf->write(str,type);
peercastApp->printLog(type,str);
}
}
// --------------------------------------------------
void LOG(const char *fmt,...)
{
va_list ap;
va_start(ap, fmt);
ADDLOG(fmt,ap,LogBuffer::T_DEBUG);
va_end(ap);
}
// --------------------------------------------------
void LOG_ERROR(const char *fmt,...)
{
if (servMgr)
{
if ((servMgr->showLog & (1<pauseLog))
{
va_list ap;
va_start(ap, fmt);
ADDLOG(fmt,ap,LogBuffer::T_ERROR);
va_end(ap);
}
}
}
// --------------------------------------------------
void LOG_DEBUG(const char *fmt,...)
{
if (servMgr)
{
if ((servMgr->showLog & (1<pauseLog))
{
va_list ap;
va_start(ap, fmt);
ADDLOG(fmt,ap,LogBuffer::T_DEBUG);
va_end(ap);
}
}
}
// --------------------------------------------------
void LOG_NETWORK(const char *fmt,...)
{
if (servMgr)
{
if ((servMgr->showLog & (1<pauseLog))
{
va_list ap;
va_start(ap, fmt);
ADDLOG(fmt,ap,LogBuffer::T_NETWORK);
va_end(ap);
}
}
}
// --------------------------------------------------
void LOG_CHANNEL(const char *fmt,...)
{
if (servMgr)
{
if ((servMgr->showLog & (1<pauseLog))
{
va_list ap;
va_start(ap, fmt);
ADDLOG(fmt,ap,LogBuffer::T_CHANNEL);
va_end(ap);
}
}
}