public PostmessageService(
     IPostmessageRepository postmessageRepository,
     IMessageResolver messageResolver,
     ITransitManager transitManager)
 {
     _postmessageRepository = postmessageRepository;
     _messageResolver       = messageResolver;
     _transitManager        = transitManager;
 }
示例#2
0
        public Session(TcpService service, Socket client, IMessageBuilder msgBuilder, IMessageResolver msgResolver)
        {
            this.Socket            = client;
            this.ID                = _sessionId.Generate();
            this.Service           = service;
            this._closeReason      = CloseReason.Unknown;
            this._lastActivateTime = Environment.TickCount;

            this._messageBuilder  = msgBuilder;
            this._messageResolver = msgResolver;
        }
示例#3
0
        public Session(bool isClient, Int64 uniqueId, IPacketDispatcher dispatcher, IMessageResolver messageResolver, ServerOption serverOption)
        {
            IsClient   = isClient;
            UniqueId   = uniqueId;
            Dispatcher = dispatcher;
            ServerOpt  = serverOption;

            RefMsgResolver = messageResolver;

            SendingList = new List <ArraySegment <byte> >();

            LatestHeartbeatTime = DateTime.Now.Ticks;
        }
示例#4
0
        public MessageProcessorV2(IMessageResolver resolver)
        {
            _parsableMessages  = new Dictionary <ushort, Type>();
            _messageAttributes = new Dictionary <Type, MessageAttribute>();
            _validators        = new Dictionary <Type, MessageValidator>();
            _nestedValidators  = new Dictionary <Type, MessageValidator>();

            var resolvedMessages = resolver.Resolve();

            AddMessages(resolvedMessages);

            Console.WriteLine("Parsable Messages Cached: {0}", _parsableMessages.Count);
            Console.WriteLine("Attributes Cached: {0}", _messageAttributes.Count);
        }
示例#5
0
        internal static IMessageResolver GetMessageResolver(this IMessageResolver messageResolver, RestClientDefaultSettings configuration)
        {
            IMessageResolver result;

            if (configuration?.DefaultMessageResolver != null && messageResolver == null)
            {
                result = configuration.DefaultMessageResolver;
            }
            else if (messageResolver != null)
            {
                result = messageResolver;
            }
            else
            {
                result = new JsonMessageResolver();
            }

            return(result);
        }
示例#6
0
        public void Dispose(bool disposing)
        {
            if (disposing)
            {
                // send queue에 있던놈 메모리 해제 하기
                ArraySegment <byte> arraySeg;
                while (_sendQueue.TryDequeue(out arraySeg))
                {
                    Service._pooledBufferManager.Return(arraySeg.Array);
                }

                // 소켓 닫기
                try
                {
                    Socket.Close();
                    Socket = null;
                }
                catch (Exception e)
                {
                    Service.Logger.Log(LogLevel.Debug, "Socket Close 예외 발생", e);
                }

                // 타이머 종료( Dispose 되어도 비동기적으로 타이머가 호출되기 때문에 Update 가 호출될수 있음 )
                _updateTimer.Dispose();
                _updateTimer = null;

                // 닫힘 알리기
                Service.CloseSession(ID, _closeReason, _receiveEventArgs, _sendEventArgs);
                Service = null;

                if (_messageResolver != null)
                {
                    _messageResolver.OnClose(this);
                    _messageResolver = null;
                }

                if (_messageBuilder != null)
                {
                    _messageBuilder.OnClose(this);
                    _messageResolver = null;
                }
            }
        }
示例#7
0
        /// <summary>
        /// 로직 스레드를 사용하려면 use_logicthread를 true로 설정한다.
        ///  -> 하나의 로직 스레드를 생성한다.
        ///  -> 메시지는 큐잉되어 싱글 스레드에서 처리된다.
        ///
        /// 로직 스레드를 사용하지 않으려면 use_logicthread를 false로 설정한다.
        ///  -> 별도의 로직 스레드는 생성하지 않는다.
        ///  -> IO스레드에서 직접 메시지 처리를 담당하게 된다.
        /// </summary>
        /// <param name="use_logicthread">true=Create single logic thread. false=Not use any logic thread.</param>
        public NetworkService(ServerOption serverOption, IPacketDispatcher userPacketDispatcher = null,
                              IMessageResolver userMessageResolver = null)
        {
            ServerOpt   = serverOption;
            UserManager = new SessionManager();

            if (userPacketDispatcher == null)
            {
                PacketDispatcher = new DefaultPacketDispatcher();
            }
            else
            {
                PacketDispatcher = userPacketDispatcher;
            }

            if (userMessageResolver == null)
            {
                MessageResolver = new DefaultMessageResolver(ServerOpt.MaxPacketSize * 3);
            }
            else
            {
                MessageResolver = userMessageResolver;
            }
        }
示例#8
0
 public JsonProtocol(IMessageResolver messageResolver)
 {
     _messageResolver = messageResolver;
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="messageResolver">
 /// The Message resolver
 /// </param>
 public static void SetMessageResolver(IMessageResolver messageResolver)
 {
     SdmxException._messageResolver = messageResolver;
 }
示例#10
0
 public BinaryProtocol(IMessageResolver messageResolver)
 {
     _messageResolver = messageResolver;
 }
示例#11
0
 public DeflateResolver(IMessageResolver resolver, int compressionThreshold)
 {
     this.BaseResolver = resolver;
       this.CompressionThreshold = compressionThreshold;
 }
示例#12
0
 public DeflateResolver(IMessageResolver resolver)
     : this(resolver, DefaultCompressionThreshold)
 {
 }