public override void Transfer()
        {
            RosSocket.CallService <rosapi.GetParamRequest, rosapi.GetParamResponse>("/rosapi/get_param",
                                                                                    ReceiveRobotName,
                                                                                    new rosapi.GetParamRequest("/robot/name", "default"));

            var robotDescriptionReceiver = new ServiceReceiver <rosapi.GetParamRequest, rosapi.GetParamResponse>(RosSocket, "/rosapi/get_param",
                                                                                                                 new rosapi.GetParamRequest(urdfParameter, "default"),
                                                                                                                 Path.DirectorySeparatorChar + urdfParameter + ".urdf");

            robotDescriptionReceiver.ReceiveEventHandler += ReceiveRobotDescription;
        }
        private void ReceiveRobotDescription(ServiceReceiver <rosapi.GetParamRequest, rosapi.GetParamResponse> serviceReceiver, rosapi.GetParamResponse serviceResponse)
        {
            string robotDescription = FormatTextFileContents(serviceResponse.value);

            Thread importResourceFilesThread = new Thread(() => ImportResourceFiles(robotDescription));

            importResourceFilesThread.Start();

            Thread writeTextFileThread = new Thread(() => WriteTextFile((string)serviceReceiver.HandlerParameter, robotDescription));

            writeTextFileThread.Start();

            Status["robotDescriptionReceived"].Set();
        }
        private void ReceiveResourceFile(ServiceReceiver <file_server.GetBinaryFileRequest, file_server.GetBinaryFileResponse> serviceReceiver, file_server.GetBinaryFileResponse serviceResponse)
        {
            byte[] fileContents    = serviceResponse.value;
            Uri    resourceFileUri = new Uri(serviceReceiver.ServiceParameter.name);

            if (IsColladaFile(resourceFileUri))
            {
                Thread importResourceFilesThread = new Thread(() => ImportColladaTextureFiles(resourceFileUri, System.Text.Encoding.UTF8.GetString(fileContents)));
                importResourceFilesThread.Start();
            }
            else
            {
                UpdateFileRequestStatus(resourceFileUri.ToString());
            }

            Thread writeTextFileThread = new Thread(() => WriteBinaryResponseToFile((string)serviceReceiver.HandlerParameter, fileContents));

            writeTextFileThread.Start();
        }
 private void ReceiveTextureFiles(ServiceReceiver <file_server.GetBinaryFileRequest, file_server.GetBinaryFileResponse> serviceReceiver, file_server.GetBinaryFileResponse serviceResponse)
 {
     WriteBinaryResponseToFile((string)serviceReceiver.HandlerParameter, serviceResponse.value);
     UpdateFileRequestStatus(serviceReceiver.ServiceParameter.name);
 }