#include "VideoServiceProvider.h"

VideoServiceProvider::VideoServiceProvider (CORBA::ORB_ptr orb)
  : adapter_ (orb)
{
  adapter_.createPersistent (this);
}

Server::CompanyNameList *
VideoServiceProvider::getCompanies (void)
{
  Server::CompanyNameList *companies = 0;
  ACE_NEW_RETURN (companies,
                  Server::CompanyNameList,
                  0);
  Server::CompanyNameList_var holder (companies);

  int count = 0;
  VideoCompany **company;

  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Service Provider: managed companies:\n")));

  companies->length (static_cast<CORBA::ULong> (companies_.size ()));

  for (VideoCompanyArray::ITERATOR itb = VideoCompanyArray::ITERATOR (companies_);
       itb.next (company) != 0; itb.advance ())
    {
      CORBA::String_var nameVar = (*company)->getName ();
      (*companies)[count] = CORBA::string_dup (nameVar.in ());
      ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%s\n"), nameVar.in ()));
      ++count;
    }

  return holder._retn ();
}

void
VideoServiceProvider::store (VideoCompany *company)
{
  companies_.size (companies_.size () + 1);
  companies_[companies_.size () - 1] = company;
}

//IDL client connection test
void
VideoServiceProvider::helloWorld (void)
{
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Hello World\n")));
}
