예제 #1
0
        // todo: consider making this an async method.
        public FileSystemQueryResponse Execute(FileSystemQueryRequest request)
        {
            string responseText = null;

            switch (request.QueryType)
            {
            case FileSystemQueryTypeEnum.DirectoryExists:
                responseText = Directory.Exists(request.FolderPath).ToString();
                break;
            }

            var response = new FileSystemQueryResponse(request, responseText);

            return(response);
        }
예제 #2
0
        private void ProcessRequest()
        {
            //Console.WriteLine($"Waiting to receive {pipeName} request.");
            var request = Serializer.DeserializeWithLengthPrefix <FileSystemQueryRequest>(pipe, PrefixStyle.Base128);

            Console.WriteLine($"Received {pipeName} request: {request}.");

            var service = new FileSystemQueryService();
            FileSystemQueryResponse response = null;

            try
            {
                response = service.Execute(request);
            }
            catch (Exception ex) { }

            Console.WriteLine($"Sending {pipeName} response: {response}.");
            Serializer.SerializeWithLengthPrefix(pipe, response, PrefixStyle.Base128);
            //Console.WriteLine($"Sent {pipeName} response.");
        }
예제 #3
0
        public FileSystemQueryResponse Execute(FileSystemQueryRequest request)
        {
            FileSystemQueryResponse response = null;
            var pipeName = nameof(FileSystemQueryProxy);

            var pipe = new NamedPipeClientStream(".", pipeName, PipeDirection.InOut, PipeOptions.None);

            Console.WriteLine($"nprc:{pipeName} connecting to relay.");
            pipe.ConnectAsync(5000).Wait();
            Console.WriteLine($"nprc:{pipeName} connected.");

            Console.WriteLine($"nprc:Sending {pipeName} request: {request}.");
            Serializer.SerializeWithLengthPrefix(pipe, request, PrefixStyle.Base128);
            //Console.WriteLine($"nprc:Sent {pipeName} request.");

            //Console.WriteLine($"nprc:Receiving {pipeName} response.");
            response = Serializer.DeserializeWithLengthPrefix <FileSystemQueryResponse>(pipe, PrefixStyle.Base128);
            Console.WriteLine($"nprc:Received {pipeName} response: {response}.");

            return(response);
        }
예제 #4
0
        private void ProcessProxyRequest()
        {
            try
            {
                if (!_proxyPipe.IsConnected)
                {
                    Console.WriteLine($"nprs:Listening for {_proxyPipeName} connection.");
                    _proxyPipe.WaitForConnection();
                    Console.WriteLine($"nprs:{_proxyPipeName} connected.");
                }

                //Console.WriteLine($"nprs:Waiting to receive {_proxyPipeName} request.");
                var request = Serializer.DeserializeWithLengthPrefix <FileSystemQueryRequest>(_proxyPipe, PrefixStyle.Base128);
                Console.WriteLine($"nprs:Received {_proxyPipeName} request: {request}.");

                FileSystemQueryResponse response = null;
                if (_servicePipe != null && _servicePipe.IsConnected)
                {
                    Console.WriteLine($"nprs:Forwarding {_servicePipeName} request: {request}.");
                    Serializer.SerializeWithLengthPrefix(_servicePipe, request, PrefixStyle.Base128);
                    //Console.WriteLine($"nprs:Forwared {_servicePipeName} request.");

                    //Console.WriteLine($"nprs:Waiting to receive {_servicePipeName} response.");
                    response = Serializer.DeserializeWithLengthPrefix <FileSystemQueryResponse>(_servicePipe, PrefixStyle.Base128);
                    Console.WriteLine($"nprs:Received {_servicePipeName} response: {response}.");
                }


                //Console.WriteLine($"nprs:Returning {_proxyPipeName} response.");
                Serializer.SerializeWithLengthPrefix(_proxyPipe, response, PrefixStyle.Base128);
                Console.WriteLine($"nprs:Returned {_proxyPipeName} response.");

                _proxyPipe.Disconnect();
            }
            catch (Exception ex)
            {
            }
        }