public void JsonSerialization_ReturnsCorrectJson()
        {
            var response = new InitializeResponse(MessageResponseCode.Success);

            var json = TestUtilities.Serialize(response);

            Assert.Equal("{\"ResponseCode\":\"Success\"}", json);
        }
Example #2
0
        private async Task <InitializeResponse> InitializeAsync(uint passNumber, CancellationToken ct)
        {
            InitializeResponse response = new InitializeResponse();

            response.IsSuccess   = false;
            response.IsEchoed    = false;
            response.VersionName = string.Empty;

            List <byte> txFrame = new List <byte>();
            List <byte> rxFrame = new List <byte>();

            myCommMainCtrl.PurgeReceiveBuffer();

            txFrame = myCommInstructions.MakeTryConnectionRequest(passNumber);

            await myCommMainCtrl.PushAsync(txFrame);

            while (true)
            {
                rxFrame = await myCommMainCtrl.PullAsync(ct);

                if (rxFrame.Count == 0)
                {
                    break;
                }

                if (ct.IsCancellationRequested == true)
                {
                    break;
                }

                if (myCommInstructions.IsResponseValid(txFrame, rxFrame))
                {
                    if (txFrame.SequenceEqual(rxFrame))
                    {
                        response.IsEchoed = true;
                    }
                    else
                    {
                        rxFrame.RemoveAt(0);                    // remove unnecessary header data
                        rxFrame.RemoveAt(rxFrame.Count - 1);    // remove unnecessary crc data

                        var endIndex = rxFrame.Count() - 1;
                        if (rxFrame[endIndex] == 0x00)
                        {
                            rxFrame.RemoveAt(endIndex);         // remove null data
                        }

                        response.IsSuccess   = true;
                        response.VersionName = System.Text.Encoding.ASCII.GetString(rxFrame.ToArray());
                    }

                    break;
                }
            }

            return(response);
        }
Example #3
0
        public void SendInitializeAffirmToCenter(MasProtocol Protocol, string point, ushort crc)
        {
            InitializeResponse ResponseObject = new InitializeResponse();

            Protocol.ProtocolType     = ProtocolType.InitializeResponse;
            ResponseObject.StationCrc = crc;
            ResponseObject.DeviceCode = point;
            Protocol.Protocol         = ResponseObject;
        }
Example #4
0
 private void ProcessInitialize(InitializeResponse response)
 {
     if (response.Result == InitializeResult.Success)
     {
         Scheduler.Schedule(this.thread, Job.Create(new Action(this.Heartbeat)), new TimeSpan(0, 0, 30));
     }
     if (this.InitializeResponsed != null)
     {
         this.InitializeResponsed(response);
     }
 }
Example #5
0
        private void connection_PacketReceive(object sender, EventArgs <ArraySegment <byte> > e)
        {
            Packet packet = new Packet(e.Value);

            switch (packet.PacketType)
            {
            case PacketType.Initialize:
            {
                InitializeResponse arg = new InitializeResponse(ref packet);
                this.thread.Enqueue(Job.Create <InitializeResponse>(new Action <InitializeResponse>(this.ProcessInitialize), arg));
                return;
            }

            case PacketType.Login:
            {
                LoginResponse arg2 = new LoginResponse(ref packet);
                this.thread.Enqueue(Job.Create <LoginResponse>(new Action <LoginResponse>(this.ProcessLogin), arg2));
                return;
            }

            case PacketType.Logout:
                break;

            case PacketType.Terminate:
            {
                TerminateRequest arg3 = new TerminateRequest(ref packet);
                this.thread.Enqueue(Job.Create <TerminateRequest>(new Action <TerminateRequest>(this.ProcessTerminate), arg3));
                break;
            }

            case PacketType.Message:
            {
                MessageRequest arg4 = new MessageRequest(ref packet);
                this.thread.Enqueue(Job.Create <MessageRequest>(new Action <MessageRequest>(this.ProcessMessage), arg4));
                return;
            }

            case PacketType.Synchronize:
            {
                SynchronizeRequest arg5 = new SynchronizeRequest(ref packet);
                this.thread.Enqueue(Job.Create <SynchronizeRequest>(new Action <SynchronizeRequest>(this.ProcessSync), arg5));
                return;
            }

            default:
                return;
            }
        }
Example #6
0
        private void connection_InitializeResponsed(InitializeResponse response)
        {
            Log <CafeAuthService> .Logger.InfoFormat("Initialize response from Session server: [{0}]", response);

            InitializeResult result = response.Result;

            if (result == InitializeResult.Success)
            {
                Log <CafeAuthService> .Logger.WarnFormat("Successfully initialized with DoaminSN {0}", response.DomainSN);

                CafeAuthService.AddCafeAuthServiceLog(this.journalID, "InitializeResponse", "Success", "");
                return;
            }
            Log <CafeAuthService> .Logger.FatalFormat("Initialization failed ({0}) with DoaminSN {1}: {2}", response.Result, response.DomainSN, response.Message);

            CafeAuthService.AddCafeAuthServiceLog(this.journalID, "InitializeResponse", response.Result.ToString().Substring(0, Math.Min(response.Result.ToString().Length, 19)), response.Message.Substring(0, Math.Min(response.Message.Length, 29)));
            Scheduler.Schedule(base.Thread, Job.Create(new Action(this.connection.RequestInitialize)), 10000);
        }
