Horus Doc || Corba Reference || Corba   Client Server   Stubs C++   Stubs Java   Servant Generator  

HxServer.h

Go to the documentation of this file.
00001 /*
00002  *  Copyright (c) 1999, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *  Author(s):
00006  *  Marc Navarro            (mnavarro@wins.uva.nl)
00007  */
00008 
00009 #ifndef HxServer_h
00010 #define HxServer_h
00011 
00012 #include <OB/CORBA.h>
00013 #include "HxServerBase.h"
00014 #include "HxCorbaConversions.h"
00015 #include "HxNSBinding.h"
00016 #include <list>
00017 
00018 
00020 class HxServer : public HxServerBase
00021 {
00022 public:
00024                                     HxServer(int argc, char* argv[]);
00025 
00027                                     HxServer(int port);
00028 
00030     virtual                         ~HxServer();
00031 
00033     static HxServer*                instance();
00034 
00035     virtual void                    run();
00036     virtual void                    message(const char* msg);
00037     void                            shutdown(bool wait_for_completion = false);
00038 
00039     void                            bindToNameServer(const char* name, 
00040                                         const char* nsAddress);
00041 
00042     CORBA::Object_ptr               getInitialObject(const char* name);
00043     void                            addInitialObject(const char* name, 
00044                                         PortableServer::Servant servant);
00045 
00046     char*                           object_to_string(CORBA::Object_ptr obj);
00047     CORBA::Object_ptr               string_to_object(const char* ref);
00048 
00049     PortableServer::POA_ptr         getDataPOA();
00050     PortableServer::POA_ptr         getRootPOA();
00051     PortableServer::POA_ptr         getCurrentPOA();
00052     PortableServer::Servant         getCurrentServant();
00053     PortableServer::ObjectId*       getCurrentObjectId();
00054 
00055     virtual CORBA::Object_ptr       registerServant(PortableServer::Servant srv);
00056     virtual void                    unregisterServant(
00057                                         const PortableServer::ObjectId& oid);
00058     virtual PortableServer::Servant getServant(CORBA::Object_ptr obj);
00059 
00060     virtual HxCorba::RgbBuffer_ptr  createRgbBuffer();
00061     virtual void                    setRgbBufferArray(HxCorba::RgbBuffer_ptr buf, 
00062                                         int* array);
00063 
00064 protected:
00065     void                            init(int argc, char* argv[]);
00066 
00067     CORBA::ORB_ptr                  _orb;
00068     PortableServer::POA_var         _rootPOA;
00069     PortableServer::POA_var         _dataPOA;
00070     PortableServer::POA_var         _initialPOA;
00071     OB::BootManager_var             _bootMgr;
00072 
00073     PortableServer::Current_var     _poaCurrent;
00074 
00075     std::list<HxNSBinding*>         _nsBindings;
00076 
00077 private:
00078     static HxServer*                _inst;
00079     int                             _silent;
00080 };
00081 
00082 
00083 template<class TiedSvtT>
00084 inline typename TiedSvtT::HxT&
00085 HxGetTiedObject(typename TiedSvtT::CorbaT* obj, typename TiedSvtT::HxT& empty)
00086 {
00087     return HxGetTiedObject<TiedSvtT>(HxServer::instance(), obj, empty);
00088 }
00089 
00090 template<class TiedSvtT>
00091 inline typename TiedSvtT::HxT&
00092 HxGetTiedObject(typename TiedSvtT::CorbaT* obj)
00093 {
00094     static typename TiedSvtT::HxT temp;
00095     temp = typename TiedSvtT::HxT();
00096     return HxGetTiedObject<TiedSvtT>(HxServer::instance(), obj, temp);
00097                      
00098 }
00099 
00100 template<class TiedSvtT>
00101 inline typename TiedSvtT::CorbaT*
00102 HxRegisterTiedServant(const typename TiedSvtT::HxT& obj)
00103 {
00104     return HxRegisterTiedServant<TiedSvtT>(HxServer::instance(), obj);
00105 }
00106 
00107 template<class TiedSvtT, class SrcListT>
00108 inline typename TiedSvtT::SeqT*
00109 HxMakeTiedServantsList(SrcListT& lst)
00110 {
00111     return HxMakeTiedServantsList<TiedSvtT, SrcListT>(HxServer::instance(), lst);
00112 }
00113 
00114 template<class CorbaSeqT, class SrcListT>
00115 inline CorbaSeqT*
00116 HxMakeBasicList(SrcListT& lst)
00117 {
00118     return HxMakeBasicList<CorbaSeqT, SrcListT>(HxServer::instance(), lst);
00119 }
00120 
00121 template<class CorbaSeqT, class SrcListT>
00122 inline CorbaSeqT*
00123 HxMakeStringList(SrcListT& lst)
00124 {
00125     return HxMakeStringList<CorbaSeqT, SrcListT>(HxServer::instance(), lst);
00126 }
00127 
00128 template<class TiedSvtT, class DstListT>
00129 inline DstListT
00130 HxGetTiedObjectList(const typename TiedSvtT::SeqT& seq)
00131 {
00132     return HxGetTiedObjectList<TiedSvtT, DstListT>(HxServer::instance(), seq);
00133 }
00134 
00135 #endif

Generated on Tue Feb 3 14:20:11 2004 for CorbaReference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001