예제 #1
0
        public void RegisterService()
        {
            _endpoint = new EndpointAddress($"net.tcp://{_wcfIP}:{_wcfPort}/TradingService");
            Initialize();

            var serviceId = Guid.NewGuid().ToString();

            try
            {
                var registerUCProcessorRequest = new RegisterUCProcessorResponse {
                    ServiceID = serviceId
                };

                _client.RegisterProcessor(registerUCProcessorRequest);
                Console.WriteLine("Connected to server");
                Send(new GetAvailableDataFeedsRequest());
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error: {ex.Message}");
            }

            _keepHeartbeatAlive = true;
            _heartbeatThread    = new Thread(HeartbeatThreadBody)
            {
                Name = "WCF Heartbeat", IsBackground = true
            };
            _heartbeatThread.Start();
        }
예제 #2
0
        public void RegisterProcessor(RegisterUCProcessorResponse request)
        {
            try
            {
                var processorInfo = new ProcessorInfo(request.ServiceID, GetSessionID(OperationContext.Current.SessionId), OperationContext.Current);
                lock (MessageRouter.gMessageRouter)
                {
                    MessageRouter.gMessageRouter.AddProcessorSession(processorInfo.ID, processorInfo);
                    processorInfo.Chanel.Closed  += ProcessorSessionClosed;
                    processorInfo.Chanel.Faulted += ProcessorSessionClosed;
                }

                Logger.Info($"New processor added: '{request.ServiceID}' id = '{processorInfo.ID}'");
            }
            catch (Exception ex)
            {
                throw new FaultException <TradingServerException>(new TradingServerException(ex.Message), new FaultReason(ex.Message));
            }
        }