Example #7
0
        /// <summary>
        /// 应答核心业务逻辑层的初始化接收确认。
        /// </summary>
        /// <param name="Fzh"></param>
        private void SendInitializeAffirmToCenter(string Fzh)
        {
            ProtocolDataCreatedEventArgs upData = new ProtocolDataCreatedEventArgs();
            InitializeResponse           cData  = new InitializeResponse();//初始化应答数据
            DeviceInfo def = Cache.CacheManager.QueryFrist <DeviceInfo>(p => p.Fzh == Convert.ToInt16(Fzh) && p.DevPropertyID == 0, true);

            if (def == null)
            {
                return;
            }
            upData.DriverCode  = this.DriverCode;
            upData.DeviceCode  = def.Point;
            upData.MasProtocol = new MasProtocol(SystemType.Security, DirectionType.Up, ProtocolType.InitializeResponse);
            upData.MasProtocol.DeviceNumber = Convert.ToUInt16(Fzh);
            cData.DeviceCode            = def.Point;
            upData.MasProtocol.Protocol = cData;
            OnProtocolData(upData);
        }
        /// <summary>
        /// Handles incoming <see cref="Packet"/> objects.
        /// </summary>
        /// <param name="p"><see cref="Packet"/> to handle.</param>
        internal void Handle(Packet p)
        {
            Logger.WriteLine("Received {0}", p.ToString());

            switch (p.FirstOpcode)
            {
            case ServiceLayer.Identity:
            {
                switch (p.SecondOpcode)
                {
                case ServiceLayer.InitializeRequest:
                {
                    return;                 // login service not handles incoming connections.
                }

                case ServiceLayer.InitializeResponse:             // connection init response
                {
                    InitializeResponse data = new InitializeResponse(p);

                    switch (data.Answer)
                    {
                    case InitializeResponse.Accepted:
                    {
                        Logger.WriteLine(Source.InnerNetwork, "Connected to {0} (0x{1})", GameServiceConnection.Connection.ServiceType, GameServiceConnection.Connection.ServiceID.ToString("x2"));
                        return;
                    }

                    case InitializeResponse.Rejected:
                    {
                        Logger.WriteLine(Source.InnerNetwork, "Connection rejected by remote service {0} (0x{1})", ( ServiceType )data.RemoteServiceType, data.RemoteServiceID);
                        return;
                    }
                    }

                    return;
                }
                }

                break;
            }
            }

            Logger.WriteLine("Unknown packet received from {0} service on layer 0x{1}:{2}{3}", ServiceType.GameService, p.FirstOpcode.ToString("x2"), Environment.NewLine, p.ToString());
        }
        protected override void HandleInitializeRequestAsync(IRequestResponder <InitializeArguments, InitializeResponse> responder)
        {
            var response = new InitializeResponse
            {
                SupportsConfigurationDoneRequest = true,
                SupportsEvaluateForHovers        = true,
                SupportsStepBack             = true,
                SupportsStepInTargetsRequest = true,
                SupportTerminateDebuggee     = false,
                SupportsRestartRequest       = false,
                SupportsRestartFrame         = false,
                SupportedChecksumAlgorithms  = new List <ChecksumAlgorithm> {
                    ChecksumAlgorithm.SHA256
                }
            };

            responder.SetResponse(response);
            Protocol.SendEvent(new InitializedEvent());
            CompletedInitializationRequest.SetResult(null);
        }
        protected override InitializeResponse HandleInitializeRequest(InitializeArguments arguments)
        {
            if (arguments.LinesStartAt1 == true)
            {
                this.clientsFirstLine = 1;
            }

            var res = new InitializeResponse()
            {
                SupportsConfigurationDoneRequest = true,
                SupportsSetVariable            = true,
                SupportsConditionalBreakpoints = true,
                SupportsDebuggerProperties     = true,
                SupportsSetExpression          = true,
                SupportsExceptionOptions       = true,
                SupportsExceptionConditions    = true,
                SupportsExceptionInfoRequest   = true,
                SupportsValueFormattingOptions = true,
                SupportsEvaluateForHovers      = true,
            };

            return(res);
        }
