Click here to Skip to main content
15,884,836 members
Articles / Programming Languages / C#

Mixing ACE/TAO and .NET Clients and Servers

Rate me:
Please Sign up or sign in to vote.
4.65/5 (28 votes)
13 Dec 2005CPOL18 min read 83.9K   1.9K   45  
Demonstrates mixing C++ ACE/TAO clients and servers with C# IIOP.NET clients and servers on Windows and Linux.
// -*- C++ -*-
//
// $Id$

// ****  Code generated by the The ACE ORB (TAO) IDL Compiler ****
// TAO and the TAO IDL Compiler have been developed by:
//       Center for Distributed Object Computing
//       Washington University
//       St. Louis, MO
//       USA
//       http://www.cs.wustl.edu/~schmidt/doc-center.html
// and
//       Distributed Object Computing Laboratory
//       University of California at Irvine
//       Irvine, CA
//       USA
//       http://doc.ece.uci.edu/
// and
//       Institute for Software Integrated Systems
//       Vanderbilt University
//       Nashville, TN
//       USA
//       http://www.isis.vanderbilt.edu/
//
// Information about TAO is available at:
//     http://www.cs.wustl.edu/~schmidt/TAO.html

// TAO_IDL - Generated from
// .\be\be_codegen.cpp:153

#ifndef _TAO_IDL_EXAMPLEINTERFACESC_H_
#define _TAO_IDL_EXAMPLEINTERFACESC_H_

#include /**/ "ace\pre.h"


#include "ace/config-all.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include "tao/ORB.h"
#include "tao/SystemException.h"
#include "tao/Environment.h"
#include "tao/Object.h"
#include "tao/Objref_VarOut_T.h"

#if defined (TAO_EXPORT_MACRO)
#undef TAO_EXPORT_MACRO
#endif
#define TAO_EXPORT_MACRO 

#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable:4250)
#endif /* _MSC_VER */

#if defined (__BORLANDC__)
#pragma option push -w-rvl -w-rch -w-ccc -w-inl
#endif /* __BORLANDC__ */

// TAO_IDL - Generated from 
// c:\local\ace\tao\tao_idl\be\be_visitor_root/root_ch.cpp:62

namespace TAO
{
  class Collocation_Proxy_Broker;
  template<typename T> class Narrow_Utils;
}

// TAO_IDL - Generated from
// c:\local\ace\tao\tao_idl\be\be_visitor_module/module_ch.cpp:48

namespace ExampleInterfaces
{
  
  // TAO_IDL - Generated from
  // .\be\be_interface.cpp:598

#if !defined (_EXAMPLEINTERFACES_IADDER__VAR_OUT_CH_)
#define _EXAMPLEINTERFACES_IADDER__VAR_OUT_CH_
  
  class IAdder;
  typedef IAdder *IAdder_ptr;
  
  typedef
    TAO_Objref_Var_T<
        IAdder
      >
    IAdder_var;
  
  typedef
    TAO_Objref_Out_T<
        IAdder
      >
    IAdder_out;

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // c:\local\ace\tao\tao_idl\be\be_visitor_interface/interface_ch.cpp:54

#if !defined (_EXAMPLEINTERFACES_IADDER_CH_)
#define _EXAMPLEINTERFACES_IADDER_CH_
  
