private object ReceivePackage(IPackage package) { if (!package.IsValid) { return(null); } ReceivingPackage?.Invoke(this, new PackageEventArgs(package)); if (!package.IsValid) { return(null); } if (package.Receiver != this) { package.Tick(); package.Sender.SendPackage(package); return(null); } IReport report = package.Unwrap(); ReceivedPackage?.Invoke(this, new ReportEventArgs(report)); report.Sender.SentPackage?.Invoke(report.Sender, new ReportEventArgs(report)); return(report.Content); }
private T ReceivePackage <T>(Package <T> package) { if (!package.IsValid) { return(default(T)); } ReceivingPackage?.Invoke(this, new PackageEventArgs(package)); if (!package.IsValid) { return(default(T)); } if (package.Receiver != this) { package.Tick(); package.Sender.SendPackage(package); return(default(T)); } Report <T> report = package.Unwrap(); ReceivedPackage?.Invoke(this, new ReportEventArgs(report)); report.Sender.SentPackage?.Invoke(report.Sender, new ReportEventArgs(report)); return(report.Content); }