Example #11
0
        protected override void HandleInitializeRequestAsync(IRequestResponder <InitializeArguments, InitializeResponse> responder)
        {
            var response = new InitializeResponse
            {
                SupportsConfigurationDoneRequest = true,
                SupportsEvaluateForHovers        = true,
                SupportsStepBack             = true,
                SupportsStepInTargetsRequest = true,
                SupportTerminateDebuggee     = false,
                SupportsRestartRequest       = false,
                SupportsRestartFrame         = false,
                SupportedChecksumAlgorithms  = new List <ChecksumAlgorithm> {
                    ChecksumAlgorithm.SHA256
                },
                SupportsExceptionInfoRequest = true
            };

            response.ExceptionBreakpointFilters = new List <ExceptionBreakpointsFilter>
            {
                new ExceptionBreakpointsFilter
                {
                    Filter  = EXCEPTION_BREAKPOINT_FILTER_ALL,
                    Label   = EXCEPTION_BREAKPOINT_FILTER_ALL,
                    Default = false
                },
                new ExceptionBreakpointsFilter
                {
                    Filter  = EXCEPTION_BREAKPOINT_FILTER_UNHANDLED,
                    Label   = EXCEPTION_BREAKPOINT_FILTER_UNHANDLED,
                    Default = true
                }
            };

            responder.SetResponse(response);
            Protocol.SendEvent(new InitializedEvent());
            CompletedInitializationRequest.SetResult(null);
        }
        public async Task HandleInitializeRequest()
        {
            // Setup:
            // ... Create an initialize handler and register it in the service host
            var mockHandler = new Mock <Func <InitializeParameters, IEventSender, Task> >();

            mockHandler.Setup(f => f(It.IsAny <InitializeParameters>(), It.IsAny <IEventSender>()))
            .Returns(Task.FromResult(true));

            var sh = GetServiceHost();

            sh.RegisterInitializeTask(mockHandler.Object);
            sh.RegisterInitializeTask(mockHandler.Object);

            // ... Set a dummy value to return as the initialize response
            var ir = new InitializeResponse();

            // ... Create a mock request that will handle sending a result
            // TODO: Replace with event flow validation
            var initParams  = new InitializeParameters();
            var bc          = new BlockingCollection <Message>();
            var mockContext = new RequestContext <InitializeResponse>(Message.CreateRequest(InitializeRequest.Type, CommonObjects.MessageId, initParams), bc);

            // If: I handle an initialize request
            await sh.HandleInitializeRequest(initParams, mockContext);

            // Then:
            // ... The mock handler should have been called twice
            mockHandler.Verify(h => h(initParams, mockContext), Times.Exactly(2));

            // ... There should have been a response sent
            var outgoing = bc.ToArray();

            Assert.Single(outgoing);
            Assert.Equal(CommonObjects.MessageId, outgoing[0].Id);
            Assert.Equal(JToken.FromObject(ir), JToken.FromObject(ir));
        }
        public void Constructor_InitializesResponseCodeProperty()
        {
            var response = new InitializeResponse(MessageResponseCode.Success);

            Assert.Equal(MessageResponseCode.Success, response.ResponseCode);
        }
Example #14
0
        async Task <InitializeResponse> IRequestHandler <InitializeRequestArguments, InitializeResponse> .Handle(
            InitializeRequestArguments request,
            CancellationToken cancellationToken
            )
        {
            _settingsBag.ClientSettings = request;

            await DebugAdapterEventingHelper.Run(
                _initializeDelegates,
                (handler, ct) => handler(this, request, ct),
                _initializeHandlers.Union(_collection.Select(z => z.Handler).OfType <IOnDebugAdapterServerInitialize>()),
                (handler, ct) => handler.OnInitialize(this, request, ct),
                _concurrency,
                cancellationToken
                ).ConfigureAwait(false);

            var response = new InitializeResponse {
                AdditionalModuleColumns        = _capabilities.AdditionalModuleColumns,
                ExceptionBreakpointFilters     = _capabilities.ExceptionBreakpointFilters,
                SupportedChecksumAlgorithms    = _capabilities.SupportedChecksumAlgorithms,
                SupportsCompletionsRequest     = _capabilities.SupportsCompletionsRequest || _collection.ContainsHandler(typeof(ICompletionsHandler)),
                SupportsConditionalBreakpoints = _capabilities.SupportsConditionalBreakpoints,
                SupportsDataBreakpoints        = _capabilities.SupportsDataBreakpoints ||
                                                 _collection.ContainsHandler(typeof(IDataBreakpointInfoHandler)) || _collection.ContainsHandler(typeof(ISetDataBreakpointsHandler)),
                SupportsDisassembleRequest  = _capabilities.SupportsDisassembleRequest || _collection.ContainsHandler(typeof(IDisassembleHandler)),
                SupportsExceptionOptions    = _capabilities.SupportsExceptionOptions,
                SupportsFunctionBreakpoints = _capabilities.SupportsFunctionBreakpoints || _collection.ContainsHandler(typeof(ISetFunctionBreakpointsHandler)),
                SupportsLogPoints           = _capabilities.SupportsLogPoints,
                SupportsModulesRequest      = _capabilities.SupportsModulesRequest || _collection.ContainsHandler(typeof(IModuleHandler)),
                SupportsRestartFrame        = _capabilities.SupportsRestartFrame || _collection.ContainsHandler(typeof(IRestartFrameHandler)),
                SupportsRestartRequest      = _capabilities.SupportsRestartRequest || _collection.ContainsHandler(typeof(IRestartHandler)),
                SupportsSetExpression       = _capabilities.SupportsSetExpression || _collection.ContainsHandler(typeof(ISetExpressionHandler)),
                SupportsSetVariable         = _capabilities.SupportsSetVariable || _collection.ContainsHandler(typeof(ISetVariableHandler)),
                SupportsStepBack            = _capabilities.SupportsStepBack ||
                                              _collection.ContainsHandler(typeof(IStepBackHandler)) && _collection.ContainsHandler(typeof(IReverseContinueHandler)),
                SupportsTerminateRequest           = _capabilities.SupportsTerminateRequest || _collection.ContainsHandler(typeof(ITerminateHandler)),
                SupportTerminateDebuggee           = _capabilities.SupportTerminateDebuggee,
                SupportsConfigurationDoneRequest   = _capabilities.SupportsConfigurationDoneRequest || _collection.ContainsHandler(typeof(IConfigurationDoneHandler)),
                SupportsEvaluateForHovers          = _capabilities.SupportsEvaluateForHovers,
                SupportsExceptionInfoRequest       = _capabilities.SupportsExceptionInfoRequest || _collection.ContainsHandler(typeof(IExceptionInfoHandler)),
                SupportsGotoTargetsRequest         = _capabilities.SupportsGotoTargetsRequest || _collection.ContainsHandler(typeof(IGotoTargetsHandler)),
                SupportsHitConditionalBreakpoints  = _capabilities.SupportsHitConditionalBreakpoints,
                SupportsLoadedSourcesRequest       = _capabilities.SupportsLoadedSourcesRequest || _collection.ContainsHandler(typeof(ILoadedSourcesHandler)),
                SupportsReadMemoryRequest          = _capabilities.SupportsReadMemoryRequest || _collection.ContainsHandler(typeof(IReadMemoryHandler)),
                SupportsTerminateThreadsRequest    = _capabilities.SupportsTerminateThreadsRequest || _collection.ContainsHandler(typeof(ITerminateThreadsHandler)),
                SupportsValueFormattingOptions     = _capabilities.SupportsValueFormattingOptions,
                SupportsDelayedStackTraceLoading   = _capabilities.SupportsDelayedStackTraceLoading,
                SupportsStepInTargetsRequest       = _capabilities.SupportsStepInTargetsRequest || _collection.ContainsHandler(typeof(IStepInTargetsHandler)),
                SupportsCancelRequest              = _capabilities.SupportsCancelRequest || _collection.ContainsHandler(typeof(ICancelHandler)),
                SupportsClipboardContext           = _capabilities.SupportsClipboardContext,
                SupportsInstructionBreakpoints     = _capabilities.SupportsInstructionBreakpoints || _collection.ContainsHandler(typeof(ISetInstructionBreakpointsHandler)),
                SupportsSteppingGranularity        = _capabilities.SupportsSteppingGranularity,
                SupportsBreakpointLocationsRequest = _capabilities.SupportsBreakpointLocationsRequest || _collection.ContainsHandler(typeof(IBreakpointLocationsHandler))
            };

            _settingsBag.ServerSettings = response;

            await DebugAdapterEventingHelper.Run(
                _initializedDelegates,
                (handler, ct) => handler(this, request, response, ct),
                _initializedHandlers.Union(_collection.Select(z => z.Handler).OfType <IOnDebugAdapterServerInitialized>()),
                (handler, ct) => handler.OnInitialized(this, request, response, ct),
                _concurrency,
                cancellationToken
                ).ConfigureAwait(false);

            _receiver.Initialized();

            _initializeComplete.OnNext(response);
            _initializeComplete.OnCompleted();

            return(response);
        }
 /// <summary>
 /// Emits a response with initialization status.
 /// </summary>
 /// <param name="response"></param>
 public static void EmitInitializeResponse(InitializeResponse response)
 {
     EmitSerializedOutput(AvailableCommand.Initialize, response);
 }
