예제 #1
0
        public static void Begin(OrganizationId organizationId, Guid contentMailboxGuid, bool executeReconcileFolders, Action <Exception> onEndCallback)
        {
            ArgumentValidator.ThrowIfNull("organizationId", organizationId);
            ArgumentValidator.ThrowIfEmpty("contentMailboxGuid", contentMailboxGuid);
            ArgumentValidator.ThrowIfNull("onEndCallback", onEndCallback);
            PublicFolderSynchronizer.Tracer.TraceDebug <OrganizationId, Guid, bool>(0L, "PublicFolderSynchronizer.Begin() for organization {0}, mailbox {1}, executeReconcileFolders {2}", organizationId, contentMailboxGuid, executeReconcileFolders);
            ConfigBase <MRSConfigSchema> .InitializeConfigProvider(new Func <IConfigSchema, IConfigProvider>(ConfigProvider.CreateProvider));

            IActivityScope activityScope = ActivityContext.Start(null, ActivityType.System);

            activityScope.Component = "PublicFolderSynchronizer";
            try
            {
                PublicFolderSynchronizerContext publicFolderSynchronizerContext = new PublicFolderSynchronizerContext(organizationId, contentMailboxGuid, false, executeReconcileFolders, activityScope.ActivityId);
                PublicFolderSynchronizer        publicFolderSynchronizer        = new PublicFolderSynchronizer(publicFolderSynchronizerContext, activityScope, onEndCallback);
                PublicFolderSynchronizer.Tracer.TraceDebug <int>(0L, "Created PublicFolderSynchronizer={0}", publicFolderSynchronizer.GetHashCode());
                publicFolderSynchronizer.Execute();
            }
            finally
            {
                ActivityContext.ClearThreadScope();
            }
        }
        // Token: 0x06000004 RID: 4 RVA: 0x00002248 File Offset: 0x00000448
        protected override void OnStartInternal(string[] args)
        {
            try
            {
                ConfigBase <MRSConfigSchema> .InitializeConfigProvider(new Func <IConfigSchema, IConfigProvider>(ConfigProvider.CreateProvider));

                if (!ConfigBase <MRSConfigSchema> .GetConfig <bool>("IsEnabled"))
                {
                    MRSService.LogEvent(MRSEventLogConstants.Tuple_ServiceIsDisabled, new object[0]);
                    this.AbortStartup(null);
                }
                else
                {
                    MrsTracer.Service.Debug("Starting Mailbox Replication Service", new object[0]);
                    MRSService.Instance = new MRSService();
                    this.host           = new ServiceHost(typeof(MailboxReplicationService), new Uri[0]);
                    this.proxyHost      = new ServiceHost(typeof(MailboxReplicationProxyService), new Uri[0]);
                    if (MailboxReplicationServiceImpl.runningAsService)
                    {
                        base.RequestAdditionalTime((int)(this.host.OpenTimeout + TimeSpan.FromSeconds(10.0)).TotalMilliseconds);
                    }
                    this.host.Open(TimeSpan.FromSeconds(120.0));
                    this.proxyHost.Open(TimeSpan.FromSeconds(120.0));
                    MRSService.Instance.StartService();
                    MrsTracer.Service.Debug("Mailbox Replication Service started successfully", new object[0]);
                    using (Process currentProcess = Process.GetCurrentProcess())
                    {
                        MRSService.LogEvent(MRSEventLogConstants.Tuple_ServiceStarted, new object[]
                        {
                            VersionInformation.MRS.ProductMajor,
                            VersionInformation.MRS.ProductMinor,
                            VersionInformation.MRS.BuildMajor,
                            VersionInformation.MRS.BuildMinor,
                            currentProcess.Id
                        });
                    }
                }
            }
            catch (AddressAlreadyInUseException ex)
            {
                this.AbortStartup(ex);
            }
            catch (ArgumentException ex2)
            {
                this.AbortStartup(ex2);
            }
            catch (ConfigurationErrorsException ex3)
            {
                this.AbortStartup(ex3);
            }
            catch (ConfigurationSettingsException ex4)
            {
                this.AbortStartup(ex4);
            }
            catch (InvalidOperationException ex5)
            {
                this.AbortStartup(ex5);
            }
            catch (System.TimeoutException ex6)
            {
                this.AbortStartup(ex6);
            }
            catch (System.ServiceProcess.TimeoutException ex7)
            {
                this.AbortStartup(ex7);
            }
            catch (CommunicationException ex8)
            {
                this.AbortStartup(ex8);
            }
            catch (RpcException ex9)
            {
                this.AbortStartup(ex9);
            }
        }