private void RemoveMoveItem(ListViewItem item) { MoveServer server = item.Tag as MoveServer; listViewMoves.Items.Remove(item); server.Delete(); }
public void Move(MoveInfo info) { try { DicomServer dicomServer = ServiceLocator.Retrieve <DicomServer>(); string lastStatus = string.Empty; _Scp.Timeout = dicomServer.ClientTimeout; foreach (string aetitle in _AeTitles) { if (!Move(_Scp, info, aetitle, dicomServer.TemporaryDirectory, ref lastStatus) && EnableRetry && NumberOfRetries > 0) { MoveServer server = new MoveServer(_Scp); Job <MoveServer> retryJob = new Job <MoveServer>() { Loops = 1, Data = server }; server.DestinationAE = aetitle; server.Info = info; server.RetryCount = NumberOfRetries; server.LastStatus = lastStatus; server.IPAddress = _Scp.PeerAddress.ToString(); retryJob.StartTime = Timeout.Milliseconds().FromNow(); Module.Scheduler.SubmitJob <MoveServer>(retryJob, Retry); } } } catch (Exception e) { Logger.Global.SystemException(string.Empty, e); } }
public MainForm() { InitializeComponent(); var moveServer = new MoveServer(); var renderSystem = moveServer.GetEntitySystem<RenderSystem>(); renderSystem.TargetGraphics = CreateGraphics(); moveServer.Start(); _serverThread = new Thread(() => { moveServer.Run(); }); _serverThread.IsBackground = true; _serverThread.Start(); var th = new Thread(() => { while (true) { var fontStyle = FontStyle.Bold; //Thread.Sleep(1); var net = moveServer.LookupSystem<BifrostServer>(); if (net != null) { var stats = net.GetStats(); Thread.Sleep(1000); var stats2 = net.GetStats(); if (stats != null && stats2 != null) { var oDiff = stats2.BytesOutPerSec - stats.BytesOutPerSec; var iDiff = stats2.BytesInPerSec - stats.BytesInPerSec; //oDiff = (float)oDiff; var outBytes = Math.Round(oDiff / 1024f * 8f, 2); var inBytes = Math.Round(iDiff / 1024f * 8f, 2); try { lock(renderSystem.LockObject) { var g = renderSystem.TextLayer; if (g != null) { g.Clear(Color.White); g.DrawString("Out kbps: " + outBytes, new Font(FontFamily.GenericMonospace, 12, fontStyle), Brushes.Black, 0, 0); g.DrawString("In kbps : " + inBytes, new Font(FontFamily.GenericMonospace, 12, fontStyle), Brushes.Black, 0, 15); } } } catch { } } } } }); th.IsBackground = true; th.Start(); }
public void SerializeAndDeSerializeMoveServerMessages() { MoveServer move = new MoveServer(0, Move.NotAllowed); byte[] bytes = Serializer.Serialize(move, playerIntegerSize); MoveServer message = (MoveServer)Serializer.DeSerializeClient(bytes, playerIntegerSize); Assert.AreEqual(move, message, "Should be able to serialize and deserialize the move server message."); }
private void UpdateMoveStatus(MoveServer server, string status) { ListViewItem item = (from i in listViewMoves.Items.OfType <ListViewItem>() where i.Tag == server select i).FirstOrDefault(); if (item != null) { server.LastStatus = status; item.Text = status; } }
private void Retry(Job <MoveServer> job, MoveServer server) { string lastStatus = string.Empty; DicomServer dicomServer = ServiceLocator.Retrieve <DicomServer>(); bool success; server.Scp.AETitle = dicomServer.AETitle; server.Scp.PeerAddress = IPAddress.Parse(dicomServer.HostAddress); server.Scp.Timeout = dicomServer.ClientTimeout; success = Move(server.Scp, server.Info, server.DestinationAE, dicomServer.TemporaryDirectory, ref lastStatus); server.RetryCount--; // // If the store operation failed and we do not have not exhausted our retry count we // will try to send this dataset again later // if (!success && server.RetryCount > 0) { Job <MoveServer> retryJob = new Job <MoveServer>() { Loops = 1, Data = server }; string retryMessage = server.RetryCount > 0 ? string.Format("are {0} retries", server.RetryCount) : "is only 1 retry"; string message = string.Format("[Rules] Failed to successfully move dataset to {0}. There {0} left.", server.Scp.AETitle, retryMessage); Logger.Global.SystemMessage(LogType.Error, message, string.Empty); retryJob.StartTime = Timeout.Milliseconds().FromNow(); Module.Scheduler.SubmitJob <MoveServer>(retryJob, Retry); } else { // // If the dataset is not successfully store we need to save the info so that it can be manually sent to // its destination. // if (!success) { try { string message = string.Format("[Rules] Failed to successfully move dataset to {0} after {1} retries. Dataset will be added to manual resend queue", server.Scp.AETitle, NumberOfRetries); Logger.Global.SystemMessage(LogType.Error, message, string.Empty); server.Save(); } catch (Exception e) { Logger.Global.SystemException(string.Empty, e); } } } }
private Dictionary <string, MoveServer> LoadMoveFailures(string failureDirectory) { Dictionary <string, MoveServer> failures = new Dictionary <string, MoveServer>(); IEnumerable <FileInfo> files = FileSearcher.GetFiles(new DirectoryInfo(failureDirectory), "move*.fail", SearchOption.TopDirectoryOnly); foreach (FileInfo file in files.OrderBy(f => f.CreationTime)) { try { MoveServer server = Utils.LoadFromXml <MoveServer>(file.FullName); server.FileName = file.FullName; failures.Add(file.FullName, server); } catch (Exception e) { Messager.ShowError(_View as Form, e); } } return(failures); }
private void SendMoveItem(ListViewItem item) { MoveServer failure = item.Tag as MoveServer; using (ProgressDialog progress = new ProgressDialog()) { string status = string.Empty; progress.Title = "Retrying"; progress.CancelMessage = "Please wait..."; progress.Line1 = string.Format("Sending {0} move request to server.", failure.Info.MoveType); progress.ShowDialog(this, DialogFlags.Modal | DialogFlags.NoMinimize | DialogFlags.AutoTime | DialogFlags.NoProgressBar); progress.Line2 = "Server AE: " + failure.Scp.AETitle; failure.Scp.PeerAddress = IPAddress.Parse(failure.IPAddress); if (!MoveClient.Move(failure.Scp, failure.Info, failure.DestinationAE, ProcessorConfiguration.Settings.TemporaryDirectory, ref status)) { UpdateMoveStatus(failure, status); } else { RemoveMoveItem(item); } } }
static void Main(string[] args) { Console.WriteLine("开始测试!"); var testMove = new MoveServer(); }