#ifndef _VIDEOSERVICEPROVIDER_H
#define _VIDEOSERVICEPROVIDER_H

#include "Common/ServerS.h"
#include "Common/ServerC.h"
#include "Common/ObjectAdapter.h"

#include "VideoCompany.h"

#include <ace/Containers_T.h>

#include "macro.h"

typedef ACE_Array<VideoCompany*> VideoCompanyArray;

#ifndef OPENFUSION_VIDEO_DLL
#define OPENFUSION_VIDEO_DLL
#endif

class OPENFUSION_VIDEO_DLL VideoServiceProvider
  : public POA_Server::ServiceProvider
{
public:

  VideoServiceProvider (CORBA::ORB_ptr orb);

  virtual Server::CompanyNameList *getCompanies (void);

  void store (VideoCompany *company, const char *name);

  ObjectAdapter *getObjectAdapter (void)
  {
    return &adapter_;
  }

  ObjectAdapter *getVideoObjectAdapter (void)
  {
    return &adapterVideos_;
  }

  void activateManager (void);

  virtual void helloWorld (void);

protected:

  VideoCompanyArray companies_;

private:

  CORBA::ORB_var orbVar_;

  ObjectAdapter adapter_;

  ObjectAdapter adapterVideos_;
};

#endif  // _VIDEOSERVICEPROVIDER_H