Example #16
0
        private async void OnClientDataReceived(object sender, ClientDataReceivedEventArgs e)
        {
            byte[] bytes      = e._dataBytes;
            string receiveStr = DataHelper.ByteArrayToHexString(bytes);

            //用于确认连接成功的
            if (receiveStr == "10010000")
            {
                await _client.SendAsync(DataHelper.HexStringToByteArray("11010010"));
            }
            else
            {
                Object obj  = (Object)DataHelper.DeserializeWithBinary(bytes);
                Type   type = obj.GetType();
                //操作模式的反馈
                if (type == typeof(OperationModeResponse))
                {
                    OperationModeResponse operationModeResponse = obj as OperationModeResponse;
                    if (operationModeResponse.Response == "OfflineIsOk")
                    {
                        operationMode = "offline";
                    }
                    if (operationModeResponse.Response == "OnlineIsOk")
                    {
                        operationMode = "online";
                    }
                    //operationMode = operationModeResponse.Response;
                    MessageBox.Show(operationModeResponse.Response);
                }
                //初始化的反馈
                if (type == typeof(InitializeResponse))
                {
                    InitializeResponse initializeResponse = obj as InitializeResponse;

                    MessageBox.Show(initializeResponse.Response);
                }

                #region 来自PLC相关的数据
                //入库上料反馈
                if (type == typeof(WarehousePLCInputLoadTrayResponse))
                {
                    WarehousePLCInputLoadTrayResponse classPLCInputLoadTrayResponse = obj as WarehousePLCInputLoadTrayResponse;

                    MessageBox.Show(classPLCInputLoadTrayResponse.InputLoadTrayResponse);
                }
                //读取RFID的反馈
                if (type == typeof(WarehousePLCReadRFIDResponse))
                {
                    WarehousePLCReadRFIDResponse classPLCReadRFIDResponse = obj as WarehousePLCReadRFIDResponse;
                    InputOldRFIDNumber = classPLCReadRFIDResponse.ReadRFIDResponse;
                }
                //写入RFID的反馈
                if (type == typeof(WarehousePLCWriteRFIDResponse))
                {
                    WarehousePLCWriteRFIDResponse WarehousePLCWriteRFIDResponse = obj as WarehousePLCWriteRFIDResponse;
                    MessageBox.Show(WarehousePLCWriteRFIDResponse.WriteRFIDResponse);
                }
                //入库执行的反馈
                if (type == typeof(WarehousePLCInputExecuteResponse))
                {
                    WarehousePLCInputExecuteResponse classPLCInputExecuteResponse = obj as WarehousePLCInputExecuteResponse;

                    MessageBox.Show(classPLCInputExecuteResponse.InputExecuteResponseStorageLocation.ToString());
                    MessageBox.Show(classPLCInputExecuteResponse.InputExecuteResponseResult);
                }
                //出库执行的反馈
                if (type == typeof(WarehousePLCOutputExecuteResponse))
                {
                    WarehousePLCOutputExecuteResponse WarehousePLCOutputExecuteResponse = obj as WarehousePLCOutputExecuteResponse;
                    MessageBox.Show(WarehousePLCOutputExecuteResponse.OutputExecuteResponseStorageLocation.ToString());
                    MessageBox.Show("出库状态" + WarehousePLCOutputExecuteResponse.OutputExecuteResponseResult);
                }
                #endregion

                #region 来自AGV相关的数据
                if (type == typeof(AGVQueryCurrentPositionResponse))
                {
                    AGVQueryCurrentPositionResponse classAGVQueryCurrentPositionResponse = obj as AGVQueryCurrentPositionResponse;
                    switch (classAGVQueryCurrentPositionResponse.QueryCurrentPositionResponse)
                    {
                    case 1: AGVCurrentPosition = "入库点"; break;

                    case 2: AGVCurrentPosition = "出库点"; break;

                    case 3: AGVCurrentPosition = "对接平台点"; break;

                    case 10: AGVCurrentPosition = "原点"; break;

                    default: break;
                    }
                }
                if (type == typeof(AGVTaskResponse))
                {
                    AGVTaskResponse classAGVTaskResponse = obj as AGVTaskResponse;
                    switch (classAGVTaskResponse.TaskResponse)
                    {
                    case 1: MessageBox.Show("到达入库点!"); break;

                    case 2: MessageBox.Show("到达出库点!"); break;

                    case 3: MessageBox.Show("到达对接平台点!"); break;

                    case 10: MessageBox.Show("回原点完成!"); break;

                    case 6: MessageBox.Show("放料盘完成!"); break;

                    case 7: MessageBox.Show("进料盘完成!"); break;

                    default: break;
                    }
                }
                #endregion

                #region 来自CloudPlatform相关的数据
                //获取所有的库位信息,用于显示
                if (type == typeof(List <CloudPlatformStorageQueryResponse>))
                {
                    List <CloudPlatformStorageQueryResponse> classStorageQueryShowResponses = obj as List <CloudPlatformStorageQueryResponse>;
                    App.Current.Dispatcher.Invoke(() => { _storagesList.Clear(); });//更新新的数据之前先清空列表
                    //List<StorageInfoModel> test = new List<StorageInfoModel>();
                    foreach (var item in classStorageQueryShowResponses)
                    {
                        var list = new StorageInfoModel
                        {
                            Location         = item.StorageQueryLocation,
                            Category         = item.StorageQueryCategory,
                            Amount           = item.StorageQueryAmount,
                            RFIDNumber       = item.StorageQueryRFID,
                            EditStoragesInfo = item.StorageQueryCategory != "null",
                            EditOutput       = item.StorageQueryCategory != "null"
                        };
                        App.Current.Dispatcher.Invoke(() => { _storagesList.Add(list); });
                    }
                }
                //获取所有的入库记录,用于显示
                if (type == typeof(List <CloudPlatformQueryInputRecordResponse>))
                {
                    List <CloudPlatformQueryInputRecordResponse> classQueryInputRecordResponses = obj as List <CloudPlatformQueryInputRecordResponse>;
                    App.Current.Dispatcher.Invoke(() => { _inputRecordList.Clear(); });//更新新的数据之前先清空列表

                    foreach (var item in classQueryInputRecordResponses)
                    {
                        var list = new InputRecordModel
                        {
                            RFIDNumber    = item.QueryInputRecordResponseRFIDNumber,
                            Location      = item.QueryInputRecordResponseLocation,
                            Amount        = item.QueryInputRecordResponseAmount,
                            OperationTime = item.QueryInputRecordResponseOperationTime,
                            Category      = item.QueryInputRecordResponseCategory
                        };
                        App.Current.Dispatcher.Invoke(() => { _inputRecordList.Add(list); });
                    }
                }
                //获取所有的出库记录用于显示
                if (type == typeof(List <CloudPlatformQueryOutputRecordResponse>))
                {
                    List <CloudPlatformQueryOutputRecordResponse> classQueryOutputRecordResponses = obj as List <CloudPlatformQueryOutputRecordResponse>;
                    App.Current.Dispatcher.Invoke(() => { _outputRecordList.Clear(); });//更新新的数据之前先清空列表

                    foreach (var item in classQueryOutputRecordResponses)
                    {
                        var list = new OutputRecordModel
                        {
                            Location      = item.QueryOutputRecordResponseLocation,
                            RFIDNumber    = item.QueryOutputRecordResponseRFIDNumber,
                            Amount        = item.QueryOutputRecordResponseAmount,
                            OperationTime = item.QueryOutputRecordResponseOperationTime,
                            Category      = item.QueryOutputRecordResponseCategory
                        };
                        App.Current.Dispatcher.Invoke(() => { _outputRecordList.Add(list); });
                    }
                }
                //获取所有的库位修改记录用于显示
                if (type == typeof(List <CloudPlatformQueryModifyStorageRecordResponse>))
                {
                    List <CloudPlatformQueryModifyStorageRecordResponse> cloudPlatformQueryModifyStorageRecordResponses = obj as List <CloudPlatformQueryModifyStorageRecordResponse>;
                    App.Current.Dispatcher.Invoke(() => { _modifyStorageRecordList.Clear(); });

                    foreach (var item in cloudPlatformQueryModifyStorageRecordResponses)
                    {
                        var list = new ModifyStorageRecordModel
                        {
                            Location   = item.Location,
                            ModifyType = item.Type,
                            RFIDNumber = item.RFIDNumber,
                            Category   = item.CategoryNew,
                            Amount     = item.AmountNew,
                            ModifyTime = item.ModifyTime
                        };

                        App.Current.Dispatcher.Invoke(() => { _modifyStorageRecordList.Add(list); });
                    }
                }
                //手动维护库位信息的反馈
                if (type == typeof(CloudPlatformModifyStorageInfoResponse))
                {
                    CloudPlatformModifyStorageInfoResponse cloudPlatformModifyStorageInfoResponse = obj as CloudPlatformModifyStorageInfoResponse;
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.Type.ToString());
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.Location.ToString());
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.RFIDNumber);
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.CategoryNew);
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.AmountNew.ToString());
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.Result);
                }
                #endregion
            }
        }
        internal static void Handle(Packet p)
        {
            //Logger.WriteLine(p.ToString());

            switch (p.FirstOpcode)
            {
            case ServiceLayer.Identity:
            {
                switch (p.SecondOpcode)
                {
                case ServiceLayer.InitializeRequest:
                {
                    return;                 // login service not handles incoming connections.
                }

                case ServiceLayer.InitializeResponse:             // connection init response
                {
                    InitializeResponse data = new InitializeResponse(p);

                    switch (data.Answer)
                    {
                    case InitializeResponse.Accepted:
                    {
                        CacheServiceConnection.Connection.SetRemoteService(data.RemoteServiceID, ( ServiceType )data.RemoteServiceType);
                        Logger.WriteLine(Source.InnerNetwork, "Authorized on {0} (0x{1})", CacheServiceConnection.Connection.ServiceType, CacheServiceConnection.Connection.ServiceID.ToString("x2"));

                        // send set-settings request if needed

                        World.StartUp();

                        return;
                    }

                    case InitializeResponse.Rejected:
                    {
                        Logger.WriteLine(Source.InnerNetwork, "Connection rejected by {0} (0x{1})", ( ServiceType )data.RemoteServiceType, data.RemoteServiceID);
                        return;
                    }
                    }

                    return;
                }

                case ServiceLayer.SetSettingsRequest:
                {
                    return;                 // login service not handles remote service settings request
                }

                case ServiceLayer.SetSettingsResponse:
                {
                    SetSettingsResponse response = new SetSettingsResponse(p);

                    switch (response.Response)
                    {
                    case SetSettingsResponse.Accepted:
                    {
                        Logger.WriteLine(Source.InnerNetwork, "Cache service accepted service settings.");
                        //UserConnectionsListener.Enable(); // start listen incoming user connections
                        return;
                    }

                    default:
                    {
                        Service.Terminate(new ServiceShutdownEventArgs("Cache service rejected settings setup."));
                        return;
                    }
                    }
                }

                default:
                {
                    Logger.WriteLine("Unknown packet received on layer 0x{0}: {1}", ServiceLayer.Identity.ToString("x2"), p.ToString());
                    return;
                }
                }
            }

            case WorldDataLayer.Identity:
            {
                switch (p.SecondOpcode)
                {
                case WorldDataLayer.SetWorldActiveResponse:
                    Logger.WriteLine(Source.InnerNetwork, "World is ready for incoming user connections!");
                    break;
                }
                break;
            }
            }
        }
