123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Slice;
- using CommonNetwork_ICE.Util;
- using CommonLang.Log;
- namespace CommonNetwork_ICE.Common
- {
- /// <summary>
- /// ICE通讯通道初始化类
- /// </summary>
- public class IceInit
- {
- private static Logger log = LoggerFactory.GetLogger("IceInit");
- /// <summary>
- /// 以指定地址和端口加载ICE服务器
- /// </summary>
- /// <param name="commType">通信类型</param>
- /// <param name="connector">ICE通讯对象</param>
- /// <param name="sender">远程接口实现类</param>
- public static void InitIceRecvServer(int commType, IceConnector connector, SenderDisp_ sender)
- {
- string name = getCommTypeName(commType);
- IceConfig config = connector.GetConnectorConfig();
- // 初始化ICE
- try
- {
- Ice.Communicator ic = Ice.Util.initialize();
- Ice.ObjectAdapter adapter =
- ic.createObjectAdapterWithEndpoints(config.RecvInterFaceName, name + " -h " + config.LocalIp + " -p " + config.LocalPort);
- adapter.add(sender, ic.stringToIdentity(config.SendInterFaceName));
- adapter.activate();
- connector.RecvConnector = ic;
- }
- catch (Exception e)
- {
- connector.RecvConnector = null;
- Env.ENV_ERR_CODE = Error.ERR_CODE_1;
- log.Error(e.Message);
- }
- }
- /// <summary>
- /// 以指定地址和端口加载ICE客户端
- /// </summary>
- /// <param name="commType">通信类型</param>
- /// <param name="connector">ICE通讯对象</param>
- public static void InitIceSender(int commType, IceConnector connector)
- {
- string name = getCommTypeName(commType);
- IceConfig config = connector.GetConnectorConfig();
- try
- {
- Ice.Communicator ic = Ice.Util.initialize();
- Ice.ObjectPrx obj = ic.stringToProxy(config.SendInterFaceName + ":" + name + " -h " + config.RemoteIp + " -p " + config.RemotePort);
- Ice.ObjectPrx clientObj = null;
- if (commType == Constants.COMM_TYPE_TCP)
- {
- clientObj = obj;
- }
- else if (commType == Constants.COMM_TYPE_UDP)
- {
- clientObj = obj.ice_datagram();
- }
- SenderPrx sender = SenderPrxHelper.uncheckedCast(clientObj);
- if (sender == null)
- {
- log.Error("无效的代理对象。");
- Env.ENV_ERR_CODE = Error.ERR_CODE_2;
- return;
- }
- connector.SenderConnector = ic;
- connector.Sender = sender;
- }
- catch (Exception e)
- {
- connector.SenderConnector = null;
- connector.Sender = null;
- Env.ENV_ERR_CODE = Error.ERR_CODE_2;
- log.Error(e.Message);
- }
- }
- /// <summary>
- /// 根据通信类型获取通信类型名称
- /// </summary>
- /// <param name="commType">通信类型</param>
- /// <returns>类型名称</returns>
- private static string getCommTypeName(int commType)
- {
- if (commType == Constants.COMM_TYPE_TCP)
- {
- return "tcp";
- }
- else if (commType == Constants.COMM_TYPE_UDP)
- {
- return "udp";
- }
- else
- {
- throw new Exception("非法的参数");
- }
- }
- }
- }
|