diff options
| author | deva <deva> | 2006-03-04 14:53:17 +0000 | 
|---|---|---|
| committer | deva <deva> | 2006-03-04 14:53:17 +0000 | 
| commit | f02095ee5ceb78f1781a9e250693b8866ca42181 (patch) | |
| tree | 7953c6b5f004f31ee9b340d7cdff5e85890594fc /server/multicast_configuration.cc | |
| parent | 71c713dce2b5128862b293aa7fcc1d7ee89ffaf1 (diff) | |
*** empty log message ***
Diffstat (limited to 'server/multicast_configuration.cc')
| -rw-r--r-- | server/multicast_configuration.cc | 141 | 
1 files changed, 141 insertions, 0 deletions
| diff --git a/server/multicast_configuration.cc b/server/multicast_configuration.cc new file mode 100644 index 0000000..969faca --- /dev/null +++ b/server/multicast_configuration.cc @@ -0,0 +1,141 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            multicast_configuration.cc + * + *  Wed Oct 12 10:12:11 CEST 2005 + *  Copyright  2005 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of MIaV. + * + *  MIaV is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + * + *  MIaV is distributed in the hope that it will be useful, + *  but WITHOUT ANY WARRANTY; without even the implied warranty of + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *  GNU General Public License for more details. + * + *  You should have received a copy of the GNU General Public License + *  along with MIaV; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#include "config.h" +#include "multicast_configuration.h" + +MulticastConfiguration::MulticastConfiguration(Info *info, char *file) +  : MiavConfig(file, info) +{ +  mcastconf_t conf; + +  // Create the default values. +  global_conf.addr = "224.0.0.1"; +  global_conf.port = 1234; +  global_conf.enabled = false; +  global_conf.with_audio = false; + +  bool global = true; + +  _cfg *cfg = configs; + +  // Build the client list +  while(cfg) { +    if(strcmp(cfg->name->c_str(), "client") == 0) { +      if(!global) confs.push_back(conf); + +      // Reset the configuration to the defaults +      conf.client = *(cfg->stringval); +      conf.addr = global_conf.addr; +      conf.port = global_conf.port; +      conf.enabled = global_conf.enabled; +      conf.with_audio = global_conf.with_audio; + +      global = false; +    } +    if(strcmp(cfg->name->c_str(), "address") == 0) { +      if(global) global_conf.addr = *(cfg->stringval); +      else conf.addr = *(cfg->stringval); +    } +    if(strcmp(cfg->name->c_str(), "port") == 0) { +      if(global) global_conf.port = cfg->intval; +      else conf.port = cfg->intval; +    } +    if(strcmp(cfg->name->c_str(), "enabled") == 0) { +      if(global) global_conf.enabled = cfg->boolval; +      else conf.enabled = cfg->boolval; +    } +    if(strcmp(cfg->name->c_str(), "with_audio") == 0) { +      if(global) global_conf.with_audio = cfg->boolval; +      else conf.with_audio = cfg->boolval; +    } +    cfg = cfg->next; +  } +  if(!global) confs.push_back(conf); + +  // Show the configuration in the log file  . +  info->info("Global - Enabled: %s - Addr: %s - Port: %d - WithAudio: %s",  +             global_conf.enabled?"Yes\0":"No\0", +             global_conf.addr.c_str(), +             global_conf.port, +             global_conf.with_audio?"Yes\0":"No\0"); + +  for(unsigned int cnt = 0; cnt < confs.size(); cnt++) { +    info->info("Client: %s - Enabled: %s - Addr: %s - Port: %d - WithAudio: %s",  +               confs[cnt].client.c_str(), +               confs[cnt].enabled?"Yes\0":"No\0", +               confs[cnt].addr.c_str(), +               confs[cnt].port, +               confs[cnt].with_audio?"Yes\0":"No\0"); +  } + +  info->info("Chosing:"); +} + +MulticastConfiguration::~MulticastConfiguration() +{ +} + +mcastconf_t &MulticastConfiguration::getConf(char *client) +{ +  for(unsigned int cnt = 0; cnt < confs.size(); cnt++) { +    if(strcmp(confs[cnt].client.c_str(), client) == 0) +      return confs[cnt]; +  } +  +  return global_conf; +} + +#ifdef __TEST_MULTICAST_CONFIGURATION +#include "info_simple.h" + +int main(int argc, char *argv[]) { +  if(argc < 2) { +    fprintf(stderr, "usage:\n\t%s [filename]\n", argv[0]); +    return 1; +  } + +  InfoSimple info; +  MulticastConfiguration conf(&info, argv[1]); + +  mcastconf_t mcconf = conf.getConf("192.168.0.11"); + +  info.warn("Client: %s - Enabled: %s - Addr: %s - Port: %d",  +            mcconf.client.c_str(), +            mcconf.enabled?"Yes\0":"No\0", +            mcconf.addr.c_str(), +            mcconf.port); + +  mcconf = conf.getConf("192.168.0.0"); + +  info.warn("Client: %s - Enabled: %s - Addr: %s - Port: %d",  +            mcconf.client.c_str(), +            mcconf.enabled?"Yes\0":"No\0", +            mcconf.addr.c_str(), +            mcconf.port); +} + +#endif/* __TEST_MULTICAST_CONFIGURATION*/ | 