Example #18
0
        internal static void Handle(Packet p)
        {
            switch (p.FirstOpcode)
            {
            case ServiceLayer.Identity:
            {
                switch (p.SecondOpcode)
                {
                case ServiceLayer.InitializeRequest:
                {
                    return;                 // login service not handles incoming connections.
                }

                case ServiceLayer.InitializeResponse:             // connection init response
                {
                    InitializeResponse data = new InitializeResponse(p);

                    switch (data.Answer)
                    {
                    case InitializeResponse.Accepted:
                    {
                        CacheServiceConnection.Connection.SetRemoteService(data.RemoteServiceID, ( ServiceType )data.RemoteServiceType);
                        Logger.WriteLine(Source.InnerNetwork, "Connected to {0} (0x{1})", CacheServiceConnection.Connection.ServiceType, CacheServiceConnection.Connection.ServiceID.ToString("x2"));

                        // send set-settings request
                        //CacheServiceConnection.Send
                        //    (
                        //        new SetSettingsRequest().ToPacket
                        //        (
                        //            new LoginServiceSettings
                        //                (
                        //                    Service.LocalServiceUniqueId,
                        //                    Service.AutoCreateUsers,
                        //                    Service.DefaultAccessLevel
                        //                )
                        //        )
                        //    );

                        return;
                    }

                    case InitializeResponse.Rejected:
                    {
                        Logger.WriteLine(Source.InnerNetwork, "Connection rejected by remote service {0} (0x{1})", ( ServiceType )data.RemoteServiceType, data.RemoteServiceID);
                        return;
                    }
                    }

                    return;
                }

                case ServiceLayer.SetSettingsRequest:
                {
                    return;                 // login service not handles remote service settings request
                }

                case ServiceLayer.SetSettingsResponse:
                {
                    SetSettingsResponse response = new SetSettingsResponse(p);

                    switch (response.Response)
                    {
                    case SetSettingsResponse.Accepted:
                    {
                        Logger.WriteLine(Source.InnerNetwork, "Cache service accepted service settings.");
                        //UserConnectionsListener.Enable(); // start listen incoming user connections
                        return;
                    }

                    default:
                    {
                        Service.Terminate(new ServiceShutdownEventArgs("Cache service rejected settings setup."));
                        return;
                    }
                    }
                }

                default:
                {
                    Logger.WriteLine("Unknown packet received on layer 0x{0}: {1}", ServiceLayer.Identity.ToString("x2"), p.ToString());
                    return;
                }
                }
            }
            }
        }
