コード例 #1
0
ファイル: Catalog.cs プロジェクト: sun293529884/orleans
        public DetailedGrainReport GetDetailedGrainReport(GrainId grain)
        {
            var report = new DetailedGrainReport
            {
                Grain       = grain,
                SiloAddress = LocalSilo,
                SiloName    = localSiloName,
                LocalCacheActivationAddress     = directory.GetLocalCacheData(grain),
                LocalDirectoryActivationAddress = directory.GetLocalDirectoryData(grain).Address,
                PrimaryForGrain = directory.GetPrimaryForGrain(grain)
            };

            try
            {
                var properties = this.grainPropertiesResolver.GetGrainProperties(grain.Type);
                if (properties.Properties.TryGetValue(WellKnownGrainTypeProperties.TypeName, out var grainClassName))
                {
                    report.GrainClassTypeName = grainClassName;
                }
            }
            catch (Exception exc)
            {
                report.GrainClassTypeName = exc.ToString();
            }

            var activation = activations.FindTarget(grain);

            report.LocalActivation = activation switch
            {
                ActivationData data => data.ToDetailedString(),
                               _ => activation?.ToString()
            };

            return(report);
        }