  class  IAdder
    : public virtual CORBA::Object
  {
  public:
    friend class TAO::Narrow_Utils<IAdder>;
    typedef IAdder_ptr _ptr_type;
    typedef IAdder_var _var_type;
    
    // The static operations.
    static IAdder_ptr _duplicate (IAdder_ptr obj);
    
    static void _tao_release (IAdder_ptr obj);
    
    static IAdder_ptr _narrow (
        CORBA::Object_ptr obj
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    static IAdder_ptr _unchecked_narrow (
        CORBA::Object_ptr obj
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    static IAdder_ptr _nil (void)
    {
      return static_cast<IAdder_ptr> (0);
    }
    
    static void _tao_any_destructor (void *);
    
    // TAO_IDL - Generated from
    // c:\local\ace\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:46
    
    virtual CORBA::Double add (
        ::CORBA::Double arg1,
        ::CORBA::Double arg2
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));
    
    // TAO_IDL - Generated from
    // c:\local\ace\tao\tao_idl\be\be_visitor_interface/interface_ch.cpp:210
    
    virtual CORBA::Boolean _is_a (
        const char *type_id
        ACE_ENV_ARG_DECL_WITH_DEFAULTS
      );
    
    virtual const char* _interface_repository_id (void) const;
    virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
  private:
    TAO::Collocation_Proxy_Broker *the_TAO_IAdder_Proxy_Broker_;
  
  protected:
    // Concrete interface only.
    IAdder (void);
    
    // These methods travese the inheritance tree and set the
    // parents piece of the given class in the right mode.
    virtual void ExampleInterfaces_IAdder_setup_collocation (void);
    
    // Concrete non-local interface only.
    IAdder (
        IOP::IOR *ior,
        TAO_ORB_Core *orb_core = 0
      );
    
    // Non-local interface only.
    IAdder (
        TAO_Stub *objref,
        CORBA::Boolean _tao_collocated = 0,
        TAO_Abstract_ServantBase *servant = 0,
        TAO_ORB_Core *orb_core = 0
      );
    
    virtual ~IAdder (void);
  
  private:
    // Private and unimplemented for concrete interfaces.
    IAdder (const IAdder &);
    
    void operator= (const IAdder &);
  };

#endif /* end #if !defined */
  
  // TAO_IDL - Generated from
  // c:\local\ace\tao\tao_idl\be\be_visitor_typecode/typecode_decl.cpp:44
  
  extern  ::CORBA::TypeCode_ptr const _tc_IAdder;

// TAO_IDL - Generated from
// c:\local\ace\tao\tao_idl\be\be_visitor_module/module_ch.cpp:66

} // module ExampleInterfaces

// Proxy Broker Factory function pointer declarations.

// TAO_IDL - Generated from
// c:\local\ace\tao\tao_idl\be\be_visitor_root/root.cpp:139

extern 
TAO::Collocation_Proxy_Broker *
(*ExampleInterfaces__TAO_IAdder_Proxy_Broker_Factory_function_pointer) (
    CORBA::Object_ptr obj
  );

// TAO_IDL - Generated from
// .\be\be_visitor_traits.cpp:61

// Traits specializations.
namespace TAO
{

#if !defined (_EXAMPLEINTERFACES_IADDER__TRAITS_)
#define _EXAMPLEINTERFACES_IADDER__TRAITS_
  
  template<>
  struct  Objref_Traits< ::ExampleInterfaces::IAdder>
  {
    static ::ExampleInterfaces::IAdder_ptr duplicate (
        ::ExampleInterfaces::IAdder_ptr
      );
    static void release (
        ::ExampleInterfaces::IAdder_ptr
      );
    static ::ExampleInterfaces::IAdder_ptr nil (void);
    static CORBA::Boolean marshal (
        ::ExampleInterfaces::IAdder_ptr p,
        TAO_OutputCDR & cdr
      );
  };

#endif /* end #if !defined */
}

// TAO_IDL - Generated from
// c:\local\ace\tao\tao_idl\be\be_visitor_interface/any_op_ch.cpp:52



#if defined (ACE_ANY_OPS_USE_NAMESPACE)

namespace ExampleInterfaces
{
   void operator<<= (CORBA::Any &, IAdder_ptr); // copying
   void operator<<= (CORBA::Any &, IAdder_ptr *); // non-copying
   CORBA::Boolean operator>>= (const CORBA::Any &, IAdder_ptr &);
}

#else

 void operator<<= (CORBA::Any &, ExampleInterfaces::IAdder_ptr); // copying
 void operator<<= (CORBA::Any &, ExampleInterfaces::IAdder_ptr *); // non-copying
 CORBA::Boolean operator>>= (const CORBA::Any &, ExampleInterfaces::IAdder_ptr &);

#endif

// TAO_IDL - Generated from
// c:\local\ace\tao\tao_idl\be\be_visitor_interface/cdr_op_ch.cpp:55

 CORBA::Boolean operator<< (TAO_OutputCDR &, const ExampleInterfaces::IAdder_ptr );
 CORBA::Boolean operator>> (TAO_InputCDR &, ExampleInterfaces::IAdder_ptr &);

// TAO_IDL - Generated from
// .\be\be_codegen.cpp:955

#if defined (__ACE_INLINE__)
#include "ExampleInterfacesC.inl"
#endif /* defined INLINE */

#if defined(_MSC_VER)
#pragma warning(pop)
#endif /* _MSC_VER */

#if defined (__BORLANDC__)
#pragma option pop
#endif /* __BORLANDC__ */

#include /**/ "ace\post.h"

#endif /* ifndef */


By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Engineer Defence R&D Canada
Canada Canada
Stephen Bogner is a Senior Research Engineer with Defence R&D Canada. As the Head Autonomous Applications Group, Autonomous Intelligent Systems Section, he only programs when it can't be avoided, and then only in C#.

Comments and Discussions