Exemplo n.º 1
0
        private void PublishFiles(List <Uri> resourceFileUris)
        {
            foreach (Uri resourceFilePath in resourceFileUris)
            {
                string newPackagePath = GetNewPackagePath(resourceFilePath);
                if (FilesBeingProcessed.ContainsKey(newPackagePath))
                {
                    continue;
                }

                string absolutePath = Path.Combine(assetRootFolder, resourceFilePath.ToString().Substring("package://".Length));
                if (IsColladaFile(resourceFilePath))
                {
                    List <Uri> colladaTextureFiles = ReadDaeTextureUris(resourceFilePath, XDocument.Load(absolutePath));
                    PublishFiles(colladaTextureFiles);
                }

                try
                {
                    byte[] fileContents = File.ReadAllBytes(absolutePath);
                    SendFileToRos(newPackagePath, fileContents);
                }
                catch (IOException)
                {
                }
            }
        }
Exemplo n.º 2
0
        private void SendFileToRos(string rosPackagePath, byte[] fileContents)
        {
            RosSocket.CallService <file_server.SaveBinaryFileRequest, file_server.SaveBinaryFileResponse>(
                "/file_server/save_file",
                SaveFileResponseHandler,
                new file_server.SaveBinaryFileRequest(rosPackagePath, fileContents));

            FilesBeingProcessed.Add(rosPackagePath, false);
        }
        private List <ServiceReceiver <file_server.GetBinaryFileRequest, file_server.GetBinaryFileResponse> > RequestResourceFiles(List <Uri> resourceFileUris)
        {
            var serviceReceivers = new List <ServiceReceiver <file_server.GetBinaryFileRequest, file_server.GetBinaryFileResponse> >();

            foreach (Uri resourceFilePath in resourceFileUris)
            {
                if (!FilesBeingProcessed.ContainsKey(resourceFilePath.ToString()))
                {
                    FilesBeingProcessed.Add(resourceFilePath.ToString(), false);
                    serviceReceivers.Add(
                        new ServiceReceiver <file_server.GetBinaryFileRequest, file_server.GetBinaryFileResponse>(
                            RosSocket,
                            "/file_server/get_file",
                            new file_server.GetBinaryFileRequest(resourceFilePath.ToString()),
                            GetLocalFilename(resourceFilePath)));
                }
            }
            return(serviceReceivers);
        }