public void SaveFileTransaction(FileTransferBase file) { try { rx.BeginTransaction(); file.isCompleted = (file.Status == TransferStatus.Completed); RepositoryItem ri = GetRepositoryItem(file); if (ri != null) { ri.Availability = StatusToAvailability(file, ri.Availability); rx.Save(ri); } RepositoryItemVersion riv = GetRepositoryItemVersion(file); if (riv != null) { riv.Availability = StatusToAvailability(file, riv.Availability); rx.Save(riv); } rx.Save(file); rx.Commit(); } catch (Exception ex) { rx.Rollback(); throw ex; } }
public override void TransferFile(FileTransferBase f, Platform platform) { try { String sourcepath = TemporarySanitizePath(f.Path); String sourcefilepath = Path.Combine(sourcepath, f.Filename); String destinationfilepath = ""; if (!platform.KeepFileStructure) { destinationfilepath = Path.Combine(CurrentPlatform.WCF.PhysicalPath, f.Filename); } else { String dirguid = f.Path.Split(Path.VolumeSeparatorChar)[0]; String structure = f.Path.Substring(Path.GetPathRoot(f.Path).Length) + "\\"; destinationfilepath = Path.Combine(CurrentPlatform.WCF.PhysicalPath, dirguid, structure, f.Filename); } if (File.Exists(sourcefilepath)) { FileInfo fi = new FileInfo(sourcefilepath); FileTransferServiceClient stc = new FileTransferServiceClient(); //stc.Endpoint.Address = new System.ServiceModel.EndpointAddress("net.tcp://#IP_SCORM_SERVER#:9999/"); using (FileStream fs = new FileStream(sourcefilepath, FileMode.Open, FileAccess.Read, FileShare.Read)) { //Console.WriteLine(DateTime.Now.ToLongTimeString()); //FileTransferServiceClient proxy = new FileTransferServiceClient(); stc.Upload(destinationfilepath, platform.Name, fs); stc.Close(); } f.Status = f.Decompress ? TransferStatus.ReadyToUnzip : TransferStatus.Completed; //return f; } else { f.Status = TransferStatus.UploadFileNotFound; // return f; } } catch (Exception ex) { f.Status = TransferStatus.Error; //return f; //throw ex; } }
public RepositoryItemVersion GetRepositoryItemVersion(FileTransferBase file) { try { return(rx.Get <RepositoryItemVersion>(file.IdVersion)); } catch (Exception ex) { throw ex; } }
public RepositoryItem GetRepositoryItem(FileTransferBase file) { try { List <RepositoryItem> items = (from item in rx.Query <RepositoryItem>() where item.Id == file.IdItem && item.IdVersion == file.IdVersion select item).Skip(0).Take(1).ToList(); if (items.Count() == 1) { return(items.FirstOrDefault()); } return(null); } catch (Exception ex) { throw ex; } }
public void Unzip(FileTransferBase file, String filepath, String newpath) { try { Ionic.Zip.ZipFile f = new ZipFile(Path.Combine(filepath, file.Filename)); //string folder=""; f.ExtractAll(Path.Combine(newpath, file.UniqueIdVersion.ToString()), ExtractExistingFileAction.DoNotOverwrite); //file.Status = TransferStatus.Unzipped; } catch (Exception ex) { file.Status = TransferStatus.UnableToUnzip; throw; } }
private void button1_Click(object sender, EventArgs e) { FileMQServiceClient servicetransfer = new FileMQServiceClient(); servicetransfer.InnerChannel.Opening += InnerChannel_Opening; servicetransfer.InnerChannel.Opened += InnerChannel_Opened; servicetransfer.InnerChannel.Closing += InnerChannel_Closing; servicetransfer.InnerChannel.Closed += InnerChannel_Closed; servicetransfer.InnerChannel.Faulted += InnerChannel_Faulted; servicetransfer.InnerChannel.UnknownMessageReceived += InnerChannel_UnknownMessageReceived; servicetransfer.Endpoint.Address = new System.ServiceModel.EndpointAddress(txtServerAddress.Text); List <FileTransferBase> list = new List <FileTransferBase>(); String path = txtPath.Text; System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(path); System.IO.FileInfo[] files = di.GetFiles("*.*", System.IO.SearchOption.TopDirectoryOnly); foreach (var item in files) { String dirname = item.DirectoryName; String filename = item.Name; if (item.Length <= 104857600) { FileTransferBase ftb1 = new FileTransferBase() { Path = dirname, Filename = filename }; list.Add(ftb1); } } var n = list.Count; servicetransfer.TransferAllFilesDirect("TestTransfer", list.Take(n).ToArray()); }
private void ApplyVerificationResult(FileTransferBase ft, FileTransferVerificationResult result) { switch (result) { case FileTransferVerificationResult.Success: ft.State = FileTransferState.Success; break; case FileTransferVerificationResult.ChecksumMismatch: ft.State = FileTransferState.Failure; ft.ErrorMessage = "Checksum mismatch"; break; default: ft.State = FileTransferState.Failure; ft.ErrorMessage = "Unknown failure"; break; } ft.Delete(); OnTransferStateChanged(ft); }
public abstract void TransferFile(FileTransferBase f, Platform platform);
/// <summary>Register service method with a service binder with or without implementation. Useful when customizing the service binding logic. /// Note: this method is part of an experimental API that can change or be removed without any prior notice.</summary> /// <param name="serviceBinder">Service methods will be bound by calling <c>AddMethod</c> on this object.</param> /// <param name="serviceImpl">An object implementing the server-side handling logic.</param> public static void BindService(grpc::ServiceBinderBase serviceBinder, FileTransferBase serviceImpl) { serviceBinder.AddMethod(__Method_FileDownload, serviceImpl == null ? null : new grpc::ServerStreamingServerMethod <global::GrpcService.FileRequest, global::GrpcService.FileReply>(serviceImpl.FileDownload)); serviceBinder.AddMethod(__Method_FileUpload, serviceImpl == null ? null : new grpc::DuplexStreamingServerMethod <global::GrpcService.FileReply, global::GrpcService.FileReturn>(serviceImpl.FileUpload)); }
/// <summary>Creates service definition that can be registered with a server</summary> /// <param name="serviceImpl">An object implementing the server-side handling logic.</param> public static grpc::ServerServiceDefinition BindService(FileTransferBase serviceImpl) { return(grpc::ServerServiceDefinition.CreateBuilder() .AddMethod(__Method_FileDownload, serviceImpl.FileDownload) .AddMethod(__Method_FileUpload, serviceImpl.FileUpload).Build()); }
private ItemAvailability StatusToAvailability(FileTransferBase file, ItemAvailability current) { return(StatusToAvailability(file.Status, current)); }
public void SaveFile(FileTransferBase file) { rx.Save(file); }