Example #19
0
        /// <summary>
        /// This function reads data from the csv files and write them into the database
        /// Needs to be run once time
        /// </summary>
        public async Task <InitializeResponse> InitializeDB(InitializeRequest request)
        {
            var response = new InitializeResponse();

            try
            {
                #region Validate
                var currentDbRegions = await _db.Regions.ToListAsync();

                var currentDbEmployees = await _db.Employees.ToListAsync();

                if (currentDbRegions.Count > 0 || currentDbEmployees.Count > 0)
                {
                    throw new Exception("Database Already Initialized");
                }
                #endregion

                var currentpath      = Directory.GetCurrentDirectory();
                var regionsCsvPath   = Path.Combine(currentpath, "CSV", "regions.csv");
                var employeesCsvPath = Path.Combine(currentpath, "CSV", "employees.csv");

                var regions = await File.ReadAllLinesAsync(regionsCsvPath);

                var employees = await File.ReadAllLinesAsync(employeesCsvPath);

                #region ReadRegions
                var listRegions = new List <Regions>();
                foreach (var region in regions)
                {
                    string[] arr = new string[3];
                    //checking if starts with double quotes
                    if (region.StartsWith("\""))
                    {
                        arr[0] = region.Substring(region.IndexOf("\""), region.LastIndexOf("\"") + 1);
                        var ids = region.Replace(arr[0], "");
                        arr[1] = ids.Split(",")[1];
                        arr[2] = ids.Split(",")[2];
                    }
                    else
                    {
                        arr = region.Split(",");
                    }

                    // checking if contains any parent
                    int?idParent = null;
                    if (!string.IsNullOrEmpty(arr[2]))
                    {
                        idParent = Convert.ToInt32(arr[2]);
                    }

                    //checking if the data is valid, if not valid, skip current region
                    int id = 0;
                    int.TryParse(arr[1], out id);
                    if (id == 0)
                    {
                        continue;
                    }

                    listRegions.Add(new Regions()
                    {
                        Name     = arr[0],
                        Id       = id,
                        IdParent = idParent
                    });
                }
                _db.Regions.AddRange(listRegions);
                #endregion

                #region ReadEmployees
                var listEmployees = new List <Employees>();
                foreach (var employee in employees)
                {
                    string[] arr = employee.Split(",");

                    listEmployees.Add(new Employees()
                    {
                        IdRegion  = Convert.ToInt32(arr[0]),
                        FirstName = arr[1],
                        LastName  = arr[2]
                    });
                }
                _db.Employees.AddRange(listEmployees);
                #endregion
                await _db.SaveChangesAsync();

                response.Message   = $"Inserted {listEmployees.Count} Employees and {listRegions} regions";
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.SetException(ex);
                _logger.LogError(ex, ex.Message);
            }

            return(response);
        }
        /// <summary>
        /// Handles incoming packet.
        /// </summary>
        /// <param name="p">Received <see cref="Packet"/> object.</param>
        internal static void Handle(Packet p)
        {
            switch (p.FirstOpcode)
            {
            case ServiceLayer.Identity:
            {
                switch (p.SecondOpcode)
                {
                case ServiceLayer.InitializeRequest:
                {
                    return;                 // login service not handles incoming connections.
                }

                case ServiceLayer.InitializeResponse:             // connection init response
                {
                    InitializeResponse data = new InitializeResponse(p);

                    switch (data.Answer)
                    {
                    case InitializeResponse.Accepted:
                    {
                        CacheServiceConnection.Connection.SetRemoteService(data.RemoteServiceID, ( ServiceType )data.RemoteServiceType);
                        Logger.WriteLine(Source.InnerNetwork, "Authorized on {0} (0x{1})", CacheServiceConnection.Connection.ServiceType, CacheServiceConnection.Connection.ServiceID.ToString("x2"));

                        // send set-settings request
                        CacheServiceConnection.Send
                        (
                            new SetSettingsRequest().ToPacket
                            (
                                new LoginServiceSettings
                                (
                                    Settings.Default.ServiceUniqueID,
                                    Settings.Default.LoginServiceAutoCreateUsers,
                                    Settings.Default.LoginServiceDefaultAccessLevel
                                )
                            )
                        );

                        return;
                    }

                    case InitializeResponse.Rejected:
                    {
                        Logger.WriteLine(Source.InnerNetwork, "Connection rejected by {0} (0x{1})", ( ServiceType )data.RemoteServiceType, data.RemoteServiceID);
                        return;
                    }
                    }

                    return;
                }

                case ServiceLayer.SetSettingsRequest:
                {
                    return;                 // login service not handles remote service settings request
                }

                case ServiceLayer.SetSettingsResponse:
                {
                    SetSettingsResponse response = new SetSettingsResponse(p);

                    switch (response.Response)
                    {
                    case SetSettingsResponse.Accepted:
                    {
                        Logger.WriteLine(Source.InnerNetwork, "Cache service accepted service settings.");
                        //UserConnectionsListener.Enable(); // start listen incoming user connections
                        return;
                    }

                    default:
                    {
                        Service.Terminate(new ServiceShutdownEventArgs("Cache service rejected settings setup."));
                        return;
                    }
                    }
                }

                default:
                {
                    Logger.WriteLine("Unknown packet received on layer 0x{0}: {1}", ServiceLayer.Identity.ToString("x2"), p.ToString());
                    return;
                }
                }
            }

            case UserDataLayer.Identity:
            {
                switch (p.SecondOpcode)
                {
                case UserDataLayer.UserAuthenticationResponse:
                {
                    UserAuthenticationResponse response = new UserAuthenticationResponse(p);
                    QueuedRequest request = QueuedRequestsPool.Dequeue(response.RequestID);

                    if (QueuedRequest.IsValid(request))
                    {
                        switch (response.Response)
                        {
                        case UserAuthenticationResponseType.UserAccepted:                     // accepted or created by cache
                        {
                            request.UserConnection.Session.AccountID = response.UserID;
                            request.UserConnection.Session.LastWorld = response.LastWorldID;

                            if (response.AccessLevel < Settings.Default.LoginServiceAllowedAccessLevel)
                            {
                                request.Send(LoginFailed.ToPacket(UserAuthenticationResponseType.AccessFailed));
                                UserConnectionsListener.CloseActiveConnection(request.UserConnection);
                                return;
                            }

                            long requestId = long.MinValue;

                            if (QueuedRequestsPool.Enqueue(request.UserConnection, ref requestId))
                            {
                                CacheServiceConnection.Send
                                (
                                    new CacheUserSessionRequest
                                    (
                                        requestId,
                                        request.UserConnection.Session
                                    ).ToPacket()
                                );
                            }
                            else
                            {
                                Logger.WriteLine(Source.InnerNetwork, "Failed to send CacheUserSessionRequest to cache service, request was not enqueued by QueuedRequestsPool ?...");
                                UserConnectionsListener.CloseActiveConnection(request.UserConnection);
                            }

                            return;
                        }

                        default:
                        {
                            request.Send(LoginFailed.ToPacket(response.Response));
                            UserConnectionsListener.CloseActiveConnection(request.UserConnection);
                            return;
                        }
                        }
                    }

                    break;
                }

                case UserDataLayer.CacheUserSessionResponse:
                {
                    CacheUserSessionResponse response = new CacheUserSessionResponse(p);
                    QueuedRequest            request  = QueuedRequestsPool.Dequeue(response.RequestID);

                    if (QueuedRequest.IsValid(request))
                    {
                        switch (response.Response)
                        {
                        case CacheUserSessionResponse.Failed:
                        {
                            Logger.WriteLine("Failed to cache user session data on cache server side");
                            request.Send(LoginFailed.ToPacket(UserAuthenticationResponseType.SystemError));
                            UserConnectionsListener.CloseActiveConnection(request.UserConnection);
                            return;
                        }

                        case CacheUserSessionResponse.Accepted:
                        {
                            request.Send(LoginOk.ToPacket(request.UserConnection.Session));
                            return;
                        }
                        }
                    }
                    else
                    {
                        Logger.WriteLine(Source.OuterNetwork, "Failed to send ServerPackets.WorldsList to client, request was not dequeued by QueuedRequestsPool ?...");
                        UserConnectionsListener.CloseActiveConnection(request.UserConnection);
                    }

                    return;
                }

                case UserDataLayer.WorldsListResponse:
                {
                    WorldsListResponse response = new WorldsListResponse(p);
                    QueuedRequest      request  = QueuedRequestsPool.Dequeue(response.RequestID);

                    if (QueuedRequest.IsValid(request))
                    {
                        request.Send(ServerList.ToPacket(request.UserConnection.Session.LastWorld, response.Data));
                    }
                    else
                    {
                        Logger.WriteLine(Source.OuterNetwork, "Failed to send ServerPackets.WorldsList to client, request was not dequeued by QueuedRequestsPool ?...");
                        UserConnectionsListener.CloseActiveConnection(request.UserConnection);
                    }

                    return;
                }

                case UserDataLayer.JoinWorldResponse:
                {
                    JoinWorldResponse response = new JoinWorldResponse(p);
                    QueuedRequest     request  = QueuedRequestsPool.Dequeue(response.RequestID);

                    if (QueuedRequest.IsValid(request))
                    {
                        switch (response.Result)
                        {
                        case JoinWorldRequestResult.Accepted:
                        {
                            request.UserConnection.Send(PlayAccepted.ToPacket(request.UserConnection.Session));
                            break;
                        }

                        default:
                        {
                            request.UserConnection.Send(PlayFail.ToPacket(response.Result));
                            break;
                        }
                        }
                    }

                    UserConnectionsListener.CloseConnectionWithoutLogout(request.UserConnection);

                    return;
                }
                }

                break;
            }
            }

            Logger.WriteLine("Unknown packet received from {0} service on layer 0x{1}:{2}{3}", ServiceType.LoginService, p.FirstOpcode.ToString("x2"), Environment.NewLine, p.ToString());
        }