/// <summary> /// Добавление материала на конвейер для транспортировки /// </summary> /// <param name="material"></param> async public void Deliver(List <Material> material, Delivered ondelivered) { Status = Status.Delivering; if (material != null) { // Расчитать время, необходимое на доставку материала до конца конвейера по формуле T=S/V // Запусить метод с задержкой на указанное время и передать ему материал, который требуется доставить // и внешний метод обратного вызова, который требуется вызвать при завершении доставки материала /* Добавление материала на конвейер: * - Найти следующий свободный UID для материала на ленте * - Добавить в словарь материал и его UID * - вызвать метод доставки передав ему UID материала на ленте */ ushort uid = GetNextUID(); Material.Add(uid, material); MaterialCount = Material.Count; await OnDelivered(uid, ondelivered); } else { logger.Error($"Материал для загрузки на конвейер {ConveyorId} не может быть NULL"); throw new ArgumentNullException($"Материал для загрузки на конвейер {ConveyorId} не может быть NULL"); } }
/// <summary> /// Метод, осуществляет доставку материала до конца конвейера и вызывает внешний метод при завершении доставки /// </summary> private async Task OnDelivered(ushort uid, Delivered delivered) { if (Speed == 0) { logger.Error($"Не установлена скорость перемещения для конвейера {ConveyorId}"); throw new DivideByZeroException($"Не установлена скорость перемещения для конвейера {ConveyorId}"); } List <Material> material = new List <Material>(); foreach (KeyValuePair <ushort, List <Material> > _material in Material) { if (_material.Key == uid) { material = _material.Value; break; } } double delay = (Math.Round(Length / Speed, 0)) * 1000; await Task.Delay(TimeSpan.FromMilliseconds(delay)); delivered?.Invoke(material); Material.Remove(uid); MaterialCount = Material.Count; Status = Status.Delivered; }
public void MarkAsDelivered() { if (_promise.TrySetResult(0)) { Delivered?.Invoke(this, EventArgs.Empty); } }
public void AddDelivered(DadTupleId upstreamId) { Debug.Assert(!Delivered.Contains(upstreamId)); Delivered.Add(upstreamId); // TODO: remove from shared? }
public void ToStorableEvent_uses_EventStreamName_property_if_present_on_non_domain_event_classes() { var e = new Delivered { EventStreamName = Any.Word() }; e.ToStorableEvent().StreamName.Should().Be(e.EventStreamName); }
public GamePlayEvents() { JobCancelled = new Cancelled(); JobDelivered = new Delivered(); FinedEvent = new Fined(); TollgateEvent = new Tollgate(); TrainEvent = new Transport(); FerryEvent = new Transport(); }
public void OnDelivered() { if (notified) { throw new InvalidOperationException("this token as already been notified"); } notified = true; Delivered?.Invoke(); }
public void SaveProcessedTuples(DadTupleId upstreamId, List <DadTuple> processedTuples) { Debug.Assert(!Processed.ContainsKey(upstreamId)); Debug.Assert(!Delivered.Contains(upstreamId)); foreach (var processedTuple in processedTuples) { Debug.Assert(!Deleted.Contains(processedTuple.Id)); } Processed.Add(upstreamId, processedTuples); // TODO: remove from shared? }
public override void AddInnerXML(XElement elemMessage) { if (Delivered > DateTime.MinValue) { elemMessage.Add(new XElement("delay", new XAttribute("stamp", Delivered.ToString()), new XAttribute("from", From), new XAttribute("xmlns", "urn:xmpp:delay"))); } if ((InnerXML != null) && (InnerXML.Length > 0)) { elemMessage.Add(XElement.Parse(InnerXML)); } base.AddInnerXML(elemMessage); }
public override int GetHashCode() { unchecked { var hashCode = EventId?.GetHashCode() ?? 0; hashCode = (hashCode * 397) ^ (BeaconId?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (ActionTime?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (Location?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ Trigger; hashCode = (hashCode * 397) ^ Delivered.GetHashCode(); hashCode = (hashCode * 397) ^ Background.GetHashCode(); return(hashCode); } }
internal void Notify(bool delivered) { if (notified) { throw new InvalidOperationException("this token as already been notified"); } notified = true; if (delivered) { Delivered.Invoke(); } else { Lost.Invoke(); } }
private void ExecuteAccept() { if (Delivered.Count > 0 && Delivered.First().ProductId != 0) { try { Date = Date.Date; Date = Date.AddHours(Time.Hour); Date = Date.AddMinutes(Time.Minute); if (Date > DateTime.Now) { Date = DateTime.Now; } CreatedSupply.Date = Date; CreatedSupply.DeliveredToWareHouse = Delivered; using (ProductRepository productRepository = new ProductRepository()) { foreach (var delivered in Delivered) { Product deliveredProduct = productRepository.GetById(delivered.ProductId); deliveredProduct.Amount += delivered.Amount; productRepository.SaveChanges(); } } SupplyRepository.Add(CreatedSupply); SupplyRepository.SaveChanges(); (View.Owner.DataContext as SupplyViewModel).Update(); View.Close(); } catch (Exception) { MessageBox.Show("Непредвиденная ошибка"); } } else { MessageBox.Show("Таблица не может быть пустой или содержать нулевые значения"); } }
public virtual int _GetUniqueIdentifier() { var hashCode = 399326290; hashCode = hashCode * -1521134295 + (Id?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (TransactionDateOccured?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (Status?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (Shipped.GetHashCode()); hashCode = hashCode * -1521134295 + (Invoiced.GetHashCode()); hashCode = hashCode * -1521134295 + (ShippedDateOccured?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (InvoicedDateOccured?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (Cancelled.GetHashCode()); hashCode = hashCode * -1521134295 + (InTransit.GetHashCode()); hashCode = hashCode * -1521134295 + (Picked.GetHashCode()); hashCode = hashCode * -1521134295 + (PaymentStatus.GetHashCode()); hashCode = hashCode * -1521134295 + (InitialOrderDate?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (FinalOrderDate?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (Delivered.GetHashCode()); hashCode = hashCode * -1521134295 + (Ordered.GetHashCode()); return(hashCode); }
//процесс доставки заказчику public virtual bool Deliver(Purchase purchase, SynchronizationContext context) { bool CanDeliver = DeliveringThread == null || !DeliveringThread.IsAlive; //смотрим, может ли доставщик выполнить доставку if (CanDeliver) { lock (purchase) { DeliveringThread = new Thread(() => { Thread.Sleep(10000); purchase.IsMade = true; //теперь считаем заказ выполненным context.Send(obj => Delivered?.Invoke(obj as Purchase, this), purchase); }); DeliveringThread.Start(); } } return(CanDeliver); }
public async void LoadDelivered() { //Triger que se ejecuta para actualizar la view model, cada vez que se muestra la ventana Delivered.LoadProducts(); }
public override int GetHashCode() => TrackingInformation.GetHashCode() ^ Description.GetHashCode() ^ Delivered.GetHashCode() ^ Weight.GetHashCode() ^ Status.GetHashCode();
public void Delivery() { var NextState = new Delivered(); DefineNextState(NextState); }
public DeliveredVM(Delivered delivered) : base(delivered) { }