这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用于网络游戏医学图像网关的高qos要求.更详细的内容可阅读相应的材料

源代码在线查看: server.cpp

软件大小: 29384 K
上传用户: captainjn
关键词: qos 通信 开源 大容量
下载地址: 免注册下载 普通下载 VIP

相关代码

				#include "ace/Log_Msg.h"
				#include "server_i.h"
				#include "ace/OS_NS_stdio.h"
				
				
				ACE_RCSID (Callback,
				           server,
				           "server.cpp,v 1.6 2003/11/11 22:49:09 bala Exp")
				
				
				int
				main (int argc, char *argv[])
				{
				  ACE_DECLARE_NEW_CORBA_ENV;
				  ACE_TRY
				    {
				      //
				      // Initialize the ORB
				      //
				      CORBA::ORB_var orb =
				        CORBA::ORB_init (argc, argv, ""
				                         ACE_ENV_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				
				      //
				      // Get the Root POA.
				      //
				      CORBA::Object_var obj =
				        orb->resolve_initial_references ("RootPOA"
				                                         ACE_ENV_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				
				      PortableServer::POA_var poa =
				        PortableServer::POA::_narrow (obj.in ()
				                                      ACE_ENV_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				
				      //
				      // Create the server, get object reference,
				      // and create "stringified" IOR.
				      //
				      server_i *tmp = 0;
				      ACE_NEW_RETURN (tmp,
				                      server_i (orb.in ()),
				                      -1);
				      PortableServer::ServantBase_var theServer = tmp;
				
				      PortableServer::ObjectId_var oid =
				        poa->activate_object (theServer.in ()
				                              ACE_ENV_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				      CORBA::Object_var server_obj =
				        poa->id_to_reference (oid.in ()
				                              ACE_ENV_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				      CORBA::String_var server_IORString =
				        orb->object_to_string (server_obj.in ()
				                               ACE_ENV_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				
				      //
				      // Write the IOR to a file.
				      //
				      // Output the IOR to the 
				      FILE *output_file= ACE_OS::fopen ("server.ior", "w");
				      if (output_file == 0)
				        ACE_ERROR_RETURN ((LM_ERROR,
				                           "Cannot open output file for writing IOR\n"),
				                            -1);
				      ACE_OS::fprintf (output_file, "%s", server_IORString.in ());
				      ACE_OS::fclose (output_file);
				
				      //
				      // Activate the POA manager.
				      //
				      PortableServer::POAManager_var mgr =
				        poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				      mgr->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				
				      ACE_DEBUG ((LM_INFO,
				                  ACE_TEXT ("(%P) calling orb->run () ...\n")));
				
				      orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				
				      poa->destroy (1, 1
				                    ACE_ENV_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				
				      orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
				      ACE_TRY_CHECK;
				    }
				  ACE_CATCHANY
				    {
				      ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
				                           ACE_TEXT ("Caught exception\n"));
				
				      return -1;
				    }
				  ACE_ENDTRY;
				
				  return 0;
				}
							

相关资源