<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[CORBA Anwendung Gültigkeitsbereich]]></title><description><![CDATA[<p>Es geht um folgendes. Ich habe versucht mit mico die IDL zu kompelieren:</p>
<pre><code class="language-cpp">module broadcast{
        interface messages {
                /* Abfragen aller Nachrichten */
                string getmessages(in string rechnerid, out boolean getall);
                /* Senden einer Nachricht */
                long dropmessage(in string message, in long msgID);
                /* Abfragen der eindeutigen Nachrichtennummer */
                long getmsgid(in string rechnerid);
        };
};
</code></pre>
<p>klappt au. Heraus kamen die automatisch generierten Klassen messages.h und .cpp . Hab ich ans Ende ran gestellt weil ich denke das der Fehler in der Klasse client_test.cpp liegt. Die hab ich dann selber geschrieben und immer wieder kommt der mit den Meldungen:</p>
<blockquote>
<p>client_test.cpp:40: Fehler: »messages_var« wurde in diesem Gültigkeitsbereich nicht definiert<br />
client_test.cpp:40: Fehler: expected `;' before »f«<br />
client_test.cpp:42: Fehler: »getmessages« wurde in diesem Gültigkeitsbereich nicht definiert</p>
</blockquote>
<p>Prinzipeill gesehen müsste er darauf zugreifen können.<br />
Das ganze basiert auf dem Beispiel von:<br />
<a href="http://cplus.kompf.de/corbatut.html" rel="nofollow">http://cplus.kompf.de/corbatut.html</a></p>
<pre><code class="language-cpp">#include &lt;CORBA.h&gt;
#include &quot;messages.h&quot;
#include &lt;coss/CosNaming.h&gt;

#include &lt;iostream&gt; 

using namespace std;

int main( int argc, char **argv)
{
    CORBA::ORB_var orb = CORBA::ORB_init( argc, argv);

    int rc = 0;
    if (argc != 3) {
        cerr &lt;&lt; &quot;usage: &quot; &lt;&lt; argv[0] &lt;&lt; &quot; name number\n&quot;;
        exit(1);
    }
    try {
        // resolve the naming service
        CORBA::Object_var nsobj =
            orb-&gt;resolve_initial_references (&quot;NameService&quot;);
        if (CORBA::is_nil( nsobj)) {
            cerr &lt;&lt; &quot;can't resolve NameService\n&quot;;
            exit(1);
        }
        // narrow the root naming context
        CosNaming::NamingContext_var nc =
            CosNaming::NamingContext::_narrow (nsobj);

        // create a name component
        CosNaming::Name name;
        name.length (1);
        name[0].id = CORBA::string_dup (&quot;TestServer&quot;);
        name[0].kind = CORBA::string_dup (&quot;&quot;);

        CORBA::Object_var obj = nc-&gt;resolve( name);

        messages_var f = messages::_narrow( obj);

	getmessages(argv[1], argv[2]); 
	 }
    catch(CORBA::SystemException_catch&amp; ex)
    {
        ex -&gt; _print(cerr);
        cerr &lt;&lt; endl;
        rc = 1;
    }

    return rc;
}
</code></pre>
<p>die messages.cpp:</p>
<pre><code>/*
 *  MICO --- an Open Source CORBA implementation
 *  Copyright (c) 1997-2006 by The Mico Team
 *
 *  This file was automatically generated. DO NOT EDIT!
 */

#include &lt;messages.h&gt;

using namespace std;

//--------------------------------------------------------
//  Implementation of stubs
//--------------------------------------------------------

/*
 * Base interface for class messages
 */

broadcast::messages::~messages()
{
}

void *
broadcast::messages::_narrow_helper( const char *_repoid )
{
  if( strcmp( _repoid, &quot;IDL:broadcast/messages:1.0&quot; ) == 0 )
    return (void *)this;
  return NULL;
}

broadcast::messages_ptr
broadcast::messages::_narrow( CORBA::Object_ptr _obj )
{
  broadcast::messages_ptr _o;
  if( !CORBA::is_nil( _obj ) ) {
    void *_p;
    if( (_p = _obj-&gt;_narrow_helper( &quot;IDL:broadcast/messages:1.0&quot; )))
      return _duplicate( (broadcast::messages_ptr) _p );
    if (!strcmp (_obj-&gt;_repoid(), &quot;IDL:broadcast/messages:1.0&quot;) || _obj-&gt;_is_a_remote (&quot;IDL:broadcast/messages:1.0&quot;)) {
      _o = new broadcast::messages_stub;
      _o-&gt;CORBA::Object::operator=( *_obj );
      return _o;
    }
  }
  return _nil();
}

broadcast::messages_ptr
broadcast::messages::_narrow( CORBA::AbstractBase_ptr _obj )
{
  return _narrow (_obj-&gt;_to_object());
}

class _Marshaller_broadcast_messages : public ::CORBA::StaticTypeInfo {
    typedef broadcast::messages_ptr _MICO_T;
  public:
    ~_Marshaller_broadcast_messages();
    StaticValueType create () const;
    void assign (StaticValueType dst, const StaticValueType src) const;
    void free (StaticValueType) const;
    void release (StaticValueType) const;
    ::CORBA::Boolean demarshal (::CORBA::DataDecoder&amp;, StaticValueType) const;
    void marshal (::CORBA::DataEncoder &amp;, StaticValueType) const;
};

_Marshaller_broadcast_messages::~_Marshaller_broadcast_messages()
{
}

::CORBA::StaticValueType _Marshaller_broadcast_messages::create() const
{
  return (StaticValueType) new _MICO_T( 0 );
}

void _Marshaller_broadcast_messages::assign( StaticValueType d, const StaticValueType s ) const
{
  *(_MICO_T*) d = ::broadcast::messages::_duplicate( *(_MICO_T*) s );
}

void _Marshaller_broadcast_messages::free( StaticValueType v ) const
{
  ::CORBA::release( *(_MICO_T *) v );
  delete (_MICO_T*) v;
}

void _Marshaller_broadcast_messages::release( StaticValueType v ) const
{
  ::CORBA::release( *(_MICO_T *) v );
}

::CORBA::Boolean _Marshaller_broadcast_messages::demarshal( ::CORBA::DataDecoder &amp;dc, StaticValueType v ) const
{
  ::CORBA::Object_ptr obj;
  if (!::CORBA::_stc_Object-&gt;demarshal(dc, &amp;obj))
    return FALSE;
  *(_MICO_T *) v = ::broadcast::messages::_narrow( obj );
  ::CORBA::Boolean ret = ::CORBA::is_nil (obj) || !::CORBA::is_nil (*(_MICO_T *)v);
  ::CORBA::release (obj);
  return ret;
}

void _Marshaller_broadcast_messages::marshal( ::CORBA::DataEncoder &amp;ec, StaticValueType v ) const
{
  ::CORBA::Object_ptr obj = *(_MICO_T *) v;
  ::CORBA::_stc_Object-&gt;marshal( ec, &amp;obj );
}

::CORBA::StaticTypeInfo *_marshaller_broadcast_messages;

/*
 * Stub interface for class messages
 */

broadcast::messages_stub::~messages_stub()
{
}

#ifndef MICO_CONF_NO_POA

void *
POA_broadcast::messages::_narrow_helper (const char * repoid)
{
  if (strcmp (repoid, &quot;IDL:broadcast/messages:1.0&quot;) == 0) {
    return (void *) this;
  }
  return NULL;
}

POA_broadcast::messages *
POA_broadcast::messages::_narrow (PortableServer::Servant serv) 
{
  void * p;
  if ((p = serv-&gt;_narrow_helper (&quot;IDL:broadcast/messages:1.0&quot;)) != NULL) {
    serv-&gt;_add_ref ();
    return (POA_broadcast::messages *) p;
  }
  return NULL;
}

broadcast::messages_stub_clp::messages_stub_clp ()
{
}

broadcast::messages_stub_clp::messages_stub_clp (PortableServer::POA_ptr poa, CORBA::Object_ptr obj)
  : CORBA::Object(*obj), PortableServer::StubBase(poa)
{
}

broadcast::messages_stub_clp::~messages_stub_clp ()
{
}

#endif // MICO_CONF_NO_POA

char* broadcast::messages_stub::getmessages( const char* _par_rechnerid, CORBA::Boolean_out _par_getall )
{
  CORBA::StaticAny _sa_rechnerid( CORBA::_stc_string, &amp;_par_rechnerid );
  CORBA::StaticAny _sa_getall( CORBA::_stc_boolean, &amp;_par_getall );
  char* _res = NULL;
  CORBA::StaticAny __res( CORBA::_stc_string, &amp;_res );

  CORBA::StaticRequest __req( this, &quot;getmessages&quot; );
  __req.add_in_arg( &amp;_sa_rechnerid );
  __req.add_out_arg( &amp;_sa_getall );
  __req.set_result( &amp;__res );

  __req.invoke();

  mico_sii_throw( &amp;__req, 
    0);
  return _res;
}

#ifndef MICO_CONF_NO_POA

char*
broadcast::messages_stub_clp::getmessages( const char* _par_rechnerid, CORBA::Boolean_out _par_getall )
{
  PortableServer::Servant _serv = _preinvoke ();
  if (_serv) {
    POA_broadcast::messages * _myserv = POA_broadcast::messages::_narrow (_serv);
    if (_myserv) {
      char* __res;

      #ifdef HAVE_EXCEPTIONS
      try {
      #endif
        __res = _myserv-&gt;getmessages(_par_rechnerid, _par_getall);
      #ifdef HAVE_EXCEPTIONS
      }
      catch (...) {
        _myserv-&gt;_remove_ref();
        _postinvoke();
        throw;
      }
      #endif

      _myserv-&gt;_remove_ref();
      _postinvoke ();
      return __res;
    }
    _postinvoke ();
  }

  return broadcast::messages_stub::getmessages(_par_rechnerid, _par_getall);
}

#endif // MICO_CONF_NO_POA

CORBA::Long broadcast::messages_stub::dropmessage( const char* _par_message, CORBA::Long _par_msgID )
{
  CORBA::StaticAny _sa_message( CORBA::_stc_string, &amp;_par_message );
  CORBA::StaticAny _sa_msgID( CORBA::_stc_long, &amp;_par_msgID );
  CORBA::Long _res;
  CORBA::StaticAny __res( CORBA::_stc_long, &amp;_res );

  CORBA::StaticRequest __req( this, &quot;dropmessage&quot; );
  __req.add_in_arg( &amp;_sa_message );
  __req.add_in_arg( &amp;_sa_msgID );
  __req.set_result( &amp;__res );

  __req.invoke();

  mico_sii_throw( &amp;__req, 
    0);
  return _res;
}

#ifndef MICO_CONF_NO_POA

CORBA::Long
broadcast::messages_stub_clp::dropmessage( const char* _par_message, CORBA::Long _par_msgID )
{
  PortableServer::Servant _serv = _preinvoke ();
  if (_serv) {
    POA_broadcast::messages * _myserv = POA_broadcast::messages::_narrow (_serv);
    if (_myserv) {
      CORBA::Long __res;

      #ifdef HAVE_EXCEPTIONS
      try {
      #endif
        __res = _myserv-&gt;dropmessage(_par_message, _par_msgID);
      #ifdef HAVE_EXCEPTIONS
      }
      catch (...) {
        _myserv-&gt;_remove_ref();
        _postinvoke();
        throw;
      }
      #endif

      _myserv-&gt;_remove_ref();
      _postinvoke ();
      return __res;
    }
    _postinvoke ();
  }

  return broadcast::messages_stub::dropmessage(_par_message, _par_msgID);
}

#endif // MICO_CONF_NO_POA

CORBA::Long broadcast::messages_stub::getmsgid( const char* _par_rechnerid )
{
  CORBA::StaticAny _sa_rechnerid( CORBA::_stc_string, &amp;_par_rechnerid );
  CORBA::Long _res;
  CORBA::StaticAny __res( CORBA::_stc_long, &amp;_res );

  CORBA::StaticRequest __req( this, &quot;getmsgid&quot; );
  __req.add_in_arg( &amp;_sa_rechnerid );
  __req.set_result( &amp;__res );

  __req.invoke();

  mico_sii_throw( &amp;__req, 
    0);
  return _res;
}

#ifndef MICO_CONF_NO_POA

CORBA::Long
broadcast::messages_stub_clp::getmsgid( const char* _par_rechnerid )
{
  PortableServer::Servant _serv = _preinvoke ();
  if (_serv) {
    POA_broadcast::messages * _myserv = POA_broadcast::messages::_narrow (_serv);
    if (_myserv) {
      CORBA::Long __res;

      #ifdef HAVE_EXCEPTIONS
      try {
      #endif
        __res = _myserv-&gt;getmsgid(_par_rechnerid);
      #ifdef HAVE_EXCEPTIONS
      }
      catch (...) {
        _myserv-&gt;_remove_ref();
        _postinvoke();
        throw;
      }
      #endif

      _myserv-&gt;_remove_ref();
      _postinvoke ();
      return __res;
    }
    _postinvoke ();
  }

  return broadcast::messages_stub::getmsgid(_par_rechnerid);
}

#endif // MICO_CONF_NO_POA

struct __tc_init_MESSAGES {
  __tc_init_MESSAGES()
  {
    _marshaller_broadcast_messages = new _Marshaller_broadcast_messages;
  }

  ~__tc_init_MESSAGES()
  {
    delete static_cast&lt;_Marshaller_broadcast_messages*&gt;(_marshaller_broadcast_messages);
  }
};

static __tc_init_MESSAGES __init_MESSAGES;

//--------------------------------------------------------
//  Implementation of skeletons
//--------------------------------------------------------

// PortableServer Skeleton Class for interface broadcast::messages
POA_broadcast::messages::~messages()
{
}

::broadcast::messages_ptr
POA_broadcast::messages::_this ()
{
  CORBA::Object_var obj = PortableServer::ServantBase::_this();
  return ::broadcast::messages::_narrow (obj);
}

CORBA::Boolean
POA_broadcast::messages::_is_a (const char * repoid)
{
  if (strcmp (repoid, &quot;IDL:broadcast/messages:1.0&quot;) == 0) {
    return TRUE;
  }
  return FALSE;
}

CORBA::InterfaceDef_ptr
POA_broadcast::messages::_get_interface ()
{
  CORBA::InterfaceDef_ptr ifd = PortableServer::ServantBase::_get_interface (&quot;IDL:broadcast/messages:1.0&quot;);

  if (CORBA::is_nil (ifd)) {
    mico_throw (CORBA::OBJ_ADAPTER (0, CORBA::COMPLETED_NO));
  }

  return ifd;
}

CORBA::RepositoryId
POA_broadcast::messages::_primary_interface (const PortableServer::ObjectId &amp;, PortableServer::POA_ptr)
{
  return CORBA::string_dup (&quot;IDL:broadcast/messages:1.0&quot;);
}

CORBA::Object_ptr
POA_broadcast::messages::_make_stub (PortableServer::POA_ptr poa, CORBA::Object_ptr obj)
{
  return new ::broadcast::messages_stub_clp (poa, obj);
}

bool
POA_broadcast::messages::dispatch (CORBA::StaticServerRequest_ptr __req)
{
  #ifdef HAVE_EXCEPTIONS
  try {
  #endif
    if( strcmp( __req-&gt;op_name(), &quot;getmessages&quot; ) == 0 ) {
      CORBA::String_var _par_rechnerid;
      CORBA::StaticAny _sa_rechnerid( CORBA::_stc_string, &amp;_par_rechnerid._for_demarshal() );
      CORBA::Boolean _par_getall;
      CORBA::StaticAny _sa_getall( CORBA::_stc_boolean, &amp;_par_getall );

      char* _res;
      CORBA::StaticAny __res( CORBA::_stc_string, &amp;_res );
      __req-&gt;add_in_arg( &amp;_sa_rechnerid );
      __req-&gt;add_out_arg( &amp;_sa_getall );
      __req-&gt;set_result( &amp;__res );

      if( !__req-&gt;read_args() )
        return true;

      _res = getmessages( _par_rechnerid.inout(), _par_getall );
      __req-&gt;write_results();
      CORBA::string_free( _res );
      return true;
    }
    if( strcmp( __req-&gt;op_name(), &quot;dropmessage&quot; ) == 0 ) {
      CORBA::String_var _par_message;
      CORBA::StaticAny _sa_message( CORBA::_stc_string, &amp;_par_message._for_demarshal() );
      CORBA::Long _par_msgID;
      CORBA::StaticAny _sa_msgID( CORBA::_stc_long, &amp;_par_msgID );

      CORBA::Long _res;
      CORBA::StaticAny __res( CORBA::_stc_long, &amp;_res );
      __req-&gt;add_in_arg( &amp;_sa_message );
      __req-&gt;add_in_arg( &amp;_sa_msgID );
      __req-&gt;set_result( &amp;__res );

      if( !__req-&gt;read_args() )
        return true;

      _res = dropmessage( _par_message.inout(), _par_msgID );
      __req-&gt;write_results();
      return true;
    }
    if( strcmp( __req-&gt;op_name(), &quot;getmsgid&quot; ) == 0 ) {
      CORBA::String_var _par_rechnerid;
      CORBA::StaticAny _sa_rechnerid( CORBA::_stc_string, &amp;_par_rechnerid._for_demarshal() );

      CORBA::Long _res;
      CORBA::StaticAny __res( CORBA::_stc_long, &amp;_res );
      __req-&gt;add_in_arg( &amp;_sa_rechnerid );
      __req-&gt;set_result( &amp;__res );

      if( !__req-&gt;read_args() )
        return true;

      _res = getmsgid( _par_rechnerid.inout() );
      __req-&gt;write_results();
      return true;
    }
  #ifdef HAVE_EXCEPTIONS
  } catch( CORBA::SystemException_catch &amp;_ex ) {
    __req-&gt;set_exception( _ex-&gt;_clone() );
    __req-&gt;write_results();
    return true;
  } catch( ... ) {
    CORBA::UNKNOWN _ex (CORBA::OMGVMCID | 1, CORBA::COMPLETED_MAYBE);
    __req-&gt;set_exception (_ex-&gt;_clone());
    __req-&gt;write_results ();
    return true;
  }
  #endif

  return false;
}

void
POA_broadcast::messages::invoke (CORBA::StaticServerRequest_ptr __req)
{
  if (dispatch (__req)) {
      return;
  }

  CORBA::Exception * ex = 
    new CORBA::BAD_OPERATION (0, CORBA::COMPLETED_NO);
  __req-&gt;set_exception (ex);
  __req-&gt;write_results();
}
</code></pre>
<p>und die messages.h</p>
<pre><code class="language-cpp">/*
 *  MICO --- an Open Source CORBA implementation
 *  Copyright (c) 1997-2006 by The Mico Team
 *
 *  This file was automatically generated. DO NOT EDIT!
 */

#include &lt;CORBA.h&gt;
#include &lt;mico/throw.h&gt;

#ifndef __MESSAGES_H__
#define __MESSAGES_H__

namespace broadcast
{

class messages;
typedef messages *messages_ptr;
typedef messages_ptr messagesRef;
typedef ObjVar&lt; messages &gt; messages_var;
typedef ObjOut&lt; messages &gt; messages_out;

}

namespace broadcast
{

/*
 * Base class and common definitions for interface messages
 */

class messages : 
  virtual public CORBA::Object
{
  public:
    virtual ~messages();

    #ifdef HAVE_TYPEDEF_OVERLOAD
    typedef messages_ptr _ptr_type;
    typedef messages_var _var_type;
    #endif

    static messages_ptr _narrow( CORBA::Object_ptr obj );
    static messages_ptr _narrow( CORBA::AbstractBase_ptr obj );
    static messages_ptr _duplicate( messages_ptr _obj )
    {
      CORBA::Object::_duplicate (_obj);
      return _obj;
    }

    static messages_ptr _nil()
    {
      return 0;
    }

    virtual void *_narrow_helper( const char *repoid );

    virtual char* getmessages( const char* rechnerid, CORBA::Boolean_out getall ) = 0;
    virtual CORBA::Long dropmessage( const char* message, CORBA::Long msgID ) = 0;
    virtual CORBA::Long getmsgid( const char* rechnerid ) = 0;

  protected:
    messages() {};
  private:
    messages( const messages&amp; );
    void operator=( const messages&amp; );
};

// Stub for interface messages
class messages_stub:
  virtual public messages
{
  public:
    virtual ~messages_stub();
    char* getmessages( const char* rechnerid, CORBA::Boolean_out getall );
    CORBA::Long dropmessage( const char* message, CORBA::Long msgID );
    CORBA::Long getmsgid( const char* rechnerid );

  private:
    void operator=( const messages_stub&amp; );
};

#ifndef MICO_CONF_NO_POA

class messages_stub_clp :
  virtual public messages_stub,
  virtual public PortableServer::StubBase
{
  public:
    messages_stub_clp (PortableServer::POA_ptr, CORBA::Object_ptr);
    virtual ~messages_stub_clp ();
    char* getmessages( const char* rechnerid, CORBA::Boolean_out getall );
    CORBA::Long dropmessage( const char* message, CORBA::Long msgID );
    CORBA::Long getmsgid( const char* rechnerid );

  protected:
    messages_stub_clp ();
  private:
    void operator=( const messages_stub_clp &amp; );
};

#endif // MICO_CONF_NO_POA

}

#ifndef MICO_CONF_NO_POA

namespace POA_broadcast
{

class messages : virtual public PortableServer::StaticImplementation
{
  public:
    virtual ~messages ();
    broadcast::messages_ptr _this ();
    bool dispatch (CORBA::StaticServerRequest_ptr);
    virtual void invoke (CORBA::StaticServerRequest_ptr);
    virtual CORBA::Boolean _is_a (const char *);
    virtual CORBA::InterfaceDef_ptr _get_interface ();
    virtual CORBA::RepositoryId _primary_interface (const PortableServer::ObjectId &amp;, PortableServer::POA_ptr);

    virtual void * _narrow_helper (const char *);
    static messages * _narrow (PortableServer::Servant);
    virtual CORBA::Object_ptr _make_stub (PortableServer::POA_ptr, CORBA::Object_ptr);

    virtual char* getmessages( const char* rechnerid, CORBA::Boolean_out getall ) = 0;
    virtual CORBA::Long dropmessage( const char* message, CORBA::Long msgID ) = 0;
    virtual CORBA::Long getmsgid( const char* rechnerid ) = 0;

  protected:
    messages () {};

  private:
    messages (const messages &amp;);
    void operator= (const messages &amp;);
};

}

#endif // MICO_CONF_NO_POA

extern CORBA::StaticTypeInfo *_marshaller_broadcast_messages;

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/252119/corba-anwendung-gültigkeitsbereich</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 01:24:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252119.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Oct 2009 20:08:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CORBA Anwendung Gültigkeitsbereich on Wed, 14 Oct 2009 20:08:09 GMT]]></title><description><![CDATA[<p>Es geht um folgendes. Ich habe versucht mit mico die IDL zu kompelieren:</p>
<pre><code class="language-cpp">module broadcast{
        interface messages {
                /* Abfragen aller Nachrichten */
                string getmessages(in string rechnerid, out boolean getall);
                /* Senden einer Nachricht */
                long dropmessage(in string message, in long msgID);
                /* Abfragen der eindeutigen Nachrichtennummer */
                long getmsgid(in string rechnerid);
        };
};
</code></pre>
<p>klappt au. Heraus kamen die automatisch generierten Klassen messages.h und .cpp . Hab ich ans Ende ran gestellt weil ich denke das der Fehler in der Klasse client_test.cpp liegt. Die hab ich dann selber geschrieben und immer wieder kommt der mit den Meldungen:</p>
<blockquote>
<p>client_test.cpp:40: Fehler: »messages_var« wurde in diesem Gültigkeitsbereich nicht definiert<br />
client_test.cpp:40: Fehler: expected `;' before »f«<br />
client_test.cpp:42: Fehler: »getmessages« wurde in diesem Gültigkeitsbereich nicht definiert</p>
</blockquote>
<p>Prinzipeill gesehen müsste er darauf zugreifen können.<br />
Das ganze basiert auf dem Beispiel von:<br />
<a href="http://cplus.kompf.de/corbatut.html" rel="nofollow">http://cplus.kompf.de/corbatut.html</a></p>
<pre><code class="language-cpp">#include &lt;CORBA.h&gt;
#include &quot;messages.h&quot;
#include &lt;coss/CosNaming.h&gt;

#include &lt;iostream&gt; 

using namespace std;

int main( int argc, char **argv)
{
    CORBA::ORB_var orb = CORBA::ORB_init( argc, argv);

    int rc = 0;
    if (argc != 3) {
        cerr &lt;&lt; &quot;usage: &quot; &lt;&lt; argv[0] &lt;&lt; &quot; name number\n&quot;;
        exit(1);
    }
    try {
        // resolve the naming service
        CORBA::Object_var nsobj =
            orb-&gt;resolve_initial_references (&quot;NameService&quot;);
        if (CORBA::is_nil( nsobj)) {
            cerr &lt;&lt; &quot;can't resolve NameService\n&quot;;
            exit(1);
        }
        // narrow the root naming context
        CosNaming::NamingContext_var nc =
            CosNaming::NamingContext::_narrow (nsobj);

        // create a name component
        CosNaming::Name name;
        name.length (1);
        name[0].id = CORBA::string_dup (&quot;TestServer&quot;);
        name[0].kind = CORBA::string_dup (&quot;&quot;);

        CORBA::Object_var obj = nc-&gt;resolve( name);

        messages_var f = messages::_narrow( obj);

	getmessages(argv[1], argv[2]); 
	 }
    catch(CORBA::SystemException_catch&amp; ex)
    {
        ex -&gt; _print(cerr);
        cerr &lt;&lt; endl;
        rc = 1;
    }

    return rc;
}
</code></pre>
<p>die messages.cpp:</p>
<pre><code>/*
 *  MICO --- an Open Source CORBA implementation
 *  Copyright (c) 1997-2006 by The Mico Team
 *
 *  This file was automatically generated. DO NOT EDIT!
 */

#include &lt;messages.h&gt;

using namespace std;

//--------------------------------------------------------
//  Implementation of stubs
//--------------------------------------------------------

/*
 * Base interface for class messages
 */

broadcast::messages::~messages()
{
}

void *
broadcast::messages::_narrow_helper( const char *_repoid )
{
  if( strcmp( _repoid, &quot;IDL:broadcast/messages:1.0&quot; ) == 0 )
    return (void *)this;
  return NULL;
}

broadcast::messages_ptr
broadcast::messages::_narrow( CORBA::Object_ptr _obj )
{
  broadcast::messages_ptr _o;
  if( !CORBA::is_nil( _obj ) ) {
    void *_p;
    if( (_p = _obj-&gt;_narrow_helper( &quot;IDL:broadcast/messages:1.0&quot; )))
      return _duplicate( (broadcast::messages_ptr) _p );
    if (!strcmp (_obj-&gt;_repoid(), &quot;IDL:broadcast/messages:1.0&quot;) || _obj-&gt;_is_a_remote (&quot;IDL:broadcast/messages:1.0&quot;)) {
      _o = new broadcast::messages_stub;
      _o-&gt;CORBA::Object::operator=( *_obj );
      return _o;
    }
  }
  return _nil();
}

broadcast::messages_ptr
broadcast::messages::_narrow( CORBA::AbstractBase_ptr _obj )
{
  return _narrow (_obj-&gt;_to_object());
}

class _Marshaller_broadcast_messages : public ::CORBA::StaticTypeInfo {
    typedef broadcast::messages_ptr _MICO_T;
  public:
    ~_Marshaller_broadcast_messages();
    StaticValueType create () const;
    void assign (StaticValueType dst, const StaticValueType src) const;
    void free (StaticValueType) const;
    void release (StaticValueType) const;
    ::CORBA::Boolean demarshal (::CORBA::DataDecoder&amp;, StaticValueType) const;
    void marshal (::CORBA::DataEncoder &amp;, StaticValueType) const;
};

_Marshaller_broadcast_messages::~_Marshaller_broadcast_messages()
{
}

::CORBA::StaticValueType _Marshaller_broadcast_messages::create() const
{
  return (StaticValueType) new _MICO_T( 0 );
}

void _Marshaller_broadcast_messages::assign( StaticValueType d, const StaticValueType s ) const
{
  *(_MICO_T*) d = ::broadcast::messages::_duplicate( *(_MICO_T*) s );
}

void _Marshaller_broadcast_messages::free( StaticValueType v ) const
{
  ::CORBA::release( *(_MICO_T *) v );
  delete (_MICO_T*) v;
}

void _Marshaller_broadcast_messages::release( StaticValueType v ) const
{
  ::CORBA::release( *(_MICO_T *) v );
}

::CORBA::Boolean _Marshaller_broadcast_messages::demarshal( ::CORBA::DataDecoder &amp;dc, StaticValueType v ) const
{
  ::CORBA::Object_ptr obj;
  if (!::CORBA::_stc_Object-&gt;demarshal(dc, &amp;obj))
    return FALSE;
  *(_MICO_T *) v = ::broadcast::messages::_narrow( obj );
  ::CORBA::Boolean ret = ::CORBA::is_nil (obj) || !::CORBA::is_nil (*(_MICO_T *)v);
  ::CORBA::release (obj);
  return ret;
}

void _Marshaller_broadcast_messages::marshal( ::CORBA::DataEncoder &amp;ec, StaticValueType v ) const
{
  ::CORBA::Object_ptr obj = *(_MICO_T *) v;
  ::CORBA::_stc_Object-&gt;marshal( ec, &amp;obj );
}

::CORBA::StaticTypeInfo *_marshaller_broadcast_messages;

/*
 * Stub interface for class messages
 */

broadcast::messages_stub::~messages_stub()
{
}

#ifndef MICO_CONF_NO_POA

void *
POA_broadcast::messages::_narrow_helper (const char * repoid)
{
  if (strcmp (repoid, &quot;IDL:broadcast/messages:1.0&quot;) == 0) {
    return (void *) this;
  }
  return NULL;
}

POA_broadcast::messages *
POA_broadcast::messages::_narrow (PortableServer::Servant serv) 
{
  void * p;
  if ((p = serv-&gt;_narrow_helper (&quot;IDL:broadcast/messages:1.0&quot;)) != NULL) {
    serv-&gt;_add_ref ();
    return (POA_broadcast::messages *) p;
  }
  return NULL;
}

broadcast::messages_stub_clp::messages_stub_clp ()
{
}

broadcast::messages_stub_clp::messages_stub_clp (PortableServer::POA_ptr poa, CORBA::Object_ptr obj)
  : CORBA::Object(*obj), PortableServer::StubBase(poa)
{
}

broadcast::messages_stub_clp::~messages_stub_clp ()
{
}

#endif // MICO_CONF_NO_POA

char* broadcast::messages_stub::getmessages( const char* _par_rechnerid, CORBA::Boolean_out _par_getall )
{
  CORBA::StaticAny _sa_rechnerid( CORBA::_stc_string, &amp;_par_rechnerid );
  CORBA::StaticAny _sa_getall( CORBA::_stc_boolean, &amp;_par_getall );
  char* _res = NULL;
  CORBA::StaticAny __res( CORBA::_stc_string, &amp;_res );

  CORBA::StaticRequest __req( this, &quot;getmessages&quot; );
  __req.add_in_arg( &amp;_sa_rechnerid );
  __req.add_out_arg( &amp;_sa_getall );
  __req.set_result( &amp;__res );

  __req.invoke();

  mico_sii_throw( &amp;__req, 
    0);
  return _res;
}

#ifndef MICO_CONF_NO_POA

char*
broadcast::messages_stub_clp::getmessages( const char* _par_rechnerid, CORBA::Boolean_out _par_getall )
{
  PortableServer::Servant _serv = _preinvoke ();
  if (_serv) {
    POA_broadcast::messages * _myserv = POA_broadcast::messages::_narrow (_serv);
    if (_myserv) {
      char* __res;

      #ifdef HAVE_EXCEPTIONS
      try {
      #endif
        __res = _myserv-&gt;getmessages(_par_rechnerid, _par_getall);
      #ifdef HAVE_EXCEPTIONS
      }
      catch (...) {
        _myserv-&gt;_remove_ref();
        _postinvoke();
        throw;
      }
      #endif

      _myserv-&gt;_remove_ref();
      _postinvoke ();
      return __res;
    }
    _postinvoke ();
  }

  return broadcast::messages_stub::getmessages(_par_rechnerid, _par_getall);
}

#endif // MICO_CONF_NO_POA

CORBA::Long broadcast::messages_stub::dropmessage( const char* _par_message, CORBA::Long _par_msgID )
{
  CORBA::StaticAny _sa_message( CORBA::_stc_string, &amp;_par_message );
  CORBA::StaticAny _sa_msgID( CORBA::_stc_long, &amp;_par_msgID );
  CORBA::Long _res;
  CORBA::StaticAny __res( CORBA::_stc_long, &amp;_res );

  CORBA::StaticRequest __req( this, &quot;dropmessage&quot; );
  __req.add_in_arg( &amp;_sa_message );
  __req.add_in_arg( &amp;_sa_msgID );
  __req.set_result( &amp;__res );

  __req.invoke();

  mico_sii_throw( &amp;__req, 
    0);
  return _res;
}

#ifndef MICO_CONF_NO_POA

CORBA::Long
broadcast::messages_stub_clp::dropmessage( const char* _par_message, CORBA::Long _par_msgID )
{
  PortableServer::Servant _serv = _preinvoke ();
  if (_serv) {
    POA_broadcast::messages * _myserv = POA_broadcast::messages::_narrow (_serv);
    if (_myserv) {
      CORBA::Long __res;

      #ifdef HAVE_EXCEPTIONS
      try {
      #endif
        __res = _myserv-&gt;dropmessage(_par_message, _par_msgID);
      #ifdef HAVE_EXCEPTIONS
      }
      catch (...) {
        _myserv-&gt;_remove_ref();
        _postinvoke();
        throw;
      }
      #endif

      _myserv-&gt;_remove_ref();
      _postinvoke ();
      return __res;
    }
    _postinvoke ();
  }

  return broadcast::messages_stub::dropmessage(_par_message, _par_msgID);
}

#endif // MICO_CONF_NO_POA

CORBA::Long broadcast::messages_stub::getmsgid( const char* _par_rechnerid )
{
  CORBA::StaticAny _sa_rechnerid( CORBA::_stc_string, &amp;_par_rechnerid );
  CORBA::Long _res;
  CORBA::StaticAny __res( CORBA::_stc_long, &amp;_res );

  CORBA::StaticRequest __req( this, &quot;getmsgid&quot; );
  __req.add_in_arg( &amp;_sa_rechnerid );
  __req.set_result( &amp;__res );

  __req.invoke();

  mico_sii_throw( &amp;__req, 
    0);
  return _res;
}

#ifndef MICO_CONF_NO_POA

CORBA::Long
broadcast::messages_stub_clp::getmsgid( const char* _par_rechnerid )
{
  PortableServer::Servant _serv = _preinvoke ();
  if (_serv) {
    POA_broadcast::messages * _myserv = POA_broadcast::messages::_narrow (_serv);
    if (_myserv) {
      CORBA::Long __res;

      #ifdef HAVE_EXCEPTIONS
      try {
      #endif
        __res = _myserv-&gt;getmsgid(_par_rechnerid);
      #ifdef HAVE_EXCEPTIONS
      }
      catch (...) {
        _myserv-&gt;_remove_ref();
        _postinvoke();
        throw;
      }
      #endif

      _myserv-&gt;_remove_ref();
      _postinvoke ();
      return __res;
    }
    _postinvoke ();
  }

  return broadcast::messages_stub::getmsgid(_par_rechnerid);
}

#endif // MICO_CONF_NO_POA

struct __tc_init_MESSAGES {
  __tc_init_MESSAGES()
  {
    _marshaller_broadcast_messages = new _Marshaller_broadcast_messages;
  }

  ~__tc_init_MESSAGES()
  {
    delete static_cast&lt;_Marshaller_broadcast_messages*&gt;(_marshaller_broadcast_messages);
  }
};

static __tc_init_MESSAGES __init_MESSAGES;

//--------------------------------------------------------
//  Implementation of skeletons
//--------------------------------------------------------

// PortableServer Skeleton Class for interface broadcast::messages
POA_broadcast::messages::~messages()
{
}

::broadcast::messages_ptr
POA_broadcast::messages::_this ()
{
  CORBA::Object_var obj = PortableServer::ServantBase::_this();
  return ::broadcast::messages::_narrow (obj);
}

CORBA::Boolean
POA_broadcast::messages::_is_a (const char * repoid)
{
  if (strcmp (repoid, &quot;IDL:broadcast/messages:1.0&quot;) == 0) {
    return TRUE;
  }
  return FALSE;
}

CORBA::InterfaceDef_ptr
POA_broadcast::messages::_get_interface ()
{
  CORBA::InterfaceDef_ptr ifd = PortableServer::ServantBase::_get_interface (&quot;IDL:broadcast/messages:1.0&quot;);

  if (CORBA::is_nil (ifd)) {
    mico_throw (CORBA::OBJ_ADAPTER (0, CORBA::COMPLETED_NO));
  }

  return ifd;
}

CORBA::RepositoryId
POA_broadcast::messages::_primary_interface (const PortableServer::ObjectId &amp;, PortableServer::POA_ptr)
{
  return CORBA::string_dup (&quot;IDL:broadcast/messages:1.0&quot;);
}

CORBA::Object_ptr
POA_broadcast::messages::_make_stub (PortableServer::POA_ptr poa, CORBA::Object_ptr obj)
{
  return new ::broadcast::messages_stub_clp (poa, obj);
}

bool
POA_broadcast::messages::dispatch (CORBA::StaticServerRequest_ptr __req)
{
  #ifdef HAVE_EXCEPTIONS
  try {
  #endif
    if( strcmp( __req-&gt;op_name(), &quot;getmessages&quot; ) == 0 ) {
      CORBA::String_var _par_rechnerid;
      CORBA::StaticAny _sa_rechnerid( CORBA::_stc_string, &amp;_par_rechnerid._for_demarshal() );
      CORBA::Boolean _par_getall;
      CORBA::StaticAny _sa_getall( CORBA::_stc_boolean, &amp;_par_getall );

      char* _res;
      CORBA::StaticAny __res( CORBA::_stc_string, &amp;_res );
      __req-&gt;add_in_arg( &amp;_sa_rechnerid );
      __req-&gt;add_out_arg( &amp;_sa_getall );
      __req-&gt;set_result( &amp;__res );

      if( !__req-&gt;read_args() )
        return true;

      _res = getmessages( _par_rechnerid.inout(), _par_getall );
      __req-&gt;write_results();
      CORBA::string_free( _res );
      return true;
    }
    if( strcmp( __req-&gt;op_name(), &quot;dropmessage&quot; ) == 0 ) {
      CORBA::String_var _par_message;
      CORBA::StaticAny _sa_message( CORBA::_stc_string, &amp;_par_message._for_demarshal() );
      CORBA::Long _par_msgID;
      CORBA::StaticAny _sa_msgID( CORBA::_stc_long, &amp;_par_msgID );

      CORBA::Long _res;
      CORBA::StaticAny __res( CORBA::_stc_long, &amp;_res );
      __req-&gt;add_in_arg( &amp;_sa_message );
      __req-&gt;add_in_arg( &amp;_sa_msgID );
      __req-&gt;set_result( &amp;__res );

      if( !__req-&gt;read_args() )
        return true;

      _res = dropmessage( _par_message.inout(), _par_msgID );
      __req-&gt;write_results();
      return true;
    }
    if( strcmp( __req-&gt;op_name(), &quot;getmsgid&quot; ) == 0 ) {
      CORBA::String_var _par_rechnerid;
      CORBA::StaticAny _sa_rechnerid( CORBA::_stc_string, &amp;_par_rechnerid._for_demarshal() );

      CORBA::Long _res;
      CORBA::StaticAny __res( CORBA::_stc_long, &amp;_res );
      __req-&gt;add_in_arg( &amp;_sa_rechnerid );
      __req-&gt;set_result( &amp;__res );

      if( !__req-&gt;read_args() )
        return true;

      _res = getmsgid( _par_rechnerid.inout() );
      __req-&gt;write_results();
      return true;
    }
  #ifdef HAVE_EXCEPTIONS
  } catch( CORBA::SystemException_catch &amp;_ex ) {
    __req-&gt;set_exception( _ex-&gt;_clone() );
    __req-&gt;write_results();
    return true;
  } catch( ... ) {
    CORBA::UNKNOWN _ex (CORBA::OMGVMCID | 1, CORBA::COMPLETED_MAYBE);
    __req-&gt;set_exception (_ex-&gt;_clone());
    __req-&gt;write_results ();
    return true;
  }
  #endif

  return false;
}

void
POA_broadcast::messages::invoke (CORBA::StaticServerRequest_ptr __req)
{
  if (dispatch (__req)) {
      return;
  }

  CORBA::Exception * ex = 
    new CORBA::BAD_OPERATION (0, CORBA::COMPLETED_NO);
  __req-&gt;set_exception (ex);
  __req-&gt;write_results();
}
</code></pre>
<p>und die messages.h</p>
<pre><code class="language-cpp">/*
 *  MICO --- an Open Source CORBA implementation
 *  Copyright (c) 1997-2006 by The Mico Team
 *
 *  This file was automatically generated. DO NOT EDIT!
 */

#include &lt;CORBA.h&gt;
#include &lt;mico/throw.h&gt;

#ifndef __MESSAGES_H__
#define __MESSAGES_H__

namespace broadcast
{

class messages;
typedef messages *messages_ptr;
typedef messages_ptr messagesRef;
typedef ObjVar&lt; messages &gt; messages_var;
typedef ObjOut&lt; messages &gt; messages_out;

}

namespace broadcast
{

/*
 * Base class and common definitions for interface messages
 */

class messages : 
  virtual public CORBA::Object
{
  public:
    virtual ~messages();

    #ifdef HAVE_TYPEDEF_OVERLOAD
    typedef messages_ptr _ptr_type;
    typedef messages_var _var_type;
    #endif

    static messages_ptr _narrow( CORBA::Object_ptr obj );
    static messages_ptr _narrow( CORBA::AbstractBase_ptr obj );
    static messages_ptr _duplicate( messages_ptr _obj )
    {
      CORBA::Object::_duplicate (_obj);
      return _obj;
    }

    static messages_ptr _nil()
    {
      return 0;
    }

    virtual void *_narrow_helper( const char *repoid );

    virtual char* getmessages( const char* rechnerid, CORBA::Boolean_out getall ) = 0;
    virtual CORBA::Long dropmessage( const char* message, CORBA::Long msgID ) = 0;
    virtual CORBA::Long getmsgid( const char* rechnerid ) = 0;

  protected:
    messages() {};
  private:
    messages( const messages&amp; );
    void operator=( const messages&amp; );
};

// Stub for interface messages
class messages_stub:
  virtual public messages
{
  public:
    virtual ~messages_stub();
    char* getmessages( const char* rechnerid, CORBA::Boolean_out getall );
    CORBA::Long dropmessage( const char* message, CORBA::Long msgID );
    CORBA::Long getmsgid( const char* rechnerid );

  private:
    void operator=( const messages_stub&amp; );
};

#ifndef MICO_CONF_NO_POA

class messages_stub_clp :
  virtual public messages_stub,
  virtual public PortableServer::StubBase
{
  public:
    messages_stub_clp (PortableServer::POA_ptr, CORBA::Object_ptr);
    virtual ~messages_stub_clp ();
    char* getmessages( const char* rechnerid, CORBA::Boolean_out getall );
    CORBA::Long dropmessage( const char* message, CORBA::Long msgID );
    CORBA::Long getmsgid( const char* rechnerid );

  protected:
    messages_stub_clp ();
  private:
    void operator=( const messages_stub_clp &amp; );
};

#endif // MICO_CONF_NO_POA

}

#ifndef MICO_CONF_NO_POA

namespace POA_broadcast
{

class messages : virtual public PortableServer::StaticImplementation
{
  public:
    virtual ~messages ();
    broadcast::messages_ptr _this ();
    bool dispatch (CORBA::StaticServerRequest_ptr);
    virtual void invoke (CORBA::StaticServerRequest_ptr);
    virtual CORBA::Boolean _is_a (const char *);
    virtual CORBA::InterfaceDef_ptr _get_interface ();
    virtual CORBA::RepositoryId _primary_interface (const PortableServer::ObjectId &amp;, PortableServer::POA_ptr);

    virtual void * _narrow_helper (const char *);
    static messages * _narrow (PortableServer::Servant);
    virtual CORBA::Object_ptr _make_stub (PortableServer::POA_ptr, CORBA::Object_ptr);

    virtual char* getmessages( const char* rechnerid, CORBA::Boolean_out getall ) = 0;
    virtual CORBA::Long dropmessage( const char* message, CORBA::Long msgID ) = 0;
    virtual CORBA::Long getmsgid( const char* rechnerid ) = 0;

  protected:
    messages () {};

  private:
    messages (const messages &amp;);
    void operator= (const messages &amp;);
};

}

#endif // MICO_CONF_NO_POA

extern CORBA::StaticTypeInfo *_marshaller_broadcast_messages;

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1792710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792710</guid><dc:creator><![CDATA[BoosterBey]]></dc:creator><pubDate>Wed, 14 Oct 2009 20:08:09 GMT</pubDate></item><item><title><![CDATA[Reply to CORBA Anwendung Gültigkeitsbereich on Wed, 14 Oct 2009 20:18:26 GMT]]></title><description><![CDATA[<p>Der Fehler sollte ja klar sein. Der Compiler finde keine Definition von <code>messages_var</code> . Schau, wo du die definiert hast, respektive wo sie definiert ist und dann schau zu, dass sie auch dort, wo du sie nutzten möchtest einbindest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792713</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 14 Oct 2009 20:18:26 GMT</pubDate></item><item><title><![CDATA[Reply to CORBA Anwendung Gültigkeitsbereich on Wed, 14 Oct 2009 21:31:30 GMT]]></title><description><![CDATA[<p>das ist mir klar<br />
in der Zeile 25 von der message.h. Nur das ganze ist doch äquivalent zu dem Beispiel was ich gelinkt habe deswegen sollte er das doch genauso kennen... und eine andere Datei wird ja nirgendwo includiert. Das ganze besteht ja eigentlich nur aus den 3 Dateien... und mit dem normalen Beispiel was nicht abgeändetr is funzt es...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792737</guid><dc:creator><![CDATA[BoosterBey]]></dc:creator><pubDate>Wed, 14 Oct 2009 21:31:30 GMT</pubDate></item><item><title><![CDATA[Reply to CORBA Anwendung Gültigkeitsbereich on Wed, 14 Oct 2009 22:43:32 GMT]]></title><description><![CDATA[<p>Wenn du dir die generierte messages.h näher anguckst siehst du, daß sich die Klasse messages mitsamt aller dazugehörigen Definitionen im Namensraum broadcast befindet. Was du brauchst ist also nicht messages_var, sondern broadcast::messages_var, etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792750</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Wed, 14 Oct 2009 22:43:32 GMT</pubDate></item><item><title><![CDATA[Reply to CORBA Anwendung Gültigkeitsbereich on Thu, 15 Oct 2009 08:41:05 GMT]]></title><description><![CDATA[<p>Danke!!!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792788</guid><dc:creator><![CDATA[BoosterBey]]></dc:creator><pubDate>Thu, 15 Oct 2009 08:41:05 GMT</pubDate></item></channel></rss>