private void OnMetaDataExchangeReceived(IMetaDataShareModule sender, MetaDataAnswerReceivedArgs args)
        {
            OnLog?.Invoke(this, new OnLogHandlerArgs(
                              $"Received MetaDataExchange with {args.MetaDataAnswer?.DomesticChanges.Changes.Count} domestic changes" +
                              $" and changes from {args.MetaDataAnswer.AlienChanges.Count} other services",
                              LogReason.RABBITMQ_COMMUNICATION));

            var changes = new List <ChangeSet>();

            if (args.MetaDataAnswer.AlienChanges != null)
            {
                changes.AddRange(args.MetaDataAnswer.AlienChanges);
            }

            if (args.MetaDataAnswer.DomesticChanges != null)
            {
                changes.Add(args.MetaDataAnswer.DomesticChanges);
            }

            foreach (var changeSet in changes)
            {
                var changeData = changeSet.Changes.OrderBy(c => c.TimeStamp).ToList();

                lock (data)
                {
                    fileManagerModule.ApplyChanges(changeData);
                    data.AddSortedAlienChanges(changeSet.ServiceUID, changeData);
                    SaveData();
                }
            }
        }
 private void SetUpMetaDataShareModule()
 {
     metaDataModule = new MetaDataShareModule(GetDomesticChangesSince, GetAlienChangesSince);
     metaDataModule.OnMetaDataExchangeReceived += OnMetaDataExchangeReceived;
 }