Full Code of dotnet/orleans for AI

main a0a2909dcee9 cached
3194 files
16.6 MB
4.5M tokens
37670 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (18,099K chars total). Download the full file to get everything.
Repository: dotnet/orleans
Branch: main
Commit: a0a2909dcee9
Files: 3194
Total size: 16.6 MB

Directory structure:
gitextract_hngr272l/

├── .azure/
│   └── pipelines/
│       ├── build.yaml
│       ├── github-mirror.yaml
│       ├── nightly-main.yaml
│       └── templates/
│           ├── build.yaml
│           └── vars.yaml
├── .azuredevops/
│   └── dependabot.yml
├── .config/
│   ├── 1espt/
│   │   └── PipelineAutobaseliningConfig.yml
│   ├── guardian/
│   │   └── .gdnbaselines
│   └── tsaoptions.json
├── .devcontainer/
│   └── devcontainer.json
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── copilot-instructions.md
│   ├── dependabot.yml
│   ├── eventhubs-emulator/
│   │   └── Config.json
│   ├── policies/
│   │   └── resourceManagement.yml
│   └── workflows/
│       ├── ci.yml
│       ├── codeql.yml
│       ├── generate-api-diffs.yml
│       └── locker.yml
├── .gitignore
├── Build.cmd
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE
├── NuGet.Config
├── Orleans.slnx
├── Parallel-Tests.ps1
├── README.md
├── SUPPORT.md
├── Test.cmd
├── TestAll.cmd
├── build.ps1
├── common.ps1
├── distributed-tests.yml
├── es-metadata.yml
├── global.json
├── playground/
│   ├── ActivationRebalancing/
│   │   ├── ActivationRebalancing.AppHost/
│   │   │   ├── ActivationRebalancing.AppHost.csproj
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   ├── appsettings.Development.json
│   │   │   └── appsettings.json
│   │   ├── ActivationRebalancing.Cluster/
│   │   │   ├── ActivationRebalancing.Cluster.csproj
│   │   │   └── Program.cs
│   │   └── ActivationRebalancing.Frontend/
│   │       ├── ActivationRebalancing.Frontend.csproj
│   │       ├── Controllers/
│   │       │   └── StatsController.cs
│   │       ├── Program.cs
│   │       ├── Properties/
│   │       │   └── launchSettings.json
│   │       ├── appsettings.Development.json
│   │       ├── appsettings.json
│   │       └── wwwroot/
│   │           ├── index.html
│   │           └── worker.js
│   ├── ActivationRepartitioning/
│   │   ├── ActivationRepartitioning.AppHost/
│   │   │   ├── ActivationRepartitioning.AppHost.csproj
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   ├── appsettings.Development.json
│   │   │   └── appsettings.json
│   │   └── ActivationRepartitioning.Frontend/
│   │       ├── ActivationRepartitioning.Frontend.csproj
│   │       ├── Data/
│   │       │   └── ClusterDiagnosticsService.cs
│   │       ├── Program.cs
│   │       ├── Properties/
│   │       │   └── launchSettings.json
│   │       ├── appsettings.Development.json
│   │       ├── appsettings.json
│   │       └── wwwroot/
│   │           ├── css/
│   │           │   ├── open-iconic/
│   │           │   │   ├── FONT-LICENSE
│   │           │   │   ├── ICON-LICENSE
│   │           │   │   ├── README.md
│   │           │   │   └── font/
│   │           │   │       └── fonts/
│   │           │   │           └── open-iconic.otf
│   │           │   └── site.css
│   │           └── index.html
│   ├── ActivationSheddingToy/
│   │   ├── ActivationSheddingToy.csproj
│   │   ├── ActivationSheddingToyHostedService.cs
│   │   └── Program.cs
│   ├── ChaoticCluster/
│   │   ├── ChaoticCluster.AppHost/
│   │   │   ├── ChaoticCluster.AppHost.csproj
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   ├── appsettings.Development.json
│   │   │   └── appsettings.json
│   │   ├── ChaoticCluster.ServiceDefaults/
│   │   │   ├── ChaoticCluster.ServiceDefaults.csproj
│   │   │   └── Extensions.cs
│   │   └── ChaoticCluster.Silo/
│   │       ├── ChaoticCluster.Silo.csproj
│   │       ├── Program.cs
│   │       └── SiloBuilderConfigurator.cs
│   ├── DashboardCohosted/
│   │   ├── DashboardCohosted.csproj
│   │   ├── Program.cs
│   │   ├── Properties/
│   │   │   └── launchSettings.json
│   │   └── README.md
│   ├── DashboardSeparateHost/
│   │   ├── DashboardSeparateHost.csproj
│   │   ├── Program.cs
│   │   ├── Properties/
│   │   │   └── launchSettings.json
│   │   └── README.md
│   └── Directory.Build.props
├── samples/
│   └── README.md
├── sign/
│   ├── NuGet.Config
│   ├── Sign.proj
│   ├── Sign.props
│   ├── packages.config
│   └── snk/
│       ├── 35MSSharedLib1024.snk
│       ├── AspNetCore.snk
│       ├── ECMA.snk
│       ├── MSFT.snk
│       ├── Open.snk
│       └── SilverlightPlatformPublicKey.snk
├── spelling.dic
├── src/
│   ├── AWS/
│   │   ├── Orleans.Clustering.DynamoDB/
│   │   │   ├── AWSUtilsHostingExtensions.cs
│   │   │   ├── DynamoDBClusteringProviderBuilder.cs
│   │   │   ├── Membership/
│   │   │   │   ├── DynamoDBGatewayListProvider.cs
│   │   │   │   ├── DynamoDBGatewayListProviderHelper.cs
│   │   │   │   ├── DynamoDBMembershipHelper.cs
│   │   │   │   ├── DynamoDBMembershipTable.cs
│   │   │   │   └── SiloInstanceRecord.cs
│   │   │   ├── Options/
│   │   │   │   ├── DynamoDBClusteringOptions.cs
│   │   │   │   ├── DynamoDBClusteringSiloOptions.cs
│   │   │   │   └── DynamoDBGatewayOptions.cs
│   │   │   ├── Orleans.Clustering.DynamoDB.csproj
│   │   │   └── README.md
│   │   ├── Orleans.Persistence.DynamoDB/
│   │   │   ├── Hosting/
│   │   │   │   ├── DynamoDBGrainStorageProviderBuilder.cs
│   │   │   │   ├── DynamoDBGrainStorageServiceCollectionExtensions.cs
│   │   │   │   └── DynamoDBGrainStorageSiloBuilderExtensions.cs
│   │   │   ├── Options/
│   │   │   │   └── DynamoDBStorageOptions.cs
│   │   │   ├── Orleans.Persistence.DynamoDB.csproj
│   │   │   ├── Provider/
│   │   │   │   └── DynamoDBGrainStorage.cs
│   │   │   └── README.md
│   │   ├── Orleans.Reminders.DynamoDB/
│   │   │   ├── DynamoDBRemindersProviderBuilder.cs
│   │   │   ├── DynamoDBServiceCollectionReminderExtensions.cs
│   │   │   ├── DynamoDBSiloBuilderReminderExtensions.cs
│   │   │   ├── Orleans.Reminders.DynamoDB.csproj
│   │   │   ├── README.md
│   │   │   └── Reminders/
│   │   │       ├── DynamoDBReminderTable.cs
│   │   │       ├── DynamoDbReminderServiceOptions.cs
│   │   │       ├── DynamoDbReminderStorageOptions.cs
│   │   │       └── DynamoDbReminderStorageOptionsExtensions.cs
│   │   ├── Orleans.Streaming.SQS/
│   │   │   ├── Hosting/
│   │   │   │   ├── ClientBuilderExtensions.cs
│   │   │   │   └── SiloBuilderExtensions.cs
│   │   │   ├── Orleans.Streaming.SQS.csproj
│   │   │   ├── README.md
│   │   │   ├── Storage/
│   │   │   │   └── SQSStorage.cs
│   │   │   └── Streams/
│   │   │       ├── SQSAdapter.cs
│   │   │       ├── SQSAdapterFactory.cs
│   │   │       ├── SQSAdapterReceiver.cs
│   │   │       ├── SQSBatchContainer.cs
│   │   │       ├── SQSStreamBuilder.cs
│   │   │       ├── SQSStreamProviderUtils.cs
│   │   │       └── SqsStreamOptions.cs
│   │   └── Shared/
│   │       ├── AWSUtils.cs
│   │       └── Storage/
│   │           ├── DynamoDBClientOptions.cs
│   │           └── DynamoDBStorage.cs
│   ├── AdoNet/
│   │   ├── Orleans.Clustering.AdoNet/
│   │   │   ├── AdoNetClusteringProviderBuilder.cs
│   │   │   ├── AdoNetHostingExtensions.cs
│   │   │   ├── Messaging/
│   │   │   │   ├── AdoNetClusteringTable.cs
│   │   │   │   └── AdoNetGatewayListProvider.cs
│   │   │   ├── Migrations/
│   │   │   │   ├── MySQL-Clustering-3.7.0.sql
│   │   │   │   ├── Oracle-Clustering-3.7.0.sql
│   │   │   │   ├── PostgreSQL-Clustering-3.6.0.sql
│   │   │   │   ├── PostgreSQL-Clustering-3.7.0.sql
│   │   │   │   └── SQLServer-Clustering-3.7.0.sql
│   │   │   ├── MySQL-Clustering.sql
│   │   │   ├── Options/
│   │   │   │   ├── AdoNetClusteringClientOptions.cs
│   │   │   │   ├── AdoNetClusteringClientOptionsValidator.cs
│   │   │   │   ├── AdoNetClusteringSiloOptions.cs
│   │   │   │   └── AdoNetReminderTableOptionsValidator.cs
│   │   │   ├── Oracle-Clustering.sql
│   │   │   ├── Orleans.Clustering.AdoNet.csproj
│   │   │   ├── PostgreSQL-Clustering.sql
│   │   │   ├── README.md
│   │   │   └── SQLServer-Clustering.sql
│   │   ├── Orleans.GrainDirectory.AdoNet/
│   │   │   ├── AdoNetGrainDirectory.cs
│   │   │   ├── AdoNetGrainDirectoryEntry.cs
│   │   │   ├── AdoNetGrainDirectoryOptions.cs
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── Hosting/
│   │   │   │   ├── AdoNetGrainDirectoryProviderBuilder.cs
│   │   │   │   ├── AdoNetGrainDirectoryServiceCollectionExtensions.cs
│   │   │   │   └── AdoNetGrainDirectorySiloBuilderExtensions.cs
│   │   │   ├── MySQL-GrainDirectory.sql
│   │   │   ├── Options/
│   │   │   │   └── AdoNetGrainDirectoryOptionsValidator.cs
│   │   │   ├── Orleans.GrainDirectory.AdoNet.csproj
│   │   │   ├── PostgreSQL-GrainDirectory.sql
│   │   │   ├── Properties/
│   │   │   │   └── Usings.cs
│   │   │   └── SQLServer-GrainDirectory.sql
│   │   ├── Orleans.Persistence.AdoNet/
│   │   │   ├── AdoNetGrainStorageProviderBuilder.cs
│   │   │   ├── Migrations/
│   │   │   │   └── PostgreSQL-Persistence-3.6.0.sql
│   │   │   ├── MySQL-Persistence.sql
│   │   │   ├── Options/
│   │   │   │   └── AdoNetGrainStorageOptions.cs
│   │   │   ├── Oracle-Persistence.sql
│   │   │   ├── Orleans.Persistence.AdoNet.csproj
│   │   │   ├── PostgreSQL-Persistence.sql
│   │   │   ├── README.md
│   │   │   ├── SQLServer-Persistence.sql
│   │   │   ├── Sqlite-Persistence.sql
│   │   │   └── Storage/
│   │   │       └── Provider/
│   │   │           ├── AdoGrainKey.cs
│   │   │           ├── AdoNetGrainStorage.cs
│   │   │           ├── AdoNetGrainStorageServiceCollectionExtensions.cs
│   │   │           ├── AdoNetGrainStorageSiloBuilderExtensions.cs
│   │   │           ├── IHasher.cs
│   │   │           ├── IStorageHashPicker.cs
│   │   │           ├── JenkinsHash.cs
│   │   │           ├── Orleans3CompatibleHasher.cs
│   │   │           ├── Orleans3CompatibleStorageHashPicker.cs
│   │   │           ├── Orleans3CompatibleStringKeyHasher.cs
│   │   │           ├── OrleansDefaultHasher.cs
│   │   │           ├── RelationalStorageProviderQueries.cs
│   │   │           └── StorageHasherPicker.cs
│   │   ├── Orleans.Reminders.AdoNet/
│   │   │   ├── AdoNetRemindersProviderBuilder.cs
│   │   │   ├── Migrations/
│   │   │   │   └── PostgreSQL-Reminders-3.6.0.sql
│   │   │   ├── MySQL-Reminders.sql
│   │   │   ├── Oracle-Reminders.sql
│   │   │   ├── Orleans.Reminders.AdoNet.csproj
│   │   │   ├── PostgreSQL-Reminders.sql
│   │   │   ├── README.md
│   │   │   ├── ReminderService/
│   │   │   │   ├── AdoNetReminderTable.cs
│   │   │   │   ├── AdoNetReminderTableOptions.cs
│   │   │   │   └── AdoNetReminderTableOptionsValidator.cs
│   │   │   ├── SQLServer-Reminders.sql
│   │   │   └── SiloBuilderReminderExtensions.cs
│   │   ├── Orleans.Streaming.AdoNet/
│   │   │   ├── AdoNetBatchContainer.cs
│   │   │   ├── AdoNetQueueAdapter.cs
│   │   │   ├── AdoNetQueueAdapterFactory.cs
│   │   │   ├── AdoNetQueueAdapterReceiver.cs
│   │   │   ├── AdoNetStreamConfirmation.cs
│   │   │   ├── AdoNetStreamConfirmationAck.cs
│   │   │   ├── AdoNetStreamDeadLetter.cs
│   │   │   ├── AdoNetStreamFailureHandler.cs
│   │   │   ├── AdoNetStreamMessage.cs
│   │   │   ├── AdoNetStreamMessageAck.cs
│   │   │   ├── AdoNetStreamOptions.cs
│   │   │   ├── AdoNetStreamOptionsValidator.cs
│   │   │   ├── AdoNetStreamQueueMapper.cs
│   │   │   ├── Extensions.cs
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── Hosting/
│   │   │   │   ├── ClusterClientAdoNetStreamConfigurator.cs
│   │   │   │   ├── ClusterClientAdoNetStreamExtensions.cs
│   │   │   │   ├── SiloAdoNetStreamConfigurator.cs
│   │   │   │   └── SiloBuilderAdoNetStreamExtensions.cs
│   │   │   ├── MySQL-Streaming.sql
│   │   │   ├── Orleans.Streaming.AdoNet.csproj
│   │   │   ├── PostgreSQL-Streaming.sql
│   │   │   ├── Properties/
│   │   │   │   └── Usings.cs
│   │   │   ├── README.md
│   │   │   └── SQLServer-Streaming.sql
│   │   └── Shared/
│   │       ├── MySQL-Main.sql
│   │       ├── Oracle-Main.sql
│   │       ├── PostgreSQL-Main.sql
│   │       ├── SQLServer-Main.sql
│   │       ├── Sqlite-Main.sql
│   │       └── Storage/
│   │           ├── AdoNetFormatProvider.cs
│   │           ├── AdoNetInvariants.cs
│   │           ├── DbConnectionFactory.cs
│   │           ├── DbConstantsStore.cs
│   │           ├── DbExtensions.cs
│   │           ├── DbStoredQueries.cs
│   │           ├── ICommandInterceptor.cs
│   │           ├── IRelationalStorage.cs
│   │           ├── NoOpDatabaseCommandInterceptor.cs
│   │           ├── OracleDatabaseCommandInterceptor.cs
│   │           ├── OrleansRelationalDownloadStream.cs
│   │           ├── RelationalOrleansQueries.cs
│   │           ├── RelationalStorage.cs
│   │           └── RelationalStorageExtensions.cs
│   ├── Azure/
│   │   ├── Orleans.Clustering.AzureStorage/
│   │   │   ├── AzureBasedMembershipTable.cs
│   │   │   ├── AzureGatewayListProvider.cs
│   │   │   ├── AzureTableClusteringExtensions.cs
│   │   │   ├── AzureTableStorageClusteringProviderBuilder.cs
│   │   │   ├── Options/
│   │   │   │   ├── AzureStorageClusteringOptions.cs
│   │   │   │   └── AzureStorageGatewayOptions.cs
│   │   │   ├── Orleans.Clustering.AzureStorage.csproj
│   │   │   ├── OrleansSiloInstanceManager.cs
│   │   │   ├── README.md
│   │   │   ├── SiloInstanceTableEntry.cs
│   │   │   └── Utilities/
│   │   │       └── TableStorageErrorCode.cs
│   │   ├── Orleans.Clustering.Cosmos/
│   │   │   ├── CosmosClusteringProviderBuilder.cs
│   │   │   ├── HostingExtensions.cs
│   │   │   ├── Membership/
│   │   │   │   ├── CosmosGatewayListProvider.cs
│   │   │   │   └── CosmosMembershipTable.cs
│   │   │   ├── Models/
│   │   │   │   ├── BaseClusterEntity.cs
│   │   │   │   ├── ClusterVersionEntity.cs
│   │   │   │   └── SiloEntity.cs
│   │   │   ├── Options/
│   │   │   │   └── CosmosClusteringOptions.cs
│   │   │   ├── Orleans.Clustering.Cosmos.csproj
│   │   │   └── README.md
│   │   ├── Orleans.DurableJobs.AzureStorage/
│   │   │   ├── AzureStorageJobShard.Log.cs
│   │   │   ├── AzureStorageJobShard.cs
│   │   │   ├── AzureStorageJobShardManager.cs
│   │   │   ├── Hosting/
│   │   │   │   ├── AzureStorageDurableJobsExtensions.cs
│   │   │   │   ├── AzureStorageJobShardOptions.cs
│   │   │   │   └── AzureStorageJobShardOptionsValidator.cs
│   │   │   ├── JobOperation.cs
│   │   │   ├── NetstringJsonSerializer.cs
│   │   │   ├── Orleans.DurableJobs.AzureStorage.csproj
│   │   │   └── README.md
│   │   ├── Orleans.GrainDirectory.AzureStorage/
│   │   │   ├── AzureTableGrainDirectory.cs
│   │   │   ├── Hosting/
│   │   │   │   ├── AzureTableGrainDirectoryExtensions.cs
│   │   │   │   ├── AzureTableGrainDirectoryServiceCollectionExtensions.cs
│   │   │   │   └── AzureTableStorageGrainDirectoryProviderBuilder.cs
│   │   │   ├── Options/
│   │   │   │   └── AzureTableGrainDirectoryOptions.cs
│   │   │   ├── Orleans.GrainDirectory.AzureStorage.csproj
│   │   │   └── README.md
│   │   ├── Orleans.Journaling.AzureStorage/
│   │   │   ├── AzureAppendBlobLogStorage.cs
│   │   │   ├── AzureAppendBlobStateMachineStorageOptions.cs
│   │   │   ├── AzureAppendBlobStateMachineStorageProvider.cs
│   │   │   ├── AzureBlobStorageGrainJournalingProviderBuilder.cs
│   │   │   ├── AzureBlobStorageHostingExtensions.cs
│   │   │   ├── DefaultBlobContainerFactory.cs
│   │   │   ├── IBlobContainerFactory.cs
│   │   │   ├── Orleans.Journaling.AzureStorage.csproj
│   │   │   ├── Properties/
│   │   │   │   └── AssemblyInfo.cs
│   │   │   └── README.md
│   │   ├── Orleans.Persistence.AzureStorage/
│   │   │   ├── Hosting/
│   │   │   │   ├── AzureBlobGrainStorageServiceCollectionExtensions.cs
│   │   │   │   ├── AzureBlobSiloBuilderExtensions.cs
│   │   │   │   ├── AzureBlobStorageGrainStorageProviderBuilder.cs
│   │   │   │   ├── AzureTableSiloBuilderExtensions.cs
│   │   │   │   └── AzureTableStorageGrainStorageProviderBuilder.cs
│   │   │   ├── Orleans.Persistence.AzureStorage.csproj
│   │   │   ├── Providers/
│   │   │   │   ├── AzureProviderErrorCode.cs
│   │   │   │   └── Storage/
│   │   │   │       ├── AzureBlobStorage.cs
│   │   │   │       ├── AzureBlobStorageOptions.cs
│   │   │   │       ├── AzureTableStorage.cs
│   │   │   │       ├── AzureTableStorageOptions.cs
│   │   │   │       └── IBlobContainerFactory.cs
│   │   │   ├── README.md
│   │   │   └── Storage/
│   │   │       ├── StorageExceptionExtensions.cs
│   │   │       └── TableStorageUpdateConditionNotSatisfiedException.cs
│   │   ├── Orleans.Persistence.Cosmos/
│   │   │   ├── CosmosConditionNotSatisfiedException.cs
│   │   │   ├── CosmosGrainStorage.cs
│   │   │   ├── CosmosStorageOptions.cs
│   │   │   ├── HostingExtensions.cs
│   │   │   ├── IPartitionKeyProvider.cs
│   │   │   ├── Models/
│   │   │   │   └── GrainStateEntity.cs
│   │   │   ├── Orleans.Persistence.Cosmos.csproj
│   │   │   └── README.md
│   │   ├── Orleans.Reminders.AzureStorage/
│   │   │   ├── AzureStorageReminderServiceCollectionExtensions.cs
│   │   │   ├── AzureStorageReminderSiloBuilderReminderExtensions.cs
│   │   │   ├── AzureTableStorageRemindersProviderBuilder.cs
│   │   │   ├── Orleans.Reminders.AzureStorage.csproj
│   │   │   ├── README.md
│   │   │   ├── Storage/
│   │   │   │   ├── AzureBasedReminderTable.cs
│   │   │   │   ├── AzureTableReminderStorageOptions.cs
│   │   │   │   └── RemindersTableManager.cs
│   │   │   └── Utilities/
│   │   │       └── AzureReminderErrorCode.cs
│   │   ├── Orleans.Reminders.Cosmos/
│   │   │   ├── CosmosReminderTable.cs
│   │   │   ├── CosmosReminderTableOptions.cs
│   │   │   ├── HostingExtensions.cs
│   │   │   ├── Models/
│   │   │   │   └── ReminderEntity.cs
│   │   │   ├── Orleans.Reminders.Cosmos.csproj
│   │   │   └── README.md
│   │   ├── Orleans.Streaming.AzureStorage/
│   │   │   ├── Hosting/
│   │   │   │   ├── AzureQueueStreamProviderBuilder.cs
│   │   │   │   ├── ClientBuilderExtensions.cs
│   │   │   │   └── SiloBuilderExtensions.cs
│   │   │   ├── Options/
│   │   │   │   └── AzureBlobLeaseProviderOptions.cs
│   │   │   ├── Orleans.Streaming.AzureStorage.csproj
│   │   │   ├── Providers/
│   │   │   │   ├── Lease/
│   │   │   │   │   └── AzureBlobLeaseProvider.cs
│   │   │   │   └── Streams/
│   │   │   │       ├── AzureQueue/
│   │   │   │       │   ├── AzureQueueAdapter.cs
│   │   │   │       │   ├── AzureQueueAdapterFactory.cs
│   │   │   │       │   ├── AzureQueueAdapterReceiver.cs
│   │   │   │       │   ├── AzureQueueBatchContainer.cs
│   │   │   │       │   ├── AzureQueueBatchContainerV2.cs
│   │   │   │       │   ├── AzureQueueStreamBuilder.cs
│   │   │   │       │   ├── AzureQueueStreamOptions.cs
│   │   │   │       │   ├── AzureQueueStreamProviderUtils.cs
│   │   │   │       │   └── IAzureQueueDataAdapter.cs
│   │   │   │       └── PersistentStreams/
│   │   │   │           ├── AzureTableStorageStreamFailureHandler.cs
│   │   │   │           └── StreamDeliveryFailureEntity.cs
│   │   │   ├── README.md
│   │   │   ├── Storage/
│   │   │   │   └── AzureQueueDataManager.cs
│   │   │   └── Utilities/
│   │   │       └── AzureQueueErrorCode.cs
│   │   ├── Orleans.Streaming.EventHubs/
│   │   │   ├── Hosting/
│   │   │   │   ├── ClientBuilderExtensions.cs
│   │   │   │   ├── DeveloperExtensions.cs
│   │   │   │   └── SiloBuilderExtensions.cs
│   │   │   ├── Orleans.Streaming.EventHubs.csproj
│   │   │   ├── OrleansServiceBusErrorCode.cs
│   │   │   ├── Providers/
│   │   │   │   ├── EventDataGeneratorStreamProvider/
│   │   │   │   │   ├── EventDataGeneratorAdapterFactory.cs
│   │   │   │   │   ├── EventDataGeneratorStreamOptions.cs
│   │   │   │   │   ├── EventHubPartitionDataGenerator.cs
│   │   │   │   │   ├── EventHubPartitionGeneratorReceiver.cs
│   │   │   │   │   ├── IEventDataGenerator.cs
│   │   │   │   │   └── NoOpCheckpointer.cs
│   │   │   │   └── Streams/
│   │   │   │       └── EventHub/
│   │   │   │           ├── CachePressureMonitors/
│   │   │   │           │   ├── AggregatedCachePressureMonitor.cs
│   │   │   │           │   ├── AveragingCachePressureMonitor.cs
│   │   │   │           │   ├── ICachePressureMonitor.cs
│   │   │   │           │   └── SlowConsumingPressureMonitor.cs
│   │   │   │           ├── EventDataExtensions.cs
│   │   │   │           ├── EventDataGeneratorStreamConfigurator.cs
│   │   │   │           ├── EventHubAdapterFactory.cs
│   │   │   │           ├── EventHubAdapterReceiver.cs
│   │   │   │           ├── EventHubBatchContainer.cs
│   │   │   │           ├── EventHubCheckpointer.cs
│   │   │   │           ├── EventHubCheckpointerOptions.cs
│   │   │   │           ├── EventHubConstants.cs
│   │   │   │           ├── EventHubDataAdapter.cs
│   │   │   │           ├── EventHubMessage.cs
│   │   │   │           ├── EventHubPartitionCheckpointEntity.cs
│   │   │   │           ├── EventHubQueueCache.cs
│   │   │   │           ├── EventHubQueueCacheFactory.cs
│   │   │   │           ├── EventHubSequenceToken.cs
│   │   │   │           ├── EventHubSequenceTokenV2.cs
│   │   │   │           ├── EventHubStreamBuilder.cs
│   │   │   │           ├── EventHubStreamOptions.cs
│   │   │   │           ├── IEventHubDataAdapter.cs
│   │   │   │           ├── IEventHubQueueCache.cs
│   │   │   │           ├── IEventHubQueueCacheFactory.cs
│   │   │   │           ├── IEventHubReceiver.cs
│   │   │   │           └── StatisticMonitors/
│   │   │   │               ├── DefaultEventHubBlockPoolMonitor.cs
│   │   │   │               ├── DefaultEventHubCacheMonitor.cs
│   │   │   │               ├── DefaultEventHubReceiverMonitor.cs
│   │   │   │               └── MonitorAggregationDimentions.cs
│   │   │   └── README.md
│   │   ├── Orleans.Transactions.AzureStorage/
│   │   │   ├── Hosting/
│   │   │   │   ├── AzureTableTransactionServicecollectionExtensions.cs
│   │   │   │   └── AzureTableTransactionsSiloBuilderExtensions.cs
│   │   │   ├── Orleans.Transactions.AzureStorage.csproj
│   │   │   ├── README.md
│   │   │   └── TransactionalState/
│   │   │       ├── AzureTableTransactionalStateOptions.cs
│   │   │       ├── AzureTableTransactionalStateStorage.cs
│   │   │       ├── AzureTableTransactionalStateStorageFactory.cs
│   │   │       ├── KeyEntity.cs
│   │   │       └── StateEntity.cs
│   │   └── Shared/
│   │       ├── Cosmos/
│   │       │   ├── BaseEntity.cs
│   │       │   ├── CosmosIdSanitizer.cs
│   │       │   ├── CosmosOptions.cs
│   │       │   ├── CosmosOptionsValidator.cs
│   │       │   └── Usings.cs
│   │       ├── Storage/
│   │       │   ├── AzureBlobUtils.cs
│   │       │   ├── AzureStorageOperationOptions.cs
│   │       │   ├── AzureStoragePolicyOptions.cs
│   │       │   ├── AzureTableDataManager.cs
│   │       │   ├── AzureTableDefaultPolicies.cs
│   │       │   └── AzureTableUtils.cs
│   │       └── Utilities/
│   │           └── ErrorCode.cs
│   ├── Cassandra/
│   │   └── Orleans.Clustering.Cassandra/
│   │       ├── CassandraClusteringTable.cs
│   │       ├── CassandraGatewayListProvider.cs
│   │       ├── Hosting/
│   │       │   ├── CassandraClusteringOptions.cs
│   │       │   └── CassandraMembershipHostingExtensions.cs
│   │       ├── Orleans.Clustering.Cassandra.csproj
│   │       └── OrleansQueries.cs
│   ├── Dashboard/
│   │   ├── Orleans.Dashboard/
│   │   │   ├── .azdo/
│   │   │   │   └── .npmrc
│   │   │   ├── Core/
│   │   │   │   ├── DashboardClient.cs
│   │   │   │   ├── Extensions.cs
│   │   │   │   ├── IDashboardClient.cs
│   │   │   │   ├── IDashboardGrain.cs
│   │   │   │   ├── IDashboardRemindersGrain.cs
│   │   │   │   ├── ISiloGrainClient.cs
│   │   │   │   ├── ISiloGrainProxy.cs
│   │   │   │   └── ISiloGrainService.cs
│   │   │   ├── DashboardHost.cs
│   │   │   ├── DashboardOptions.cs
│   │   │   ├── EmbeddedAssetProvider.cs
│   │   │   ├── GrainProfilerOptions.cs
│   │   │   ├── Implementation/
│   │   │   │   ├── DashboardLogger.cs
│   │   │   │   ├── DashboardTelemetryExporter.cs
│   │   │   │   ├── Details/
│   │   │   │   │   ├── MembershipTableSiloDetailsProvider.cs
│   │   │   │   │   └── SiloStatusOracleSiloDetailsProvider.cs
│   │   │   │   ├── GrainProfilerFilter.cs
│   │   │   │   ├── Grains/
│   │   │   │   │   ├── DashboardGrain.cs
│   │   │   │   │   ├── DashboardRemindersGrain.cs
│   │   │   │   │   └── SiloGrainProxy.cs
│   │   │   │   ├── Helpers/
│   │   │   │   │   └── GrainStateHelper.cs
│   │   │   │   ├── SiloGrainClient.cs
│   │   │   │   ├── SiloGrainService.cs
│   │   │   │   └── TraceWriter.cs
│   │   │   ├── Metrics/
│   │   │   │   ├── Details/
│   │   │   │   │   └── ISiloDetailsProvider.cs
│   │   │   │   ├── GrainProfiler.cs
│   │   │   │   ├── GrainProfilerExtensions.cs
│   │   │   │   ├── History/
│   │   │   │   │   ├── GrainTraceEntryEqualityComparer.cs
│   │   │   │   │   ├── HistoryEntry.cs
│   │   │   │   │   ├── HistoryKey.cs
│   │   │   │   │   ├── ITraceHistory.cs
│   │   │   │   │   ├── RingBuffer.cs
│   │   │   │   │   └── TraceHistory.cs
│   │   │   │   ├── IGrainProfiler.cs
│   │   │   │   └── TypeFormatting/
│   │   │   │       ├── ParseState.cs
│   │   │   │       ├── Token.cs
│   │   │   │       ├── TokenType.cs
│   │   │   │       └── TypeFormatter.cs
│   │   │   ├── Model/
│   │   │   │   ├── DashboardCounters.cs
│   │   │   │   ├── GrainTraceEntry.cs
│   │   │   │   ├── History/
│   │   │   │   │   ├── GrainMethodAggregate.cs
│   │   │   │   │   └── TraceAggregate.cs
│   │   │   │   ├── ReminderInfo.cs
│   │   │   │   ├── ReminderResponse.cs
│   │   │   │   ├── SiloDetails.cs
│   │   │   │   ├── SiloGrainTraceEntry.cs
│   │   │   │   ├── SimpleGrainStatisticCounter.cs
│   │   │   │   └── StatCounter.cs
│   │   │   ├── Orleans.Dashboard.Frontend.targets
│   │   │   ├── Orleans.Dashboard.csproj
│   │   │   ├── README.md
│   │   │   ├── ServiceCollectionExtensions.cs
│   │   │   └── TimeSpanConverter.cs
│   │   ├── Orleans.Dashboard.Abstractions/
│   │   │   ├── NoProfilingAttribute.cs
│   │   │   ├── Orleans.Dashboard.Abstractions.csproj
│   │   │   └── README.md
│   │   └── Orleans.Dashboard.App/
│   │       ├── .gitignore
│   │       ├── .npmrc
│   │       ├── README.md
│   │       ├── index.html
│   │       ├── package.json
│   │       ├── src/
│   │       │   ├── components/
│   │       │   │   ├── alert.tsx
│   │       │   │   ├── brand-header.tsx
│   │       │   │   ├── checkbox-filter.tsx
│   │       │   │   ├── counter-widget.tsx
│   │       │   │   ├── display-grain-state.tsx
│   │       │   │   ├── gauge-widget.tsx
│   │       │   │   ├── grain-method-table.tsx
│   │       │   │   ├── grain-table.tsx
│   │       │   │   ├── loading.tsx
│   │       │   │   ├── menu.tsx
│   │       │   │   ├── multi-series-chart-widget.tsx
│   │       │   │   ├── page.tsx
│   │       │   │   ├── panel.tsx
│   │       │   │   ├── preferences.tsx
│   │       │   │   ├── properties-widget.tsx
│   │       │   │   ├── reminder-table.tsx
│   │       │   │   ├── theme-buttons.tsx
│   │       │   │   └── time-series-chart.tsx
│   │       │   ├── custom.css
│   │       │   ├── grains/
│   │       │   │   ├── grain-details.tsx
│   │       │   │   ├── grain.tsx
│   │       │   │   ├── grains.tsx
│   │       │   │   └── silo-table.tsx
│   │       │   ├── index.tsx
│   │       │   ├── lib/
│   │       │   │   ├── http.ts
│   │       │   │   ├── routie.ts
│   │       │   │   ├── storage.ts
│   │       │   │   └── typeName.ts
│   │       │   ├── logstream/
│   │       │   │   └── log-stream.tsx
│   │       │   ├── overview/
│   │       │   │   └── overview.tsx
│   │       │   ├── reminders/
│   │       │   │   └── reminders.tsx
│   │       │   ├── silos/
│   │       │   │   ├── host-table.tsx
│   │       │   │   ├── silo-counters.tsx
│   │       │   │   ├── silo-grid.tsx
│   │       │   │   ├── silo-state-label.tsx
│   │       │   │   ├── silo.tsx
│   │       │   │   └── silos.tsx
│   │       │   ├── skin-purple.css
│   │       │   ├── styles.css
│   │       │   ├── themes.css
│   │       │   └── vite-env.d.ts
│   │       ├── tsconfig.json
│   │       └── vite.config.ts
│   ├── Directory.Build.props
│   ├── Directory.Build.targets
│   ├── Orleans.Analyzers/
│   │   ├── AbstractPropertiesCannotBeSerializedAnalyzer.cs
│   │   ├── AliasClashAttributeAnalyzer.cs
│   │   ├── AliasClashAttributeCodeFix.cs
│   │   ├── AlwaysInterleaveDiagnosticAnalyzer.cs
│   │   ├── AnalyzerReleases.Shipped.md
│   │   ├── AnalyzerReleases.Unshipped.md
│   │   ├── AtMostOneOrleansConstructorAnalyzer.cs
│   │   ├── ConfigureAwaitAnalyzer.cs
│   │   ├── ConfigureAwaitCodeFix.cs
│   │   ├── Constants.cs
│   │   ├── GenerateAliasAttributesAnalyzer.cs
│   │   ├── GenerateAliasAttributesCodeFix.cs
│   │   ├── GenerateGenerateSerializerAttributeAnalyzer.cs
│   │   ├── GenerateSerializationAttributesAnalyzer.cs
│   │   ├── GenerateSerializationAttributesCodeFix.cs
│   │   ├── GrainInterfaceMethodReturnTypeDiagnosticAnalyzer.cs
│   │   ├── GrainInterfacePropertyDiagnosticAnalyzer.cs
│   │   ├── IdClashAttributeAnalyzer.cs
│   │   ├── IdClashAttributeCodeFix.cs
│   │   ├── IncorrectAttributeUseAnalyzer.cs
│   │   ├── IncorrectAttributeUseCodeFix.cs
│   │   ├── NoRefParamsDiagnosticAnalyzer.cs
│   │   ├── Orleans.Analyzers.csproj
│   │   ├── Properties/
│   │   │   └── IsExternalInit.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── SerializationAttributesHelper.cs
│   │   ├── SymbolHelpers.cs
│   │   └── SyntaxHelpers.cs
│   ├── Orleans.BroadcastChannel/
│   │   ├── BroadcastChannelConsumerExtension.cs
│   │   ├── BroadcastChannelOptions.cs
│   │   ├── BroadcastChannelProvider.cs
│   │   ├── BroadcastChannelSubscription.cs
│   │   ├── BroadcastChannelWriter.cs
│   │   ├── ChannelId.cs
│   │   ├── Hosting/
│   │   │   ├── BroadcastChannelProviderBuilder.cs
│   │   │   └── ChannelHostingExtensions.cs
│   │   ├── IdMapping/
│   │   │   ├── DefaultChannelIdMapper.cs
│   │   │   └── IChannelIdMapper.cs
│   │   ├── Orleans.BroadcastChannel.csproj
│   │   └── SubscriberTable/
│   │       ├── ImplicitChannelSubscriberTable.cs
│   │       └── Predicates/
│   │           ├── AllStreamNamespacesPredicate.cs
│   │           ├── DefaultStreamNamespacePredicateProvider.cs
│   │           ├── ExactMatchStreamNamespacePredicate.cs
│   │           ├── IChannelNamespacePredicate.cs
│   │           ├── ImplicitChannelSubscriptionAttribute.cs
│   │           └── RegexChannelNamespacePredicate.cs
│   ├── Orleans.Client/
│   │   ├── Orleans.Client.csproj
│   │   └── README.md
│   ├── Orleans.Clustering.Consul/
│   │   ├── ConsulBasedMembershipTable.cs
│   │   ├── ConsulClusteringProviderBuilder.cs
│   │   ├── ConsulGatewayListProvider.cs
│   │   ├── ConsulUtilsHostingExtensions.cs
│   │   ├── Options/
│   │   │   └── ConsulClusteringOptions.cs
│   │   ├── Orleans.Clustering.Consul.csproj
│   │   └── SerializableMembershipTypes.cs
│   ├── Orleans.Clustering.ZooKeeper/
│   │   ├── MembershipSerializerSettings.cs
│   │   ├── Options/
│   │   │   ├── ZooKeeperClusteringSiloOptions.cs
│   │   │   └── ZooKeeperGatewayListProviderOptions.cs
│   │   ├── Orleans.Clustering.ZooKeeper.csproj
│   │   ├── ZooKeeperBasedMembershipTable.cs
│   │   ├── ZooKeeperClusteringProviderBuilder.cs
│   │   ├── ZooKeeperGatewayListProvider.cs
│   │   └── ZooKeeperHostingExtensions.cs
│   ├── Orleans.CodeGenerator/
│   │   ├── ActivatorGenerator.cs
│   │   ├── AnalyzerReleases.Shipped.md
│   │   ├── AnalyzerReleases.Unshipped.md
│   │   ├── ApplicationPartAttributeGenerator.cs
│   │   ├── CodeGenerator.cs
│   │   ├── CopierGenerator.cs
│   │   ├── Diagnostics/
│   │   │   ├── CanNotGenerateImplicitFieldIdsDiagnostic.cs
│   │   │   ├── DiagnosticRuleId.cs
│   │   │   ├── GenerateCodeForDeclaringAssemblyAttribute_NoDeclaringAssembly_Diagnostic.cs
│   │   │   ├── InaccessibleSerializableTypeDiagnostic.cs
│   │   │   ├── InaccessibleSetterDiagnostic.cs
│   │   │   ├── IncorrectProxyBaseClassSpecificationDiagnostic.cs
│   │   │   ├── InvalidRpcMethodReturnTypeDiagnostic.cs
│   │   │   ├── MultipleCancellationTokenParametersDiagnostic.cs
│   │   │   ├── ReferenceAssemblyWithGenerateSerializerDiagnostic.cs
│   │   │   ├── RpcInterfacePropertyDiagnostic.cs
│   │   │   └── UnhandledCodeGenerationExceptionDiagnostic.cs
│   │   ├── FieldIdAssignmentHelper.cs
│   │   ├── Hashing/
│   │   │   ├── BitOperations.cs
│   │   │   ├── HexConverter.cs
│   │   │   ├── NonCryptographicHashAlgorithm.cs
│   │   │   ├── XxHash32.State.cs
│   │   │   └── XxHash32.cs
│   │   ├── InvokableGenerator.cs
│   │   ├── LibraryTypes.cs
│   │   ├── MetadataGenerator.cs
│   │   ├── Model/
│   │   │   ├── FieldDescription.cs
│   │   │   ├── GenerateFieldIds.cs
│   │   │   ├── GeneratedInvokableDescription.cs
│   │   │   ├── GeneratedProxyDescription.cs
│   │   │   ├── ICodecDescription.cs
│   │   │   ├── IMemberDescription.cs
│   │   │   ├── ISerializableTypeDescription.cs
│   │   │   ├── InvokableMethodDescription.cs
│   │   │   ├── InvokableMethodId.cs
│   │   │   ├── InvokableMethodProxyBase.cs
│   │   │   ├── InvokableMethodProxyBaseId.cs
│   │   │   ├── MetadataModel.cs
│   │   │   ├── MethodSignatureComparer.cs
│   │   │   ├── PropertyDescription.cs
│   │   │   ├── ProxyInterfaceDescription.cs
│   │   │   ├── ProxyMethodDescription.cs
│   │   │   ├── SerializableTypeDescription.cs
│   │   │   └── WellKnownCodecDescription.cs
│   │   ├── Orleans.CodeGenerator.csproj
│   │   ├── OrleansGeneratorDiagnosticAnalysisException.cs
│   │   ├── OrleansSourceGenerator.cs
│   │   ├── Properties/
│   │   │   └── launchSettings.json
│   │   ├── PropertyUtility.cs
│   │   ├── ProxyGenerator.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── SerializerGenerator.cs
│   │   ├── SyntaxGeneration/
│   │   │   ├── FSharpUtils.cs
│   │   │   ├── Identifier.cs
│   │   │   ├── StringExtensions.cs
│   │   │   ├── SymbolExtensions.cs
│   │   │   ├── SymbolSyntaxExtensions.cs
│   │   │   └── SyntaxFactoryUtility.cs
│   │   ├── build/
│   │   │   └── Microsoft.Orleans.CodeGenerator.props
│   │   ├── buildMultiTargeting/
│   │   │   └── Microsoft.Orleans.CodeGenerator.props
│   │   └── buildTransitive/
│   │       └── Microsoft.Orleans.CodeGenerator.props
│   ├── Orleans.Connections.Security/
│   │   ├── Hosting/
│   │   │   ├── HostingExtensions.IClientBuilder.cs
│   │   │   ├── HostingExtensions.ISiloBuilder.cs
│   │   │   └── HostingExtensions.cs
│   │   ├── Orleans.Connections.Security.csproj
│   │   └── Security/
│   │       ├── CertificateLoader.cs
│   │       ├── DuplexPipeStream.cs
│   │       ├── DuplexPipeStreamAdapter.cs
│   │       ├── ITlsApplicationProtocolFeature.cs
│   │       ├── ITlsConnectionFeature.cs
│   │       ├── ITlsHandshakeFeature.cs
│   │       ├── MemoryPoolExtensions.cs
│   │       ├── OrleansApplicationProtocol.cs
│   │       ├── RemoteCertificateMode.cs
│   │       ├── TlsClientAuthenticationOptions.cs
│   │       ├── TlsClientConnectionMiddleware.cs
│   │       ├── TlsConnectionFeature.cs
│   │       ├── TlsDuplexPipe.cs
│   │       ├── TlsOptions.cs
│   │       ├── TlsServerAuthenticationOptions.cs
│   │       └── TlsServerConnectionMiddleware.cs
│   ├── Orleans.Core/
│   │   ├── Async/
│   │   │   ├── AsyncExecutorWithRetries.cs
│   │   │   ├── AsyncLock.cs
│   │   │   ├── AsyncSerialExecutor.cs
│   │   │   ├── BatchWorker.cs
│   │   │   ├── MultiTaskCompletionSource.cs
│   │   │   └── TaskExtensions.cs
│   │   ├── Caching/
│   │   │   ├── ConcurrentLruCache.cs
│   │   │   └── Internal/
│   │   │       ├── CacheDebugView.cs
│   │   │       ├── CapacityPartition.cs
│   │   │       ├── Counter.cs
│   │   │       ├── ICacheMetrics.cs
│   │   │       ├── PaddedLong.cs
│   │   │       ├── PaddedQueueCount.cs
│   │   │       ├── Padding.cs
│   │   │       ├── Striped64.cs
│   │   │       └── TypeProps.cs
│   │   ├── Cancellation/
│   │   │   └── IGrainCallCancellationExtension.cs
│   │   ├── ClientObservers/
│   │   │   ├── ClientGatewayObserver.cs
│   │   │   └── ClientObserver.cs
│   │   ├── CodeGeneration/
│   │   │   ├── GrainInterfaceUtils.cs
│   │   │   └── IGrainState.cs
│   │   ├── Configuration/
│   │   │   ├── CollectionAgeLimitAttribute.cs
│   │   │   ├── ConfigUtilities.cs
│   │   │   ├── GrainTypeOptions.cs
│   │   │   ├── NamedServiceConfigurator.cs
│   │   │   ├── OptionLogger/
│   │   │   │   ├── DefaultOptionsFormatter.cs
│   │   │   │   ├── IOptionFormatter.cs
│   │   │   │   ├── IOptionsLogger.cs
│   │   │   │   ├── OptionFormatterExtensionMethods.cs
│   │   │   │   └── RedactMemberAttribute.cs
│   │   │   ├── Options/
│   │   │   │   ├── ClientMessagingOptions.cs
│   │   │   │   ├── ClusterMembershipOptions.cs
│   │   │   │   ├── ClusterOptions.cs
│   │   │   │   ├── GatewayOptions.cs
│   │   │   │   ├── GrainVersioningOptions.cs
│   │   │   │   ├── LoadSheddingOptions.cs
│   │   │   │   ├── MessagingOptions.cs
│   │   │   │   ├── StaticGatewayListProviderOptions.cs
│   │   │   │   └── TypeManagementOptions.cs
│   │   │   ├── OptionsOverrides.cs
│   │   │   ├── ServiceCollectionExtensions.cs
│   │   │   └── Validators/
│   │   │       ├── ClientClusteringValidator.cs
│   │   │       ├── LoadSheddingValidator.cs
│   │   │       └── SerializerConfigurationValidator.cs
│   │   ├── Core/
│   │   │   ├── ClientBuilder.cs
│   │   │   ├── ClientBuilderExtensions.cs
│   │   │   ├── ClientBuilderGrainCallFilterExtensions.cs
│   │   │   ├── ClusterClient.cs
│   │   │   ├── DefaultClientServices.cs
│   │   │   ├── GatewayCountChangedEventArgs.cs
│   │   │   ├── GrainCallFilterServiceCollectionExtensions.cs
│   │   │   ├── GrainFactory.cs
│   │   │   ├── GrainInterfaceTypeToGrainTypeResolver.cs
│   │   │   ├── GrainMethodInvoker.cs
│   │   │   ├── IClientBuilder.cs
│   │   │   ├── IClientConnectionRetryFilter.cs
│   │   │   ├── IClusterClient.cs
│   │   │   ├── IClusterConnectionStatusListener.cs
│   │   │   ├── IClusterConnectionStatusObserver.cs
│   │   │   ├── IInternalClusterClient.cs
│   │   │   ├── IInternalGrainFactory.cs
│   │   │   ├── InterfaceToImplementationMappingCache.cs
│   │   │   └── InvalidSchedulingContextException.cs
│   │   ├── Diagnostics/
│   │   │   ├── ActivityNames.cs
│   │   │   ├── ActivityPropagationGrainCallFilter.cs
│   │   │   ├── EventSourceEvents.cs
│   │   │   ├── MessagingTrace.cs
│   │   │   └── Metrics/
│   │   │       ├── Aggregators/
│   │   │       │   ├── AggregatorKey.cs
│   │   │       │   ├── CounterAggregator.cs
│   │   │       │   ├── CounterAggregatorGroup.cs
│   │   │       │   ├── HistogramAggregator.cs
│   │   │       │   ├── HistogramBucketAggregator.cs
│   │   │       │   └── TagList.cs
│   │   │       ├── ApplicationRequestInstruments.cs
│   │   │       ├── CatalogInstruments.cs
│   │   │       ├── ClientInstruments.cs
│   │   │       ├── ConsistentRingInstruments.cs
│   │   │       ├── DirectoryInstruments.cs
│   │   │       ├── GatewayInstruments.cs
│   │   │       ├── GrainInstruments.cs
│   │   │       ├── InstrumentNames.cs
│   │   │       ├── Instruments.cs
│   │   │       ├── MessagingInstruments.cs
│   │   │       ├── MessagingProcessingInstruments.cs
│   │   │       ├── NetworkingInstruments.cs
│   │   │       ├── OrleansInstruments.cs
│   │   │       ├── ReminderInstruments.cs
│   │   │       ├── SchedulerInstruments.cs
│   │   │       ├── StorageInstruments.cs
│   │   │       ├── StreamInstruments.cs
│   │   │       └── WatchdogInstruments.cs
│   │   ├── GlobalSuppressions.cs
│   │   ├── GrainDirectory/
│   │   │   ├── IDhtGrainDirectory.cs
│   │   │   └── IGrainLocator.cs
│   │   ├── GrainReferences/
│   │   │   └── GrainReferenceActivator.cs
│   │   ├── Hosting/
│   │   │   └── OrleansClientGenericHostExtensions.cs
│   │   ├── IDs/
│   │   │   ├── GenericGrainInterfaceType.cs
│   │   │   └── GenericGrainType.cs
│   │   ├── Lifecycle/
│   │   │   ├── ClusterClientLifecycle.cs
│   │   │   ├── ClusterClientLifecycleExtensions.cs
│   │   │   ├── IClusterClientLifecycle.cs
│   │   │   ├── LifecycleSubject.cs
│   │   │   ├── MigrationContext.cs
│   │   │   ├── ServiceLifecycle.cs
│   │   │   ├── ServiceLifecycleNotificationStage.cs
│   │   │   └── ServiceLifecycleStage.cs
│   │   ├── Manifest/
│   │   │   ├── ClientClusterManifestProvider.cs
│   │   │   ├── ClientManifestProvider.cs
│   │   │   ├── GrainBindings.cs
│   │   │   ├── GrainInterfaceTypeResolver.cs
│   │   │   ├── GrainPropertiesResolver.cs
│   │   │   ├── GrainTypeResolver.cs
│   │   │   ├── GrainVersionManifest.cs
│   │   │   ├── IClusterManifestProvider.cs
│   │   │   ├── IClusterManifestSystemTarget.cs
│   │   │   ├── ImplementedInterfaceProvider.cs
│   │   │   └── TypeNameGrainPropertiesProvider.cs
│   │   ├── Messaging/
│   │   │   ├── CachingIdSpanCodec.cs
│   │   │   ├── CachingSiloAddressCodec.cs
│   │   │   ├── ClientMessageCenter.cs
│   │   │   ├── CorrelationId.cs
│   │   │   ├── GatewayManager.cs
│   │   │   ├── IGatewayListProvider.cs
│   │   │   ├── IMessageCenter.cs
│   │   │   ├── InvalidMessageFrameException.cs
│   │   │   ├── Message.cs
│   │   │   ├── MessageFactory.cs
│   │   │   ├── MessageSerializer.cs
│   │   │   ├── OverloadDetectionLogic.cs
│   │   │   ├── PrefixingBufferWriter.cs
│   │   │   ├── RejectionResponse.cs
│   │   │   ├── StaticGatewayListProvider.cs
│   │   │   ├── StaticGatewayListProviderBuilder.cs
│   │   │   └── StatusResponse.cs
│   │   ├── Networking/
│   │   │   ├── ClientConnectionOptions.cs
│   │   │   ├── ClientOutboundConnection.cs
│   │   │   ├── ClientOutboundConnectionFactory.cs
│   │   │   ├── Connection.cs
│   │   │   ├── ConnectionBuilderDelegates.cs
│   │   │   ├── ConnectionFactory.cs
│   │   │   ├── ConnectionFailedException.cs
│   │   │   ├── ConnectionLogScope.cs
│   │   │   ├── ConnectionManager.cs
│   │   │   ├── ConnectionManagerLifecycleAdapter.cs
│   │   │   ├── ConnectionOptions.cs
│   │   │   ├── ConnectionPreamble.cs
│   │   │   ├── ConnectionShared.cs
│   │   │   ├── IUnderlyingTransportFeature.cs
│   │   │   ├── NetworkProtocolVersion.cs
│   │   │   ├── NetworkingTrace.cs
│   │   │   ├── Shared/
│   │   │   │   ├── BufferExtensions.cs
│   │   │   │   ├── CorrelationIdGenerator.cs
│   │   │   │   ├── DuplexPipe.cs
│   │   │   │   ├── IOQueue.cs
│   │   │   │   ├── ISocketsTrace.cs
│   │   │   │   ├── KestrelMemoryPool.cs
│   │   │   │   ├── MemoryPoolBlock.cs
│   │   │   │   ├── MemoryPoolSlab.cs
│   │   │   │   ├── SharedMemoryPool.cs
│   │   │   │   ├── SlabMemoryPool.cs
│   │   │   │   ├── SocketAwaitableEventArgs.cs
│   │   │   │   ├── SocketConnection.cs
│   │   │   │   ├── SocketConnectionFactory.cs
│   │   │   │   ├── SocketConnectionListener.cs
│   │   │   │   ├── SocketConnectionListenerFactory.cs
│   │   │   │   ├── SocketConnectionOptions.cs
│   │   │   │   ├── SocketExtensions.cs
│   │   │   │   ├── SocketReceiver.cs
│   │   │   │   ├── SocketSchedulers.cs
│   │   │   │   ├── SocketSender.cs
│   │   │   │   ├── SocketSenderReceiverBase.cs
│   │   │   │   ├── SocketsTrace.cs
│   │   │   │   ├── TransportConnection.Features.cs
│   │   │   │   └── TransportConnection.cs
│   │   │   └── SocketDirection.cs
│   │   ├── Orleans.Core.csproj
│   │   ├── Placement/
│   │   │   ├── IPlacementContext.cs
│   │   │   ├── IPlacementDirector.cs
│   │   │   ├── IPlacementFilterDirector.cs
│   │   │   ├── PlacementFilterExtensions.cs
│   │   │   ├── PlacementTarget.cs
│   │   │   ├── Rebalancing/
│   │   │   │   ├── IActivationRebalancer.cs
│   │   │   │   ├── IActivationRebalancerMonitor.cs
│   │   │   │   ├── IActivationRebalancerReportListener.cs
│   │   │   │   ├── IActivationRebalancerWorker.cs
│   │   │   │   ├── IFailedSessionBackoffProvider.cs
│   │   │   │   └── RebalancingReport.cs
│   │   │   └── Repartitioning/
│   │   │       ├── IActivationRepartitionerSystemTarget.cs
│   │   │       ├── IImbalanceToleranceRule.cs
│   │   │       └── IMessageStatisticsSink.cs
│   │   ├── Providers/
│   │   │   ├── ClientProviderRuntime.cs
│   │   │   ├── GrainStorageHelpers.cs
│   │   │   ├── IControllable.cs
│   │   │   ├── IGrainStorage.cs
│   │   │   ├── IGrainStorageSerializer.cs
│   │   │   ├── ILeaseProvider.cs
│   │   │   ├── IMemoryStorageGrain.cs
│   │   │   ├── IProviderRuntime.cs
│   │   │   ├── IStorageProvider.cs
│   │   │   ├── ProviderInitializationException.cs
│   │   │   ├── ProviderStateManager.cs
│   │   │   └── StorageSerializer/
│   │   │       ├── GrainStorageSerializer.cs
│   │   │       ├── JsonGrainStorageSerializer.cs
│   │   │       └── OrleansGrainStateSerializer.cs
│   │   ├── README.md
│   │   ├── Runtime/
│   │   │   ├── AsyncEnumerableGrainExtension.cs
│   │   │   ├── CallbackData.cs
│   │   │   ├── ClientGrainContext.cs
│   │   │   ├── ClientLocalActivationStatusChecker.cs
│   │   │   ├── ClusterConnectionStatusObserverAdaptor.cs
│   │   │   ├── Constants.cs
│   │   │   ├── GrainCancellationTokenRuntime.cs
│   │   │   ├── GrainReferenceRuntime.cs
│   │   │   ├── IHealthCheckable.cs
│   │   │   ├── ILocalSiloDetails.cs
│   │   │   ├── IRuntimeClient.cs
│   │   │   ├── InvokableObjectManager.cs
│   │   │   ├── LocalClientDetails.cs
│   │   │   ├── MembershipTableSnapshot.cs
│   │   │   ├── OutgoingCallInvoker.cs
│   │   │   ├── OutsideRuntimeClient.cs
│   │   │   ├── RequestContextExtensions.cs
│   │   │   ├── RingRange.cs
│   │   │   ├── RuntimeVersion.cs
│   │   │   ├── SharedCallbackData.cs
│   │   │   └── SiloStatus.cs
│   │   ├── Serialization/
│   │   │   ├── OrleansJsonSerializationBinder.cs
│   │   │   ├── OrleansJsonSerializer.cs
│   │   │   ├── OrleansJsonSerializerOptions.cs
│   │   │   └── OrleansJsonSerializerSettings.cs
│   │   ├── Statistics/
│   │   │   ├── EnvironmentStatisticsProvider.cs
│   │   │   ├── GrainCountStatistics.cs
│   │   │   ├── GrainMetricsListener.cs
│   │   │   ├── OldEnvironmentStatistics.cs
│   │   │   ├── SiloRuntimeMetricsListener.cs
│   │   │   └── SiloRuntimeStatistics.cs
│   │   ├── SystemTargetInterfaces/
│   │   │   ├── IDeploymentLoadPublisher.cs
│   │   │   ├── IManagementGrain.cs
│   │   │   ├── IMembershipService.cs
│   │   │   ├── IMembershipTable.cs
│   │   │   └── ISiloControl.cs
│   │   ├── Threading/
│   │   │   └── RecursiveInterlockedExchangeLock.cs
│   │   ├── Timers/
│   │   │   ├── CoarseStopwatch.cs
│   │   │   ├── NonCapturingTimer.cs
│   │   │   ├── TimerManager.cs
│   │   │   └── ValueStopwatch.cs
│   │   ├── Utils/
│   │   │   ├── AsyncEnumerable.cs
│   │   │   ├── ExecutionContextSuppressor.cs
│   │   │   ├── Factory.cs
│   │   │   ├── NamedOptionExtension.cs
│   │   │   ├── ObserverManager.cs
│   │   │   ├── RandomTimeSpan.cs
│   │   │   ├── ReferenceEqualsComparer.cs
│   │   │   ├── SetExtensions.cs
│   │   │   ├── StandardExtensions.cs
│   │   │   └── TypeConverterExtensions.cs
│   │   ├── build/
│   │   │   └── Microsoft.Orleans.Core.targets
│   │   ├── buildMultiTargeting/
│   │   │   └── Microsoft.Orleans.Core.targets
│   │   └── buildTransitive/
│   │       └── Microsoft.Orleans.Core.targets
│   ├── Orleans.Core.Abstractions/
│   │   ├── Cancellation/
│   │   │   ├── GrainCancellationToken.cs
│   │   │   ├── GrainCancellationTokenSource.cs
│   │   │   └── ICancellationSourcesExtension.cs
│   │   ├── CodeGeneration/
│   │   │   ├── IOnDeserialized.cs
│   │   │   ├── InvokeMethodOptions.cs
│   │   │   └── VersionAttribute.cs
│   │   ├── Concurrency/
│   │   │   └── GrainAttributeConcurrency.cs
│   │   ├── Core/
│   │   │   ├── DeactivationReason.cs
│   │   │   ├── Grain.cs
│   │   │   ├── GrainExtensions.cs
│   │   │   ├── IConfigurationValidator.cs
│   │   │   ├── IGrain.cs
│   │   │   ├── IGrainBase.cs
│   │   │   ├── IGrainCallContext.cs
│   │   │   ├── IGrainCallFilter.cs
│   │   │   ├── IGrainContext.cs
│   │   │   ├── IGrainFactory.cs
│   │   │   ├── IGrainObserver.cs
│   │   │   ├── ILocalActivationStatusChecker.cs
│   │   │   ├── IStorage.cs
│   │   │   ├── Immutable.cs
│   │   │   └── Internal/
│   │   │       ├── ICallChainReentrantGrainContext.cs
│   │   │       └── IGrainManagementExtension.cs
│   │   ├── Diagnostics/
│   │   │   ├── ActivitySources.cs
│   │   │   ├── ActivityTagKeys.cs
│   │   │   └── OpenTelemetryHeaders.cs
│   │   ├── Exceptions/
│   │   │   ├── ClientNotAvailableException.cs
│   │   │   ├── GatewayTooBusyException.cs
│   │   │   ├── GrainExtensionNotInstalledException.cs
│   │   │   ├── LimitExceededException.cs
│   │   │   ├── OrleansConfigurationException.cs
│   │   │   ├── OrleansException.cs
│   │   │   ├── OrleansLifecycleCanceledException.cs
│   │   │   ├── OrleansMessageRejectionException.cs
│   │   │   ├── SiloUnavailableException.cs
│   │   │   └── WrappedException.cs
│   │   ├── GrainDirectory/
│   │   │   ├── GrainDirectoryAttribute.cs
│   │   │   └── IGrainDirectory.cs
│   │   ├── IDs/
│   │   │   ├── ActivationId.cs
│   │   │   ├── ClientGrainId.cs
│   │   │   ├── GrainAddress.cs
│   │   │   ├── GrainAddressCacheUpdate.cs
│   │   │   ├── GrainId.cs
│   │   │   ├── GrainIdKeyExtensions.cs
│   │   │   ├── GrainInterfaceType.cs
│   │   │   ├── GrainType.cs
│   │   │   ├── GrainTypePrefix.cs
│   │   │   ├── GuidId.cs
│   │   │   ├── IdSpan.cs
│   │   │   ├── IdSpanCodec.cs
│   │   │   ├── Legacy/
│   │   │   │   ├── LegacyGrainId.cs
│   │   │   │   └── UniqueKey.cs
│   │   │   ├── ObserverGrainId.cs
│   │   │   ├── SiloAddress.cs
│   │   │   ├── SiloAddressCodec.cs
│   │   │   ├── StableHash.cs
│   │   │   └── SystemTargetGrainId.cs
│   │   ├── Lifecycle/
│   │   │   ├── IGrainLifecycle.cs
│   │   │   ├── ILifecycleObservable.cs
│   │   │   ├── ILifecycleObserver.cs
│   │   │   ├── ILifecycleParticipant.cs
│   │   │   ├── ILifecycleSubject.cs
│   │   │   └── LifecycleExtensions.cs
│   │   ├── Logging/
│   │   │   ├── ErrorCodes.cs
│   │   │   └── LogFormatter.cs
│   │   ├── Manifest/
│   │   │   ├── ClusterManifest.cs
│   │   │   ├── GrainInterfaceProperties.cs
│   │   │   ├── GrainManifest.cs
│   │   │   ├── GrainProperties.cs
│   │   │   ├── IGrainTypeProvider.cs
│   │   │   └── MajorMinorVersion.cs
│   │   ├── Orleans.Core.Abstractions.csproj
│   │   ├── Placement/
│   │   │   ├── ActivationCountBasedPlacement.cs
│   │   │   ├── ClientObserversPlacement.cs
│   │   │   ├── HashBasedPlacement.cs
│   │   │   ├── PlacementAttribute.cs
│   │   │   ├── PlacementFilterAttribute.cs
│   │   │   ├── PlacementFilterStrategy.cs
│   │   │   ├── PlacementStrategy.cs
│   │   │   ├── PreferLocalPlacement.cs
│   │   │   ├── RandomPlacement.cs
│   │   │   ├── ResourceOptimizedPlacement.cs
│   │   │   ├── SiloRoleBasedPlacement.cs
│   │   │   ├── StatelessWorkerPlacement.cs
│   │   │   └── SystemTargetPlacementStrategy.cs
│   │   ├── Properties/
│   │   │   └── IsExternalInit.cs
│   │   ├── Providers/
│   │   │   ├── IProviderBuilder.cs
│   │   │   ├── ProviderConstants.cs
│   │   │   └── ProviderGrainAttributes.cs
│   │   ├── README.md
│   │   ├── Runtime/
│   │   │   ├── AsyncEnumerableRequest.cs
│   │   │   ├── GrainContextComponentExtensions.cs
│   │   │   ├── GrainLifecycleStage.cs
│   │   │   ├── GrainReference.cs
│   │   │   ├── GrainReferenceNotBoundException.cs
│   │   │   ├── IAddressable.cs
│   │   │   ├── IGrainCancellationTokenRuntime.cs
│   │   │   ├── IGrainExtension.cs
│   │   │   ├── IGrainReferenceRuntime.cs
│   │   │   ├── IGrainRuntime.cs
│   │   │   ├── IGrainTimer.cs
│   │   │   ├── MembershipVersion.cs
│   │   │   ├── RequestContext.cs
│   │   │   └── RuntimeContext.cs
│   │   ├── Services/
│   │   │   ├── IGrainService.cs
│   │   │   └── IGrainServiceClient.cs
│   │   ├── Statistics/
│   │   │   ├── EnvironmentStatisticExtensions.cs
│   │   │   ├── IAppEnvironmentStatistics.cs
│   │   │   ├── IEnvironmentStatisticsProvider.cs
│   │   │   └── IHostEnvironmentStatistics.cs
│   │   ├── SystemTargetInterfaces/
│   │   │   ├── ISystemTarget.cs
│   │   │   ├── ISystemTargetBase.cs
│   │   │   └── IVersionManager.cs
│   │   ├── Timers/
│   │   │   ├── GrainTimerCreationOptions.cs
│   │   │   └── ITimerRegistry.cs
│   │   ├── Utils/
│   │   │   ├── Interner.cs
│   │   │   ├── PublicOrleansTaskExtensions.cs
│   │   │   ├── SpanFormattableIPEndPoint.cs
│   │   │   └── Utils.cs
│   │   ├── Versions/
│   │   │   ├── Compatibility/
│   │   │   │   ├── AllVersionsCompatible.cs
│   │   │   │   ├── BackwardCompatible.cs
│   │   │   │   ├── ICompatibilityDirector.cs
│   │   │   │   └── StrictVersionCompatible.cs
│   │   │   ├── IVersionStore.cs
│   │   │   └── Selector/
│   │   │       ├── AllCompatibleVersions.cs
│   │   │       ├── IVersionSelector.cs
│   │   │       ├── LatestVersion.cs
│   │   │       └── MinimumVersion.cs
│   │   ├── build/
│   │   │   └── Microsoft.Orleans.Core.Abstractions.targets
│   │   ├── buildMultiTargeting/
│   │   │   └── Microsoft.Orleans.Core.Abstractions.targets
│   │   └── buildTransitive/
│   │       └── Microsoft.Orleans.Core.Abstractions.targets
│   ├── Orleans.DurableJobs/
│   │   ├── DurableJob.cs
│   │   ├── DurableJobRunResult.cs
│   │   ├── Hosting/
│   │   │   ├── DurableJobsExtensions.cs
│   │   │   └── DurableJobsOptions.cs
│   │   ├── IDurableJobHandler.cs
│   │   ├── IDurableJobReceiverExtension.cs
│   │   ├── ILocalDurableJobManager.cs
│   │   ├── InMemoryJobQueue.cs
│   │   ├── InMemoryJobShard.cs
│   │   ├── JobShard.cs
│   │   ├── JobShardManager.cs
│   │   ├── LocalDurableJobManager.Log.cs
│   │   ├── LocalDurableJobManager.cs
│   │   ├── Orleans.DurableJobs.csproj
│   │   ├── README.md
│   │   ├── ScheduleJobRequest.cs
│   │   ├── ShardExecutor.Log.cs
│   │   └── ShardExecutor.cs
│   ├── Orleans.EventSourcing/
│   │   ├── Common/
│   │   │   ├── ConnectionIssues.cs
│   │   │   ├── NotificationMessage.cs
│   │   │   ├── PrimaryBasedLogViewAdaptor.cs
│   │   │   ├── RecordedConnectionIssue.cs
│   │   │   └── StringEncodedWriteVector.cs
│   │   ├── CustomStorage/
│   │   │   ├── CustomStorageLogConsistencyOptions.cs
│   │   │   ├── ICustomStorageInterface.cs
│   │   │   ├── LogConsistencyProvider.cs
│   │   │   └── LogViewAdaptor.cs
│   │   ├── Hosting/
│   │   │   ├── CustomStorageSiloBuilderExtensions.cs
│   │   │   ├── LogConsistencyProtocolSiloBuilderExtensions.cs
│   │   │   ├── LogStorageSiloBuilderExtensions.cs
│   │   │   └── StateStorageSiloBuilderExtensions.cs
│   │   ├── JournaledGrain.cs
│   │   ├── LogConsistency/
│   │   │   ├── ConnectionIssues.cs
│   │   │   ├── IConnectionIssueListener.cs
│   │   │   ├── ILogConsistencyDiagnostics.cs
│   │   │   ├── ILogConsistencyProtocolGateway.cs
│   │   │   ├── ILogConsistencyProtocolServices.cs
│   │   │   ├── ILogViewAdaptor.cs
│   │   │   ├── ILogViewAdaptorFactory.cs
│   │   │   ├── ILogViewAdaptorHost.cs
│   │   │   ├── IProtocolParticipant.cs
│   │   │   ├── LogConsistentGrain.cs
│   │   │   └── ProtocolServices.cs
│   │   ├── LogStorage/
│   │   │   ├── DefaultAdaptorFactory.cs
│   │   │   ├── LogConsistencyProvider.cs
│   │   │   ├── LogStateWithMetaData.cs
│   │   │   └── LogViewAdaptor.cs
│   │   ├── Orleans.EventSourcing.csproj
│   │   ├── README.md
│   │   └── StateStorage/
│   │       ├── DefaultAdaptorFactory.cs
│   │       ├── GrainStateWithMetaData.cs
│   │       ├── LogConsistencyProvider.cs
│   │       └── LogViewAdaptor.cs
│   ├── Orleans.Hosting.Kubernetes/
│   │   ├── ConfigureKubernetesHostingOptions.cs
│   │   ├── KubernetesClusterAgent.cs
│   │   ├── KubernetesHostingExtensions.cs
│   │   ├── KubernetesHostingOptions.cs
│   │   ├── KubernetesHostingOptionsValidator.cs
│   │   └── Orleans.Hosting.Kubernetes.csproj
│   ├── Orleans.Journaling/
│   │   ├── DurableDictionary.cs
│   │   ├── DurableGrain.cs
│   │   ├── DurableList.cs
│   │   ├── DurableNothing.cs
│   │   ├── DurableQueue.cs
│   │   ├── DurableSet.cs
│   │   ├── DurableState.cs
│   │   ├── DurableTaskCompletionSource.cs
│   │   ├── DurableValue.cs
│   │   ├── HostingExtensions.cs
│   │   ├── IDurableStateMachine.cs
│   │   ├── IStateMachineLogWriter.cs
│   │   ├── IStateMachineManager.cs
│   │   ├── IStateMachineStorage.cs
│   │   ├── IStateMachineStorageProvider.cs
│   │   ├── LogExtent.cs
│   │   ├── LogExtentBuilder.ReadOnlyStream.cs
│   │   ├── LogExtentBuilder.cs
│   │   ├── Orleans.Journaling.csproj
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── StateMachineId.cs
│   │   ├── StateMachineManager.cs
│   │   ├── StateMachineManagerOptions.cs
│   │   ├── StateMachineStorageWriter.cs
│   │   └── VolatileStateMachineStorage.cs
│   ├── Orleans.Persistence.Memory/
│   │   ├── Hosting/
│   │   │   ├── MemoryGrainStorageProviderBuilder.cs
│   │   │   └── MemoryGrainStorageSiloBuilderExtensions.cs
│   │   ├── Options/
│   │   │   └── MemoryGrainStorageOptions.cs
│   │   ├── Orleans.Persistence.Memory.csproj
│   │   └── Storage/
│   │       ├── MemoryStorage.cs
│   │       ├── MemoryStorageEtagMismatchException.cs
│   │       ├── MemoryStorageGrain.cs
│   │       └── MemoryStorageWithLatency.cs
│   ├── Orleans.Reminders/
│   │   ├── Constants/
│   │   │   ├── ReminderOptionsDefaults.cs
│   │   │   └── RemindersConstants.cs
│   │   ├── ErrorCodes.cs
│   │   ├── GrainReminderExtensions.cs
│   │   ├── Hosting/
│   │   │   ├── MemoryReminderTableBuilder.cs
│   │   │   ├── SiloBuilderReminderExtensions.cs
│   │   │   └── SiloBuilderReminderMemoryExtensions.cs
│   │   ├── Options/
│   │   │   └── ReminderOptions.cs
│   │   ├── Orleans.Reminders.csproj
│   │   ├── ReminderService/
│   │   │   ├── GrainBasedReminderTable.cs
│   │   │   ├── InMemoryReminderTable.cs
│   │   │   ├── LocalReminderService.cs
│   │   │   └── ReminderRegistry.cs
│   │   ├── SystemTargetInterfaces/
│   │   │   ├── IReminderService.cs
│   │   │   └── IReminderTable.cs
│   │   └── Timers/
│   │       ├── IRemindable.cs
│   │       └── IReminderRegistry.cs
│   ├── Orleans.Reminders.Abstractions/
│   │   └── Orleans.Reminders.Abstractions.csproj
│   ├── Orleans.Runtime/
│   │   ├── Activation/
│   │   │   ├── ActivationDataActivatorProvider.cs
│   │   │   ├── ConfigureDefaultGrainActivator.cs
│   │   │   ├── DefaultGrainActivator.cs
│   │   │   ├── GrainContextAccessor.cs
│   │   │   ├── IGrainActivator.cs
│   │   │   └── IGrainContextActivator.cs
│   │   ├── Cancellation/
│   │   │   ├── CancellationSourcesExtension.cs
│   │   │   └── GrainCallCancellationManager.cs
│   │   ├── Catalog/
│   │   │   ├── ActivationCollector.cs
│   │   │   ├── ActivationData.cs
│   │   │   ├── ActivationDirectory.cs
│   │   │   ├── ActivationMigrationManager.cs
│   │   │   ├── ActivationState.cs
│   │   │   ├── ActivationWorkingSet.cs
│   │   │   ├── Catalog.cs
│   │   │   ├── GrainLifecycle.cs
│   │   │   ├── GrainTypeSharedContext.cs
│   │   │   ├── IActivationCollector.cs
│   │   │   ├── ICatalog.cs
│   │   │   ├── IncomingRequestMonitor.cs
│   │   │   ├── LocalActivationStatusChecker.cs
│   │   │   ├── StatelessWorkerGrainContext.cs
│   │   │   ├── StreamResourceTestControl.cs
│   │   │   └── SystemTargetShared.cs
│   │   ├── Configuration/
│   │   │   ├── Options/
│   │   │   │   ├── ActivationCountBasedPlacementOptions.cs
│   │   │   │   ├── ActivationRebalancerOptions.cs
│   │   │   │   ├── ActivationRepartitionerOptions.cs
│   │   │   │   ├── ConsistentRingOptions.cs
│   │   │   │   ├── DeploymentLoadPublisherOptions.cs
│   │   │   │   ├── GrainCollectionOptions.cs
│   │   │   │   ├── GrainDirectoryOptions.cs
│   │   │   │   ├── OptionsLogger.cs
│   │   │   │   ├── ResourceOptimizedPlacementOptions.cs
│   │   │   │   ├── SchedulingOptions.cs
│   │   │   │   ├── SiloMessagingOptions.cs
│   │   │   │   ├── SiloMessagingOptionsValidator.cs
│   │   │   │   └── StatelessWorkerOptions.cs
│   │   │   ├── SiloConnectionOptions.cs
│   │   │   └── Validators/
│   │   │       ├── GrainCollectionOptionsValidator.cs
│   │   │       └── SiloClusteringValidator.cs
│   │   ├── ConsistentRing/
│   │   │   ├── ConsistentRingProvider.cs
│   │   │   ├── IConsistentRingProvider.cs
│   │   │   ├── SimpleConsistentRingProvider.cs
│   │   │   └── VirtualBucketsRingProvider.cs
│   │   ├── Core/
│   │   │   ├── FatalErrorHandler.cs
│   │   │   ├── GrainRuntime.cs
│   │   │   ├── HostedClient.cs
│   │   │   ├── IFatalErrorHandler.cs
│   │   │   ├── IHealthCheckParticipant.cs
│   │   │   ├── InsideRuntimeClient.cs
│   │   │   ├── InternalClusterClient.cs
│   │   │   ├── InternalGrainRuntime.cs
│   │   │   ├── ManagementGrain.cs
│   │   │   ├── SystemStatus.cs
│   │   │   └── SystemTarget.cs
│   │   ├── Development/
│   │   │   ├── DevelopmentSiloBuilderExtensions.cs
│   │   │   └── InMemoryLeaseProvider.cs
│   │   ├── Facet/
│   │   │   ├── GrainConstructorArgumentFactory.cs
│   │   │   ├── IAttributeToFactoryMapper.cs
│   │   │   ├── IFacetMetadata.cs
│   │   │   └── Persistent/
│   │   │       ├── IPersistentState.cs
│   │   │       ├── IPersistentStateConfiguration.cs
│   │   │       ├── IPersistentStateFactory.cs
│   │   │       ├── PersistentStateAttribute.cs
│   │   │       ├── PersistentStateAttributeMapper.cs
│   │   │       └── PersistentStateStorageFactory.cs
│   │   ├── GrainDirectory/
│   │   │   ├── CachedGrainLocator.cs
│   │   │   ├── ClientDirectory.cs
│   │   │   ├── ClientGrainLocator.cs
│   │   │   ├── DhtGrainLocator.cs
│   │   │   ├── DirectoryMembershipService.cs
│   │   │   ├── DirectoryMembershipSnapshot.cs
│   │   │   ├── DirectoryResult.cs
│   │   │   ├── DistributedGrainDirectory.cs
│   │   │   ├── GenericGrainDirectoryResolver.cs
│   │   │   ├── GrainDirectoryCacheFactory.cs
│   │   │   ├── GrainDirectoryHandoffManager.cs
│   │   │   ├── GrainDirectoryPartition.Interface.cs
│   │   │   ├── GrainDirectoryPartition.cs
│   │   │   ├── GrainDirectoryPartitionSnapshot.cs
│   │   │   ├── GrainDirectoryResolver.cs
│   │   │   ├── GrainLocator.cs
│   │   │   ├── GrainLocatorResolver.cs
│   │   │   ├── IGrainDirectoryCache.cs
│   │   │   ├── IGrainDirectoryPartition.cs
│   │   │   ├── IGrainDirectoryResolver.cs
│   │   │   ├── ILocalClientDirectory.cs
│   │   │   ├── ILocalGrainDirectory.cs
│   │   │   ├── IRemoteClientDirectory.cs
│   │   │   ├── IRemoteGrainDirectory.cs
│   │   │   ├── LocalGrainDirectory.cs
│   │   │   ├── LocalGrainDirectoryPartition.cs
│   │   │   ├── LruGrainDirectoryCache.cs
│   │   │   ├── RemoteGrainDirectory.cs
│   │   │   ├── RingRange.cs
│   │   │   └── RingRangeCollection.cs
│   │   ├── GrainTypeManager/
│   │   │   ├── ClusterManifestSystemTarget.cs
│   │   │   └── ISiloManifestSystemTarget.cs
│   │   ├── Hosting/
│   │   │   ├── ActivationRebalancerExtensions.cs
│   │   │   ├── ActivationRepartitioningExtensions.cs
│   │   │   ├── CoreHostingExtensions.cs
│   │   │   ├── DefaultSiloServices.cs
│   │   │   ├── DirectorySiloBuilderExtensions.cs
│   │   │   ├── EndpointOptions.cs
│   │   │   ├── EndpointOptionsExtensions.cs
│   │   │   ├── EndpointOptionsProvider.cs
│   │   │   ├── GrainCallFilterExtensions.cs
│   │   │   ├── HostingGrainExtensions.cs
│   │   │   ├── ISiloBuilder.cs
│   │   │   ├── NamedService.cs
│   │   │   ├── OrleansSiloGenericHostExtensions.cs
│   │   │   ├── PlacementStrategyExtensions.cs
│   │   │   ├── ProviderConfiguration/
│   │   │   │   └── DevelopmentClusteringProvider.cs
│   │   │   ├── SiloBuilder.cs
│   │   │   ├── SiloBuilderExtensions.cs
│   │   │   ├── SiloBuilderStartupExtensions.cs
│   │   │   ├── SiloHostedService.cs
│   │   │   └── StorageProviderHostExtensions.cs
│   │   ├── Lifecycle/
│   │   │   ├── ISiloLifecycle.cs
│   │   │   ├── ISiloLifecycleSubject.cs
│   │   │   ├── IStartupTask.cs
│   │   │   └── SiloLifecycleSubject.cs
│   │   ├── Manifest/
│   │   │   ├── ClusterManifestProvider.cs
│   │   │   ├── GrainClassMap.cs
│   │   │   └── SiloManifestProvider.cs
│   │   ├── MembershipService/
│   │   │   ├── ClusterHealthMonitor.cs
│   │   │   ├── ClusterMember.cs
│   │   │   ├── ClusterMembershipService.cs
│   │   │   ├── ClusterMembershipSnapshot.cs
│   │   │   ├── ClusterMembershipUpdate.cs
│   │   │   ├── DevelopmentClusterMembershipOptions.cs
│   │   │   ├── DevelopmentClusterMembershipOptionsValidator.cs
│   │   │   ├── IClusterMembershipService.cs
│   │   │   ├── IMembershipGossiper.cs
│   │   │   ├── IRemoteSiloProber.cs
│   │   │   ├── ISiloStatusListener.cs
│   │   │   ├── ISiloStatusOracle.cs
│   │   │   ├── InMemoryMembershipTable.cs
│   │   │   ├── LocalSiloHealthMonitor.cs
│   │   │   ├── MembershipAgent.cs
│   │   │   ├── MembershipGossiper.cs
│   │   │   ├── MembershipSystemTarget.cs
│   │   │   ├── MembershipTableCleanupAgent.cs
│   │   │   ├── MembershipTableEntryExtensions.cs
│   │   │   ├── MembershipTableManager.cs
│   │   │   ├── MembershipTableSnapshotExtensions.cs
│   │   │   ├── OrleansClusterConnectivityCheckFailedException.cs
│   │   │   ├── OrleansMissingMembershipEntryException.cs
│   │   │   ├── RemoteSiloProber.cs
│   │   │   ├── SiloHealthMonitor.cs
│   │   │   ├── SiloMetadata/
│   │   │   │   ├── ISiloMetadataCache.cs
│   │   │   │   ├── ISiloMetadataClient.cs
│   │   │   │   ├── ISiloMetadataSystemTarget.cs
│   │   │   │   ├── SiloMetadaCache.cs
│   │   │   │   ├── SiloMetadata.cs
│   │   │   │   ├── SiloMetadataClient.cs
│   │   │   │   ├── SiloMetadataHostingExtensions.cs
│   │   │   │   └── SiloMetadataSystemTarget.cs
│   │   │   ├── SiloStatusListenerManager.cs
│   │   │   ├── SiloStatusOracle.cs
│   │   │   └── SystemTargetBasedMembershipTable.cs
│   │   ├── Messaging/
│   │   │   ├── Gateway.cs
│   │   │   ├── IConnectedClientCollection.cs
│   │   │   ├── MessageCenter.cs
│   │   │   ├── OverloadDetector.cs
│   │   │   └── RuntimeMessagingTrace.cs
│   │   ├── Networking/
│   │   │   ├── ConnectionListener.cs
│   │   │   ├── GatewayConnectionListener.cs
│   │   │   ├── GatewayInboundConnection.cs
│   │   │   ├── ProbeRequestMonitor.cs
│   │   │   ├── SiloConnection.cs
│   │   │   ├── SiloConnectionFactory.cs
│   │   │   ├── SiloConnectionListener.cs
│   │   │   └── SiloConnectionMaintainer.cs
│   │   ├── Orleans.Runtime.csproj
│   │   ├── Placement/
│   │   │   ├── ActivationCountPlacementDirector.cs
│   │   │   ├── ClientObserverPlacementStrategyResolver.cs
│   │   │   ├── ClientObserversPlacementDirector.cs
│   │   │   ├── DeploymentLoadPublisher.cs
│   │   │   ├── Filtering/
│   │   │   │   ├── PlacementFilterDirectorResolver.cs
│   │   │   │   ├── PlacementFilterStrategyResolver.cs
│   │   │   │   ├── PreferredMatchSiloMetadataPlacementFilterAttribute.cs
│   │   │   │   ├── PreferredMatchSiloMetadataPlacementFilterDirector.cs
│   │   │   │   ├── PreferredMatchSiloMetadataPlacementFilterStrategy.cs
│   │   │   │   ├── RequiredMatchSiloMetadataPlacementFilterAttribute.cs
│   │   │   │   ├── RequiredMatchSiloMetadataPlacementFilterDirector.cs
│   │   │   │   └── RequiredMatchSiloMetadataPlacementFilterStrategy.cs
│   │   │   ├── GrainMigratabilityChecker.cs
│   │   │   ├── HashBasedPlacementDirector.cs
│   │   │   ├── IPlacementStrategyResolver.cs
│   │   │   ├── ISiloStatisticsChangeListener.cs
│   │   │   ├── PlacementDirectorResolver.cs
│   │   │   ├── PlacementService.cs
│   │   │   ├── PlacementStrategyResolver.cs
│   │   │   ├── PreferLocalPlacementDirector.cs
│   │   │   ├── RandomPlacementDirector.cs
│   │   │   ├── Rebalancing/
│   │   │   │   ├── ActivationRebalancerMonitor.cs
│   │   │   │   ├── ActivationRebalancerWorker.Log.cs
│   │   │   │   ├── ActivationRebalancerWorker.cs
│   │   │   │   └── FailedSessionBackoffProvider.cs
│   │   │   ├── Repartitioning/
│   │   │   │   ├── ActivationRepartitioner.Log.cs
│   │   │   │   ├── ActivationRepartitioner.MessageSink.cs
│   │   │   │   ├── ActivationRepartitioner.cs
│   │   │   │   ├── BlockedBloomFilter.cs
│   │   │   │   ├── FrequentItemCollection.cs
│   │   │   │   ├── MaxHeap.cs
│   │   │   │   ├── RebalancerCompatibleRule.cs
│   │   │   │   └── RepartitionerMessageFilter.cs
│   │   │   ├── ResourceOptimizedPlacementDirector.cs
│   │   │   ├── SiloRoleBasedPlacementDirector.cs
│   │   │   └── StatelessWorkerDirector.cs
│   │   ├── Properties/
│   │   │   └── IsExternalInit.cs
│   │   ├── README.md
│   │   ├── Scheduler/
│   │   │   ├── ActivationTaskScheduler.cs
│   │   │   ├── ClosureWorkItem.cs
│   │   │   ├── IWorkItem.cs
│   │   │   ├── SchedulerExtensions.cs
│   │   │   ├── TaskSchedulerUtils.cs
│   │   │   ├── WorkItemBase.cs
│   │   │   └── WorkItemGroup.cs
│   │   ├── Services/
│   │   │   ├── GrainService.cs
│   │   │   ├── GrainServiceClient.cs
│   │   │   ├── GrainServiceFactory.cs
│   │   │   └── GrainServicesSiloBuilderExtensions.cs
│   │   ├── Silo/
│   │   │   ├── LocalSiloDetails.cs
│   │   │   ├── Silo.cs
│   │   │   ├── SiloControl.cs
│   │   │   ├── SiloOptions.cs
│   │   │   ├── SiloProviderRuntime.cs
│   │   │   ├── TestHooks/
│   │   │   │   ├── ITestHooksSystemTarget.cs
│   │   │   │   └── TestHooksSystemTarget.cs
│   │   │   └── Watchdog.cs
│   │   ├── Storage/
│   │   │   └── StateStorageBridge.cs
│   │   ├── Timers/
│   │   │   ├── AsyncTimer.cs
│   │   │   ├── AsyncTimerFactory.cs
│   │   │   ├── GrainTimer.cs
│   │   │   ├── IAsyncTimer.cs
│   │   │   ├── IAsyncTimerFactory.cs
│   │   │   ├── IGrainTimerRegistry.cs
│   │   │   └── TimerRegistry.cs
│   │   ├── Utilities/
│   │   │   ├── FactoryUtility.cs
│   │   │   ├── OrleansDebuggerHelper.cs
│   │   │   ├── SearchAlgorithms.cs
│   │   │   └── StripedMpscBuffer.cs
│   │   └── Versions/
│   │       ├── CachedVersionSelectorManager.cs
│   │       ├── Compatibility/
│   │       │   ├── AllVersionsCompatibilityDirector.cs
│   │       │   ├── BackwardCompatilityDirector.cs
│   │       │   ├── CompatibilityDirectorManager.cs
│   │       │   └── StrictVersionCompatibilityDirector.cs
│   │       ├── GrainVersionStore.cs
│   │       ├── Selector/
│   │       │   ├── AllCompatibleVersionsSelector.cs
│   │       │   ├── LatestVersionDirector.cs
│   │       │   ├── MinimumVersionSelector.cs
│   │       │   └── VersionDirectorManager.cs
│   │       ├── SingleWaiterAutoResetEvent.cs
│   │       └── VersionStoreGrain.cs
│   ├── Orleans.Sdk/
│   │   ├── Orleans.Sdk.csproj
│   │   ├── README.md
│   │   ├── build/
│   │   │   └── Microsoft.Orleans.Sdk.targets
│   │   ├── buildMultiTargeting/
│   │   │   └── Microsoft.Orleans.Sdk.targets
│   │   └── buildTransitive/
│   │       └── Microsoft.Orleans.Sdk.targets
│   ├── Orleans.Serialization/
│   │   ├── Activators/
│   │   │   ├── DefaultActivator.cs
│   │   │   └── IActivator.cs
│   │   ├── Buffers/
│   │   │   ├── Adaptors/
│   │   │   │   ├── ArrayStreamBufferWriter.cs
│   │   │   │   ├── BufferSliceReaderInput.cs
│   │   │   │   ├── BufferWriterBox.cs
│   │   │   │   ├── BufferWriterExtensions.cs
│   │   │   │   ├── MemoryBufferWriter.cs
│   │   │   │   ├── MemoryStreamBufferWriter.cs
│   │   │   │   ├── PooledBufferStream.cs
│   │   │   │   ├── PoolingStreamBufferWriter.cs
│   │   │   │   └── SpanBufferWriter.cs
│   │   │   ├── ArcBufferWriter.cs
│   │   │   ├── BufferWriterExtensions.cs
│   │   │   ├── PooledBuffer.cs
│   │   │   ├── Reader.cs
│   │   │   ├── Writer.FieldHeader.cs
│   │   │   ├── Writer.TagDelimitedField.cs
│   │   │   ├── Writer.VarInt.cs
│   │   │   └── Writer.cs
│   │   ├── Cloning/
│   │   │   └── IDeepCopier.cs
│   │   ├── Codecs/
│   │   │   ├── ArrayCodec.cs
│   │   │   ├── ArrayListCodec.cs
│   │   │   ├── BigIntegerCodec.cs
│   │   │   ├── BitVector32Codec.cs
│   │   │   ├── ByteArrayCodec.cs
│   │   │   ├── CollectionCodec.cs
│   │   │   ├── CommonCodecTypeFilter.cs
│   │   │   ├── CompareInfoCodec.cs
│   │   │   ├── ConcurrentDictionaryCodec.cs
│   │   │   ├── ConcurrentQueueCodec.cs
│   │   │   ├── ConsumeFieldExtension.cs
│   │   │   ├── CultureInfoCodec.cs
│   │   │   ├── DateOnlyCodec.cs
│   │   │   ├── DateTimeCodec.cs
│   │   │   ├── DateTimeOffsetCodec.cs
│   │   │   ├── DictionaryCodec.cs
│   │   │   ├── Enum32BaseCodec.cs
│   │   │   ├── FloatCodec.cs
│   │   │   ├── GeneralizedReferenceTypeSurrogateCodec.cs
│   │   │   ├── GeneralizedValueTypeSurrogateCodec.cs
│   │   │   ├── GuidCodec.cs
│   │   │   ├── HashSetCodec.cs
│   │   │   ├── IFieldCodec.cs
│   │   │   ├── IPAddressCodec.cs
│   │   │   ├── IPEndPointCodec.cs
│   │   │   ├── ImmutableArrayCodec.cs
│   │   │   ├── ImmutableDictionaryCodec.cs
│   │   │   ├── ImmutableHashSetCodec.cs
│   │   │   ├── ImmutableListCodec.cs
│   │   │   ├── ImmutableQueueCodec.cs
│   │   │   ├── ImmutableSortedDictionaryCodec.cs
│   │   │   ├── ImmutableSortedSetCodec.cs
│   │   │   ├── ImmutableStackCodec.cs
│   │   │   ├── IntegerCodec.cs
│   │   │   ├── KeyValuePairCodec.cs
│   │   │   ├── ListCodec.cs
│   │   │   ├── MultiDimensionalArrayCodec.cs
│   │   │   ├── NameValueCollectionCodec.cs
│   │   │   ├── NullableCodec.cs
│   │   │   ├── ObjectCodec.cs
│   │   │   ├── QueueCodec.cs
│   │   │   ├── ReadOnlyCollectionCodec.cs
│   │   │   ├── ReadOnlyDictionaryCodec.cs
│   │   │   ├── ReferenceCodec.cs
│   │   │   ├── ReferenceTypeSurrogateCodec.cs
│   │   │   ├── SkipFieldExtension.cs
│   │   │   ├── SortedDictionaryCodec.cs
│   │   │   ├── SortedListCodec.cs
│   │   │   ├── SortedSetCodec.cs
│   │   │   ├── StackCodec.cs
│   │   │   ├── StringCodec.cs
│   │   │   ├── TimeOnlyCodec.cs
│   │   │   ├── TimeSpanCodec.cs
│   │   │   ├── TupleCodec.cs
│   │   │   ├── TypeSerializerCodec.cs
│   │   │   ├── UnknownFieldMarker.cs
│   │   │   ├── UriCodec.cs
│   │   │   ├── ValueTupleCodec.cs
│   │   │   ├── VersionCodec.cs
│   │   │   ├── VoidCodec.cs
│   │   │   └── WellKnownStringComparerCodec.cs
│   │   ├── Configuration/
│   │   │   ├── DefaultTypeManifestProvider.cs
│   │   │   ├── ITypeManifestProvider.cs
│   │   │   ├── TypeManifestOptions.cs
│   │   │   └── TypeManifestProviderAttribute.cs
│   │   ├── Exceptions.cs
│   │   ├── GeneratedCodeHelpers/
│   │   │   └── OrleansGeneratedCodeHelper.cs
│   │   ├── Hosting/
│   │   │   ├── ISerializerBuilder.cs
│   │   │   ├── ReferencedAssemblyProvider.cs
│   │   │   ├── SerializerBuilderExtensions.cs
│   │   │   ├── SerializerConfigurationAnalyzer.cs
│   │   │   └── ServiceCollectionExtensions.cs
│   │   ├── ISerializableSerializer/
│   │   │   ├── DotNetSerializableCodec.cs
│   │   │   ├── ExceptionCodec.cs
│   │   │   ├── ExceptionSerializationOptions.cs
│   │   │   ├── SerializationCallbacksFactory.cs
│   │   │   ├── SerializationConstructorFactory.cs
│   │   │   ├── SerializationConstructorNotFoundException.cs
│   │   │   ├── SerializationEntryCodec.cs
│   │   │   ├── SerializationEntrySurrogate.cs
│   │   │   ├── UnavailableExceptionFallbackException.cs
│   │   │   ├── ValueTypeSerializer.cs
│   │   │   └── ValueTypeSerializerFactory.cs
│   │   ├── Invocation/
│   │   │   ├── IInvokable.cs
│   │   │   ├── IResponseCompletionSource.cs
│   │   │   ├── ITargetHolder.cs
│   │   │   ├── Pools/
│   │   │   │   ├── ConcurrentObjectPool.cs
│   │   │   │   ├── DefaultConcurrentObjectPoolPolicy.cs
│   │   │   │   ├── InvokablePool.cs
│   │   │   │   ├── ResponseCompletionSourcePool.cs
│   │   │   │   └── ResponsePool.cs
│   │   │   ├── Response.cs
│   │   │   ├── ResponseCompletionSource.cs
│   │   │   └── TargetHolderExtensions.cs
│   │   ├── Orleans.Serialization.csproj
│   │   ├── Properties/
│   │   │   └── IsExternalInit.cs
│   │   ├── README.md
│   │   ├── Serializer.cs
│   │   ├── Serializers/
│   │   │   ├── AbstractTypeSerializer.cs
│   │   │   ├── CodecProvider.cs
│   │   │   ├── ConcreteTypeSerializer.cs
│   │   │   ├── IActivatorProvider.cs
│   │   │   ├── IBaseCodec.cs
│   │   │   ├── IBaseCodecProvider.cs
│   │   │   ├── ICodecProvider.cs
│   │   │   ├── ICodecSelector.cs
│   │   │   ├── IFieldCodecProvider.cs
│   │   │   ├── IGeneralizedCodec.cs
│   │   │   ├── IValueSerializer.cs
│   │   │   ├── IValueSerializerProvider.cs
│   │   │   ├── SurrogateCodec.cs
│   │   │   ├── ValueSerializer.cs
│   │   │   └── ValueTypeSurrogateCodec.cs
│   │   ├── Session/
│   │   │   ├── ReferencedObjectCollection.cs
│   │   │   ├── ReferencedTypeCollection.cs
│   │   │   ├── SerializerSession.cs
│   │   │   ├── SerializerSessionPool.cs
│   │   │   └── WellKnownTypeCollection.cs
│   │   ├── TypeSystem/
│   │   │   ├── CachedTypeResolver.cs
│   │   │   ├── CompoundTypeAliasTree.cs
│   │   │   ├── DefaultTypeFilter.cs
│   │   │   ├── ITypeConverter.cs
│   │   │   ├── ITypeResolver.cs
│   │   │   ├── QualifiedType.cs
│   │   │   ├── RuntimeTypeNameFormatter.cs
│   │   │   ├── RuntimeTypeNameParser.cs
│   │   │   ├── RuntimeTypeNameRewriter.cs
│   │   │   ├── TypeCodec.cs
│   │   │   ├── TypeConverter.cs
│   │   │   └── TypeSpec.cs
│   │   ├── Utilities/
│   │   │   ├── BitOperations.cs
│   │   │   ├── BitStreamFormatter.cs
│   │   │   ├── FieldAccessor.cs
│   │   │   ├── ReferenceEqualsComparer.cs
│   │   │   ├── ServiceCollectionExtensions.cs
│   │   │   └── VarIntReaderExtensions.cs
│   │   └── WireProtocol/
│   │       ├── ExtendedWireType.cs
│   │       ├── Field.cs
│   │       ├── SchemaType.cs
│   │       ├── Tag.cs
│   │       └── WireType.cs
│   ├── Orleans.Serialization.Abstractions/
│   │   ├── Annotations.cs
│   │   ├── FrameworkPartAttribute.cs
│   │   ├── GenerateFieldIds.cs
│   │   ├── Orleans.Serialization.Abstractions.csproj
│   │   ├── Properties/
│   │   │   └── IsExternalInit.cs
│   │   └── README.md
│   ├── Orleans.Serialization.FSharp/
│   │   ├── FSharpCodecs.cs
│   │   ├── Orleans.Serialization.FSharp.csproj
│   │   └── README.md
│   ├── Orleans.Serialization.MemoryPack/
│   │   ├── MemoryPackCodec.cs
│   │   ├── MemoryPackCodecOptions.cs
│   │   ├── Orleans.Serialization.MemoryPack.csproj
│   │   ├── README.md
│   │   └── SerializationHostingExtensions.cs
│   ├── Orleans.Serialization.MessagePack/
│   │   ├── MessagePackCodec.cs
│   │   ├── MessagePackCodecOptions.cs
│   │   ├── Orleans.Serialization.MessagePack.csproj
│   │   ├── README.md
│   │   └── SerializationHostingExtensions.cs
│   ├── Orleans.Serialization.NewtonsoftJson/
│   │   ├── NewtonsoftJsonCodec.cs
│   │   ├── NewtonsoftJsonCodecOptions.cs
│   │   ├── Orleans.Serialization.NewtonsoftJson.csproj
│   │   ├── README.md
│   │   └── SerializationHostingExtensions.cs
│   ├── Orleans.Serialization.SystemTextJson/
│   │   ├── JsonCodec.cs
│   │   ├── JsonCodecOptions.cs
│   │   ├── Orleans.Serialization.SystemTextJson.csproj
│   │   ├── README.md
│   │   └── SerializationHostingExtensions.cs
│   ├── Orleans.Serialization.TestKit/
│   │   ├── BufferTestHelper.cs
│   │   ├── CopierTester.cs
│   │   ├── FieldCodecTester.cs
│   │   ├── IOutputBuffer.cs
│   │   ├── Orleans.Serialization.TestKit.csproj
│   │   ├── README.md
│   │   ├── ReadOnlySequenceHelper.cs
│   │   ├── TestBufferWriterStruct.cs
│   │   ├── TestMultiSegmentBufferWriter.cs
│   │   └── ValueTypeFieldCodecTester.cs
│   ├── Orleans.Server/
│   │   ├── Orleans.Server.csproj
│   │   └── README.md
│   ├── Orleans.Streaming/
│   │   ├── Common/
│   │   │   ├── EventSequenceToken.cs
│   │   │   ├── EventSequenceTokenV2.cs
│   │   │   ├── Monitors/
│   │   │   │   ├── DefaultBlockPoolMonitor.cs
│   │   │   │   ├── DefaultCacheMonitor.cs
│   │   │   │   ├── DefaultQueueAdapterReceiverMonitor.cs
│   │   │   │   ├── IBlockPoolMonitor.cs
│   │   │   │   ├── ICacheMonitor.cs
│   │   │   │   ├── IObjectPoolMonitor.cs
│   │   │   │   ├── IQueueAdapterReceiverMonitor.cs
│   │   │   │   └── MonitorAggregationDimensions.cs
│   │   │   ├── PooledCache/
│   │   │   │   ├── CachedMessage.cs
│   │   │   │   ├── CachedMessageBlock.cs
│   │   │   │   ├── CachedMessagePool.cs
│   │   │   │   ├── ChronologicalEvictionStrategy.cs
│   │   │   │   ├── FixedSizeBuffer.cs
│   │   │   │   ├── ICacheDataAdapter.cs
│   │   │   │   ├── IEvictionStrategy.cs
│   │   │   │   ├── IObjectPool.cs
│   │   │   │   ├── ObjectPool.cs
│   │   │   │   ├── PooledQueueCache.cs
│   │   │   │   └── TimePurgePredicate.cs
│   │   │   ├── RecoverableStreamConfigurator.cs
│   │   │   ├── RecoverableStreamOptions.cs
│   │   │   ├── SegmentBuilder.cs
│   │   │   └── SimpleCache/
│   │   │       ├── SimpleQueueAdapterCache.cs
│   │   │       ├── SimpleQueueCache.cs
│   │   │       ├── SimpleQueueCacheCursor.cs
│   │   │       └── SimpleQueueCacheOptions.cs
│   │   ├── Core/
│   │   │   ├── DefaultStreamIdMapper.cs
│   │   │   ├── IAsyncBatchObservable.cs
│   │   │   ├── IAsyncBatchObserver.cs
│   │   │   ├── IAsyncBatchProducer.cs
│   │   │   ├── IAsyncObservable.cs
│   │   │   ├── IAsyncObserver.cs
│   │   │   ├── IAsyncStream.cs
│   │   │   ├── IStreamIdMapper.cs
│   │   │   ├── IStreamIdentity.cs
│   │   │   ├── IStreamSubscriptionHandleFactory.cs
│   │   │   ├── IStreamSubscriptionManager.cs
│   │   │   ├── IStreamSubscriptionManagerAdmin.cs
│   │   │   ├── IStreamSubscriptionManagerRetriever.cs
│   │   │   ├── IStreamSubscriptionObserver.cs
│   │   │   ├── ImplicitConsumerGrainExtensions.cs
│   │   │   ├── StreamIdentity.cs
│   │   │   ├── StreamSequenceToken.cs
│   │   │   ├── StreamSubscription.cs
│   │   │   ├── StreamSubscriptionHandle.cs
│   │   │   ├── StreamSubscriptionManager.cs
│   │   │   └── StreamSubscriptionManagerAdmin.cs
│   │   ├── Extensions/
│   │   │   ├── AsyncBatchObservableExtensions.cs
│   │   │   ├── AsyncObservableExtensions.cs
│   │   │   ├── GenericAsyncObserver.cs
│   │   │   ├── GenericBatchAsyncObserver.cs
│   │   │   └── StreamSubscriptionHandleExtensions.cs
│   │   ├── Filtering/
│   │   │   └── IStreamFilter.cs
│   │   ├── Generator/
│   │   │   ├── GeneratorAdapterFactory.cs
│   │   │   ├── GeneratorPooledCache.cs
│   │   │   ├── Generators/
│   │   │   │   ├── GeneratedBatchContainer.cs
│   │   │   │   ├── GeneratedEvent.cs
│   │   │   │   ├── SimpleGenerator.cs
│   │   │   │   └── SimpleGeneratorConfig.cs
│   │   │   └── IStreamGenerator.cs
│   │   ├── GrainStreamingExtensions.cs
│   │   ├── Hosting/
│   │   │   ├── ClientBuilderStreamingExtensions.cs
│   │   │   ├── ClusterClientPersistentStreamConfigurator.cs
│   │   │   ├── SiloBuilderMemoryStreamExtensions.cs
│   │   │   ├── SiloBuilderStreamingExtensions.cs
│   │   │   └── StreamingServiceCollectionExtensions.cs
│   │   ├── ISiloPersistentStreamConfigurator.cs
│   │   ├── Internal/
│   │   │   ├── IInternalAsyncObservable.cs
│   │   │   ├── IInternalStreamProvider.cs
│   │   │   ├── IStreamControl.cs
│   │   │   ├── IStreamGrainExtensions.cs
│   │   │   ├── PeriodicAction.cs
│   │   │   ├── StreamConsumer.cs
│   │   │   ├── StreamConsumerExtension.cs
│   │   │   ├── StreamDirectory.cs
│   │   │   ├── StreamHandshakeToken.cs
│   │   │   ├── StreamImpl.cs
│   │   │   ├── StreamSubscriptionHandleImpl.cs
│   │   │   └── StreamSubsriptionHandlerFactory.cs
│   │   ├── InternalStreamId.cs
│   │   ├── JsonConverters/
│   │   │   ├── StreamImplConverter.cs
│   │   │   └── StreamingConverterConfigurator.cs
│   │   ├── LoadShedQueueFlowController.cs
│   │   ├── MemoryStreams/
│   │   │   ├── IMemoryStreamQueueGrain.cs
│   │   │   ├── MemoryAdapterFactory.cs
│   │   │   ├── MemoryAdapterReceiver.cs
│   │   │   ├── MemoryBatchContainer.cs
│   │   │   ├── MemoryMessageBody.cs
│   │   │   ├── MemoryMessageBodySerializerFactory.cs
│   │   │   ├── MemoryMessageData.cs
│   │   │   ├── MemoryPooledCache.cs
│   │   │   ├── MemoryStreamBuilder.cs
│   │   │   ├── MemoryStreamProviderBuilder.cs
│   │   │   └── MemoryStreamQueueGrain.cs
│   │   ├── Orleans.Streaming.csproj
│   │   ├── PersistentStreams/
│   │   │   ├── IDeploymentConfiguration.cs
│   │   │   ├── IPersistentStreamPullingAgent.cs
│   │   │   ├── IQueueDataAdapter.cs
│   │   │   ├── IStreamFailureHandler.cs
│   │   │   ├── IStreamQueueBalancer.cs
│   │   │   ├── IStreamQueueCheckpointer.cs
│   │   │   ├── NoOpStreamFailureHandler.cs
│   │   │   ├── Options/
│   │   │   │   └── PersistentStreamProviderOptions.cs
│   │   │   ├── PersistentStreamProducer.cs
│   │   │   ├── PersistentStreamProvider.cs
│   │   │   ├── PersistentStreamPullingAgent.cs
│   │   │   ├── PersistentStreamPullingManager.cs
│   │   │   ├── QueueStreamDataStructures.cs
│   │   │   ├── StreamConsumerCollection.cs
│   │   │   ├── StreamEventDeliveryFailureException.cs
│   │   │   └── StreamPosition.cs
│   │   ├── Predicates/
│   │   │   ├── AllStreamNamespacesPredicate.cs
│   │   │   ├── ExactMatchStreamNamespacePredicate.cs
│   │   │   ├── IStreamNamespacePredicate.cs
│   │   │   ├── RegexStreamNamespacePredicate.cs
│   │   │   └── StreamSubscriptionAttributes.cs
│   │   ├── ProviderErrorCode.cs
│   │   ├── Providers/
│   │   │   ├── ClientStreamingProviderRuntime.cs
│   │   │   ├── IBackoffProviders.cs
│   │   │   ├── IStreamProvider.cs
│   │   │   ├── IStreamProviderRuntime.cs
│   │   │   ├── ProviderStartException.cs
│   │   │   ├── SiloStreamProviderRuntime.cs
│   │   │   └── StreamProviderDirection.cs
│   │   ├── PubSub/
│   │   │   ├── DefaultStreamNamespacePredicateProvider.cs
│   │   │   ├── FaultedSubscriptionException.cs
│   │   │   ├── GrainBasedPubSubRuntime.cs
│   │   │   ├── IPubSubRendezvousGrain.cs
│   │   │   ├── ImplicitStreamPubSub.cs
│   │   │   ├── ImplicitStreamSubscriberTable.cs
│   │   │   ├── PubSubPublisherState.cs
│   │   │   ├── PubSubRendezvousGrain.cs
│   │   │   ├── PubSubSubscriptionState.cs
│   │   │   ├── StreamPubSubImpl.cs
│   │   │   ├── StreamSubscriptionManagerExtensions.cs
│   │   │   └── SubscriptionMarker.cs
│   │   ├── QueueAdapters/
│   │   │   ├── AggregatedQueueFlowController.cs
│   │   │   ├── BatchContainerBatch.cs
│   │   │   ├── DataNotAvailableException.cs
│   │   │   ├── HashRing.cs
│   │   │   ├── HashRingBasedStreamQueueMapper.cs
│   │   │   ├── HashRingStreamQueueMapperOptions.cs
│   │   │   ├── IBatchContainer.cs
│   │   │   ├── IBatchContainerBatch.cs
│   │   │   ├── IConsistentRingStreamQueueMapper.cs
│   │   │   ├── IQueueAdapter.cs
│   │   │   ├── IQueueAdapterCache.cs
│   │   │   ├── IQueueAdapterFactory.cs
│   │   │   ├── IQueueAdapterReceiver.cs
│   │   │   ├── IQueueCache.cs
│   │   │   ├── IQueueCacheCursor.cs
│   │   │   ├── IQueueFlowController.cs
│   │   │   ├── IStreamQueueMapper.cs
│   │   │   ├── QueueAdapterConstants.cs
│   │   │   └── QueueCacheMissException.cs
│   │   ├── QueueBalancer/
│   │   │   ├── BestFitBalancer.cs
│   │   │   ├── ConsistentRingQueueBalancer.cs
│   │   │   ├── DeploymentBasedQueueBalancer.cs
│   │   │   ├── DeploymentBasedQueueBalancerOptions.cs
│   │   │   ├── IResourceSelector.cs
│   │   │   ├── LeaseBasedQueueBalancer.cs
│   │   │   ├── LeaseBasedQueueBalancerOptions.cs
│   │   │   ├── PersistentStreamConfiguratorExtension.cs
│   │   │   ├── QueueBalancerBase.cs
│   │   │   ├── RoundRobinSelector.cs
│   │   │   └── StaticClusterDeploymentConfiguration.cs
│   │   ├── QueueId.cs
│   │   ├── SiloPersistentStreamConfigurator.cs
│   │   ├── StreamConsumerGrainContextAction.cs
│   │   └── StreamId.cs
│   ├── Orleans.Streaming.Abstractions/
│   │   ├── Orleans.Streaming.Abstractions.csproj
│   │   └── Properties/
│   │       └── AssemblyInfo.cs
│   ├── Orleans.Streaming.NATS/
│   │   ├── Hosting/
│   │   │   ├── ClientBuilderExtensions.cs
│   │   │   ├── NatsStreamConfigurator.cs
│   │   │   └── SiloBuilderExtensions.cs
│   │   ├── NatsOptions.cs
│   │   ├── Orleans.Streaming.NATS.csproj
│   │   ├── Providers/
│   │   │   ├── NatsAdapter.cs
│   │   │   ├── NatsAdapterFactory.cs
│   │   │   ├── NatsBatchContainer.cs
│   │   │   ├── NatsConnectionManager.cs
│   │   │   ├── NatsQueueAdapterReceiver.cs
│   │   │   ├── NatsStreamConsumer.cs
│   │   │   ├── NatsStreamMessage.cs
│   │   │   └── StreamIdJsonConverter.cs
│   │   └── README.md
│   ├── Orleans.TestingHost/
│   │   ├── ClientExtensions.cs
│   │   ├── ConfigureDistributedGrainDirectory.cs
│   │   ├── IClientBuilderConfigurator.cs
│   │   ├── IHostConfigurator.cs
│   │   ├── IPortAllocator.cs
│   │   ├── ISiloConfigurator.cs
│   │   ├── InMemoryTransport/
│   │   │   ├── InMemoryTransportConnection.cs
│   │   │   └── InMemoryTransportListenerFactory.cs
│   │   ├── InProcTestCluster.cs
│   │   ├── InProcTestClusterBuilder.cs
│   │   ├── InProcTestClusterOptions.cs
│   │   ├── InProcTestSiloSpecificOptions.cs
│   │   ├── InProcess/
│   │   │   ├── InProcessGrainDirectory.cs
│   │   │   └── InProcessMembershipTable.cs
│   │   ├── InProcessSiloHandle.cs
│   │   ├── Logging/
│   │   │   ├── FileLogger.cs
│   │   │   └── FileLoggerProvider.cs
│   │   ├── Orleans.TestingHost.csproj
│   │   ├── SiloHandle.cs
│   │   ├── StandaloneSiloHandle.cs
│   │   ├── StandaloneSiloHost.cs
│   │   ├── TestCluster.cs
│   │   ├── TestClusterBuilder.cs
│   │   ├── TestClusterExtensions.cs
│   │   ├── TestClusterHostFactory.cs
│   │   ├── TestClusterOptions.cs
│   │   ├── TestClusterPortAllocator.cs
│   │   ├── TestStorageProviders/
│   │   │   ├── FaultInjectionStorageProvider.cs
│   │   │   ├── FaultInjectionStorageServiceCollectionExtensions.cs
│   │   │   ├── FaultyMemoryStorage.cs
│   │   │   ├── IStorageFaultGrain.cs
│   │   │   ├── RandomlyInjectedStorageException.cs
│   │   │   └── StorageFaultGrain.cs
│   │   ├── UnixSocketTransport/
│   │   │   ├── UnixSocketConnectionExtensions.cs
│   │   │   ├── UnixSocketConnectionFactory.cs
│   │   │   ├── UnixSocketConnectionListener.cs
│   │   │   ├── UnixSocketConnectionListenerFactory.cs
│   │   │   └── UnixSocketConnectionOptions.cs
│   │   └── Utils/
│   │       ├── AsyncResultHandle.cs
│   │       ├── StorageEmulator.cs
│   │       └── TestingUtils.cs
│   ├── Orleans.Transactions/
│   │   ├── Abstractions/
│   │   │   ├── Extensions/
│   │   │   │   └── TransactionalStateExtensions.cs
│   │   │   ├── INamedTransactionalStateStorageFactory.cs
│   │   │   ├── ITransactionAgentStatistics.cs
│   │   │   ├── ITransactionCommitter.cs
│   │   │   ├── ITransactionCommitterConfiguration.cs
│   │   │   ├── ITransactionCommitterFactory.cs
│   │   │   ├── ITransactionDataCopier.cs
│   │   │   ├── ITransactionManager.cs
│   │   │   ├── ITransactionManagerExtension.cs
│   │   │   ├── ITransactionalResource.cs
│   │   │   ├── ITransactionalResourceExtension.cs
│   │   │   ├── ITransactionalState.cs
│   │   │   ├── ITransactionalStateConfiguration.cs
│   │   │   ├── ITransactionalStateFactory.cs
│   │   │   ├── ITransactionalStateStorage.cs
│   │   │   ├── ITransactionalStateStorageFactory.cs
│   │   │   ├── TransactionCommitterAttribute.cs
│   │   │   └── TransactionalStateAttribute.cs
│   │   ├── DisabledTransactionAgent.cs
│   │   ├── DistributedTM/
│   │   │   ├── ContextResourceFactoryExtensions.cs
│   │   │   ├── ParticipantId.cs
│   │   │   ├── TransactionAgent.cs
│   │   │   ├── TransactionAgentStatistics.cs
│   │   │   ├── TransactionClient.cs
│   │   │   ├── TransactionInfo.cs
│   │   │   ├── TransactionManagerExtension.cs
│   │   │   ├── TransactionOverloadDetector.cs
│   │   │   ├── TransactionRecord.cs
│   │   │   └── TransactionalResourceExtension.cs
│   │   ├── ErrorCodes.cs
│   │   ├── Hosting/
│   │   │   ├── ClientBuilderExtensions.cs
│   │   │   ├── DefaultTransactionDataCopier.cs
│   │   │   ├── SiloBuilderExtensions.cs
│   │   │   ├── TransactionCommitterAttributeMapper.cs
│   │   │   ├── TransactionalStateAttributeMapper.cs
│   │   │   └── TransactionsServiceCollectionExtensions.cs
│   │   ├── ITransactionAgent.cs
│   │   ├── ITransactionClient.cs
│   │   ├── Orleans.Transactions.csproj
│   │   ├── OrleansTransactionException.cs
│   │   ├── State/
│   │   │   ├── ActivationLifetime.cs
│   │   │   ├── ConfirmationWorker.cs
│   │   │   ├── IActivationLifetime.cs
│   │   │   ├── NamedTransactionalStateStorageFactory.cs
│   │   │   ├── ReaderWriterLock.cs
│   │   │   ├── StorageBatch.cs
│   │   │   ├── TransactionManager.cs
│   │   │   ├── TransactionQueue.cs
│   │   │   ├── TransactionalResource.cs
│   │   │   ├── TransactionalState.cs
│   │   │   ├── TransactionalStateFactory.cs
│   │   │   ├── TransactionalStateOptions.cs
│   │   │   └── TransactionalStateStorageProviderWrapper.cs
│   │   ├── TOC/
│   │   │   ├── TocTransactionQueue.cs
│   │   │   ├── TransactionCommitter.cs
│   │   │   └── TransactionCommitterFactory.cs
│   │   ├── TransactionAttribute.cs
│   │   ├── TransactionContext.cs
│   │   ├── TransactionalStatus.cs
│   │   └── Utilities/
│   │       ├── CausalClock.cs
│   │       ├── Clock.cs
│   │       ├── CommitQueue.cs
│   │       ├── IClock.cs
│   │       └── PeriodicAction.cs
│   ├── Orleans.Transactions.TestKit.Base/
│   │   ├── Consistency/
│   │   │   ├── ConsistencyTestGrain.cs
│   │   │   ├── ConsistencyTestHarness.cs
│   │   │   ├── ConsistencyTestOptions.cs
│   │   │   ├── IConsistencyTestGrain.cs
│   │   │   └── Observation.cs
│   │   ├── FaultInjection/
│   │   │   ├── ControlledInjection/
│   │   │   │   ├── FaultInjectionAzureTableTransactionStateStorage.cs
│   │   │   │   ├── FaultInjectionTransactionCoordinatorGrain.cs
│   │   │   │   ├── FaultInjectionTransactionReource.cs
│   │   │   │   ├── FaultInjectionTransactionState.cs
│   │   │   │   ├── FaultInjectionTransactionStateAttribute.cs
│   │   │   │   ├── HostingExtensions.cs
│   │   │   │   ├── IControlledFaultInjector.cs
│   │   │   │   ├── SimpleAzureStorageExceptionInjector.cs
│   │   │   │   ├── SingleStateDeactivatingTransactionalGrain.cs
│   │   │   │   └── TransactionFaultInjectionServiceCollectionExtensions.cs
│   │   │   ├── ITransactionFaultInjector.cs
│   │   │   └── RandomInjection/
│   │   │       └── RandomErrorInjector.cs
│   │   ├── Grains/
│   │   │   ├── ITransactionAttributionGrain.cs
│   │   │   ├── ITransactionCommitterTestGrain.cs
│   │   │   ├── ITransactionCoordinatorGrain.cs
│   │   │   ├── ITransactionTestGrain.cs
│   │   │   ├── ITransactionalBitArrayGrain.cs
│   │   │   ├── MultiStateTransactionalBitArrayGrain.cs
│   │   │   ├── MultiStateTransactionalGrain.cs
│   │   │   ├── RemoteCommitService.cs
│   │   │   ├── TransactionAttributionGrain.cs
│   │   │   ├── TransactionCommitterTestGrain.cs
│   │   │   └── TransactionCoordinatorGrain.cs
│   │   ├── ITestState.cs
│   │   ├── Orleans.Transactions.TestKit.Base.csproj
│   │   ├── TestRunners/
│   │   │   ├── ConsistencyTransactionTestRunner.cs
│   │   │   ├── ControlledFaultInjectionTransactionTestRunner.cs
│   │   │   ├── DisabledTransactionsTestRunner.cs
│   │   │   ├── GoldenPathTransactionTestRunner.cs
│   │   │   ├── GrainFaultTransactionTestRunner.cs
│   │   │   ├── ScopedTransactionsTestRunner.cs
│   │   │   ├── SkewedClock.cs
│   │   │   ├── SkewedClockConfigurator.cs
│   │   │   ├── TOCGoldenPathTestRunner.cs
│   │   │   ├── TocFaultTransactionTestRunner.cs
│   │   │   ├── TransactionConcurrencyTestRunner.cs
│   │   │   ├── TransactionRecoveryTestsRunner.cs
│   │   │   └── TransactionalStateStorageTestRunner.cs
│   │   ├── TransactionTestConstants.cs
│   │   └── TransactionTestRunnerBase.cs
│   ├── Orleans.Transactions.TestKit.xUnit/
│   │   ├── ConsistencyTransactionTestRunner.cs
│   │   ├── ControlledFaultInjectionTransactionTestRunner.cs
│   │   ├── DisabledTransactionsTestRunner.cs
│   │   ├── GoldenPathTransactionTestRunner.cs
│   │   ├── GrainFaultTransactionTestRunner.cs
│   │   ├── Orleans.Transactions.TestKit.xUnit.csproj
│   │   ├── ScopedTransactionsTestRunnerxUnit.cs
│   │   ├── TOCGoldenPathTestRunner.cs
│   │   ├── TocFaultTransactionTestRunner.cs
│   │   ├── TransactionConcurrencyTestRunner.cs
│   │   ├── TransactionRecoveryTestsRunner.cs
│   │   └── TransactionalStateStorageTestRunner.cs
│   ├── Redis/
│   │   ├── Orleans.Clustering.Redis/
│   │   │   ├── Hosting/
│   │   │   │   ├── HostingExtensions.ICientBuilder.cs
│   │   │   │   ├── HostingExtensions.ISiloBuilder.cs
│   │   │   │   └── RedisClusteringProviderBuilder.cs
│   │   │   ├── Orleans.Clustering.Redis.csproj
│   │   │   ├── Providers/
│   │   │   │   ├── RedisClusteringOptions.cs
│   │   │   │   └── RedisGatewayListProvider.cs
│   │   │   ├── README.md
│   │   │   └── Storage/
│   │   │       ├── JsonSettings.cs
│   │   │       ├── RedisClusteringException.cs
│   │   │       └── RedisMembershipTable.cs
│   │   ├── Orleans.GrainDirectory.Redis/
│   │   │   ├── Hosting/
│   │   │   │   ├── RedisGrainDirectoryExtensions.cs
│   │   │   │   └── RedisGrainDirectoryProviderBuilder.cs
│   │   │   ├── Options/
│   │   │   │   └── RedisGrainDirectoryOptions.cs
│   │   │   ├── Orleans.GrainDirectory.Redis.csproj
│   │   │   ├── README.md
│   │   │   └── RedisGrainDirectory.cs
│   │   ├── Orleans.Persistence.Redis/
│   │   │   ├── Hosting/
│   │   │   │   ├── RedisGrainStorageProviderBuilder.cs
│   │   │   │   ├── RedisGrainStorageServiceCollectionExtensions.cs
│   │   │   │   └── RedisSiloBuilderExtensions.cs
│   │   │   ├── Orleans.Persistence.Redis.csproj
│   │   │   ├── Providers/
│   │   │   │   ├── RedisStorageOptions.cs
│   │   │   │   └── RedisStorageOptionsValidator.cs
│   │   │   ├── README.md
│   │   │   └── Storage/
│   │   │       ├── RedisGrainStorage.cs
│   │   │       ├── RedisGrainStorageFactory.cs
│   │   │       └── RedisStorageException.cs
│   │   └── Orleans.Reminders.Redis/
│   │       ├── Hosting/
│   │       │   ├── RedisRemindersProviderBuilder.cs
│   │       │   └── SiloBuilderReminderExtensions.cs
│   │       ├── Orleans.Reminders.Redis.csproj
│   │       ├── Providers/
│   │       │   └── RedisReminderTableOptions.cs
│   │       ├── README.md
│   │       └── Storage/
│   │           ├── RedisReminderTable.cs
│   │           └── RedisRemindersException.cs
│   ├── Serializers/
│   │   └── Orleans.Serialization.Protobuf/
│   │       ├── ByteStringCodec.cs
│   │       ├── ByteStringCopier.cs
│   │       ├── MapFieldCodec.cs
│   │       ├── MapFieldCopier.cs
│   │       ├── Orleans.Serialization.Protobuf.csproj
│   │       ├── ProtobufCodec.cs
│   │       ├── README.md
│   │       ├── RepeatedFieldCodec.cs
│   │       ├── RepeatedFieldCopier.cs
│   │       └── SerializationHostingExtensions.cs
│   └── api/
│       ├── AWS/
│       │   ├── Orleans.Clustering.DynamoDB/
│       │   │   └── Orleans.Clustering.DynamoDB.cs
│       │   ├── Orleans.Persistence.DynamoDB/
│       │   │   └── Orleans.Persistence.DynamoDB.cs
│       │   ├── Orleans.Reminders.DynamoDB/
│       │   │   └── Orleans.Reminders.DynamoDB.cs
│       │   └── Orleans.Streaming.SQS/
│       │       └── Orleans.Streaming.SQS.cs
│       ├── AdoNet/
│       │   ├── Orleans.Clustering.AdoNet/
│       │   │   └── Orleans.Clustering.AdoNet.cs
│       │   ├── Orleans.GrainDirectory.AdoNet/
│       │   │   └── Orleans.GrainDirectory.AdoNet.cs
│       │   ├── Orleans.Persistence.AdoNet/
│       │   │   └── Orleans.Persistence.AdoNet.cs
│       │   ├── Orleans.Reminders.AdoNet/
│       │   │   └── Orleans.Reminders.AdoNet.cs
│       │   └── Orleans.Streaming.AdoNet/
│       │       └── Orleans.Streaming.AdoNet.cs
│       ├── Azure/
│       │   ├── Orleans.Clustering.AzureStorage/
│       │   │   └── Orleans.Clustering.AzureStorage.cs
│       │   ├── Orleans.Clustering.Cosmos/
│       │   │   └── Orleans.Clustering.Cosmos.cs
│       │   ├── Orleans.GrainDirectory.AzureStorage/
│       │   │   └── Orleans.GrainDirectory.AzureStorage.cs
│       │   ├── Orleans.Journaling.AzureStorage/
│       │   │   └── Orleans.Journaling.AzureStorage.cs
│       │   ├── Orleans.Persistence.AzureStorage/
│       │   │   └── Orleans.Persistence.AzureStorage.cs
│       │   ├── Orleans.Persistence.Cosmos/
│       │   │   └── Orleans.Persistence.Cosmos.cs
│       │   ├── Orleans.Reminders.AzureStorage/
│       │   │   └── Orleans.Reminders.AzureStorage.cs
│       │   ├── Orleans.Reminders.Cosmos/
│       │   │   └── Orleans.Reminders.Cosmos.cs
│       │   ├── Orleans.Streaming.AzureStorage/
│       │   │   └── Orleans.Streaming.AzureStorage.cs
│       │   ├── Orleans.Streaming.EventHubs/
│       │   │   └── Orleans.Streaming.EventHubs.cs
│       │   └── Orleans.Transactions.AzureStorage/
│       │       └── Orleans.Transactions.AzureStorage.cs
│       ├── Cassandra/
│       │   └── Orleans.Clustering.Cassandra/
│       │       └── Orleans.Clustering.Cassandra.cs
│       ├── Orleans.BroadcastChannel/
│       │   └── Orleans.BroadcastChannel.cs
│       ├── Orleans.Client/
│       │   └── Orleans.Client.cs
│       ├── Orleans.Clustering.Consul/
│       │   └── Orleans.Clustering.Consul.cs
│       ├── Orleans.Clustering.ZooKeeper/
│       │   └── Orleans.Clustering.ZooKeeper.cs
│       ├── Orleans.Connections.Security/
│       │   └── Orleans.Connections.Security.cs
│       ├── Orleans.Core/
│       │   └── Orleans.Core.cs
│       ├── Orleans.Core.Abstractions/
│       │   └── Orleans.Core.Abstractions.cs
│       ├── Orleans.EventSourcing/
│       │   └── Orleans.EventSourcing.cs
│       ├── Orleans.Hosting.Kubernetes/
│       │   └── Orleans.Hosting.Kubernetes.cs
│       ├── Orleans.Journaling/
│       │   └── Orleans.Journaling.cs
│       ├── Orleans.Persistence.Memory/
│       │   └── Orleans.Persistence.Memory.cs
│       ├── Orleans.Reminders/
│       │   └── Orleans.Reminders.cs
│       ├── Orleans.Reminders.Abstractions/
│       │   └── Orleans.Reminders.Abstractions.cs
│       ├── Orleans.Runtime/
│       │   └── Orleans.Runtime.cs
│       ├── Orleans.Sdk/
│       │   └── Orleans.Sdk.cs
│       ├── Orleans.Serialization/
│       │   └── Orleans.Serialization.cs
│       ├── Orleans.Serialization.Abstractions/
│       │   └── Orleans.Serialization.Abstractions.cs
│       ├── Orleans.Serialization.FSharp/
│       │   └── Orleans.Serialization.FSharp.cs
│       ├── Orleans.Serialization.MemoryPack/
│       │   └── Orleans.Serialization.MemoryPack.cs
│       ├── Orleans.Serialization.MessagePack/
│       │   └── Orleans.Serialization.MessagePack.cs
│       ├── Orleans.Serialization.NewtonsoftJson/
│       │   └── Orleans.Serialization.NewtonsoftJson.cs
│       ├── Orleans.Serialization.SystemTextJson/
│       │   └── Orleans.Serialization.SystemTextJson.cs
│       ├── Orleans.Serialization.TestKit/
│       │   └── Orleans.Serialization.TestKit.cs
│       ├── Orleans.Server/
│       │   └── Orleans.Server.cs
│       ├── Orleans.Streaming/
│       │   └── Orleans.Streaming.cs
│       ├── Orleans.Streaming.Abstractions/
│       │   └── Orleans.Streaming.Abstractions.cs
│       ├── Orleans.TestingHost/
│       │   └── Orleans.TestingHost.cs
│       ├── Orleans.Transactions/
│       │   └── Orleans.Transactions.cs
│       ├── Orleans.Transactions.TestKit.Base/
│       │   └── Orleans.Transactions.TestKit.Base.cs
│       ├── Orleans.Transactions.TestKit.xUnit/
│       │   └── Orleans.Transactions.TestKit.xUnit.cs
│       ├── README.md
│       ├── Redis/
│       │   ├── Orleans.Clustering.Redis/
│       │   │   └── Orleans.Clustering.Redis.cs
│       │   ├── Orleans.GrainDirectory.Redis/
│       │   │   └── Orleans.GrainDirectory.Redis.cs
│       │   ├── Orleans.Persistence.Redis/
│       │   │   └── Orleans.Persistence.Redis.cs
│       │   └── Orleans.Reminders.Redis/
│       │       └── Orleans.Reminders.Redis.cs
│       └── Serializers/
│           └── Orleans.Serialization.Protobuf/
│               └── Orleans.Serialization.Protobuf.cs
└── test/
    ├── Benchmarks/
    │   ├── App.config
    │   ├── Benchmarks.csproj
    │   ├── Dashboard/
    │   │   ├── DashboardGrainBenchmark.cs
    │   │   ├── Helper.cs
    │   │   ├── ManualTests.cs
    │   │   └── TestTraces.cs
    │   ├── GrainStorage/
    │   │   └── GrainStorageBenchmark.cs
    │   ├── MapReduce/
    │   │   ├── MapReduceBenchmark.cs
    │   │   └── MapReduceBenchmarkConfig.cs
    │   ├── Ping/
    │   │   ├── ConcurrentLoadGenerator.cs
    │   │   ├── FanoutBenchmark.cs
    │   │   ├── PingBenchmark.cs
    │   │   └── StatelessWorkerBenchmark.cs
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── Serialization/
    │   │   ├── Comparison/
    │   │   │   ├── ArrayDeserializeBenchmark.cs
    │   │   │   ├── ArraySerializeBenchmark.cs
    │   │   │   ├── ClassDeserializeBenchmark.cs
    │   │   │   ├── ClassSerializeBenchmark.cs
    │   │   │   ├── CopierBenchmark.cs
    │   │   │   ├── StructDeserializeBenchmark.cs
    │   │   │   └── StructSerializeBenchmark.cs
    │   │   ├── ComplexTypeBenchmarks.cs
    │   │   ├── FieldHeaderBenchmarks.cs
    │   │   ├── MegaGraphBenchmark.cs
    │   │   ├── Models/
    │   │   │   ├── ComplexClass.cs
    │   │   │   ├── IntClass.cs
    │   │   │   ├── IntStruct.cs
    │   │   │   ├── ProtoIntClass.cs
    │   │   │   ├── ProtoIntClass.proto
    │   │   │   ├── SimpleClass.cs
    │   │   │   ├── SimpleStruct.cs
    │   │   │   ├── Vector3.cs
    │   │   │   └── VirtualIntsClass.cs
    │   │   └── Utilities/
    │   │       ├── BenchmarkConfig.cs
    │   │       ├── ClassSingleSegmentBuffer.cs
    │   │       ├── MethodResultColumn.cs
    │   │       ├── PayloadSizeColumnAttribute.cs
    │   │       └── SingleSegmentBuffer.cs
    │   ├── TopK/
    │   │   ├── BloomFilterBenchmark.cs
    │   │   └── TopKBenchmark.cs
    │   ├── Transactions/
    │   │   └── TransactionBenchmark.cs
    │   └── run_test.cmd
    ├── Benchmarks.AdoNet/
    │   ├── Benchmarks.AdoNet.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── Usings.cs
    │   └── Streaming/
    │       ├── MessageDequeueingBenchmark.cs
    │       └── MessageQueueingBenchmark.cs
    ├── Directory.Build.props
    ├── Directory.Build.targets
    ├── DistributedTests/
    │   ├── DistributedTests.Client/
    │   │   ├── Commands/
    │   │   │   ├── ChaosAgentCommand.cs
    │   │   │   ├── CounterCaptureCommand.cs
    │   │   │   └── ScenarioCommand.cs
    │   │   ├── DistributedTests.Client.csproj
    │   │   ├── LoadGeneratorScenario/
    │   │   │   ├── ConcurrentLoadGenerator.cs
    │   │   │   ├── LoadGeneratorScenarioRunner.cs
    │   │   │   └── LoadGeneratorScenarios.cs
    │   │   └── Program.cs
    │   ├── DistributedTests.Common/
    │   │   ├── DistributedTests.Common.csproj
    │   │   ├── GrainInterfaces/
    │   │   │   ├── IPingGrain.cs
    │   │   │   ├── IStreamingGrains.cs
    │   │   │   └── ITreeGrain.cs
    │   │   ├── MessageChannel/
    │   │   │   ├── Channels.cs
    │   │   │   └── Messages.cs
    │   │   ├── OptionHelper.cs
    │   │   └── TokenCredentialHelper.cs
    │   ├── DistributedTests.Grains/
    │   │   ├── CounterReportingGrain.cs
    │   │   ├── DistributedTests.Grains.csproj
    │   │   ├── ImplicitSubscriberGrain.cs
    │   │   ├── PingGrain.cs
    │   │   └── TreeGrain.cs
    │   ├── DistributedTests.Server/
    │   │   ├── Configurator/
    │   │   │   ├── EventGeneratorStreamingSilo.cs
    │   │   │   ├── ISiloConfigurator.cs
    │   │   │   └── SimpleSilo.cs
    │   │   ├── DistributedTests.Server.csproj
    │   │   ├── Program.cs
    │   │   ├── ServerCommand.cs
    │   │   └── ServerRunner.cs
    │   ├── README.md
    │   └── secrets.json
    ├── Extensions/
    │   ├── Orleans.AWS.Tests/
    │   │   ├── App.config
    │   │   ├── CollectionFixtures.cs
    │   │   ├── LivenessTests.cs
    │   │   ├── MembershipTests/
    │   │   │   ├── DynamoDBMembershipTableTest.cs
    │   │   │   └── SiloInstanceRecordTests.cs
    │   │   ├── Orleans.AWS.Tests.csproj
    │   │   ├── Properties/
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── Reminder/
    │   │   │   └── DynamoDBRemindersTableTests.cs
    │   │   ├── StorageTests/
    │   │   │   ├── AWSTestConstants.cs
    │   │   │   ├── DynamoDBStorageProviderTests.cs
    │   │   │   ├── DynamoDBStorageStressTests.cs
    │   │   │   ├── DynamoDBStorageTestFixture.cs
    │   │   │   ├── DynamoDBStorageTests.cs
    │   │   │   ├── PersistenceGrainTests_AWSDynamoDBStore.cs
    │   │   │   └── UnitTestDynamoDBStorage.cs
    │   │   └── Streaming/
    │   │       ├── SQSAdapterTests.cs
    │   │       ├── SQSClientStreamTests.cs
    │   │       ├── SQSStreamTests.cs
    │   │       └── SQSSubscriptionMultiplicityTests.cs
    │   ├── Orleans.AdoNet.Tests/
    │   │   ├── App.config
    │   │   ├── CollectionFixtures.cs
    │   │   ├── Fakes/
    │   │   │   └── FakeHostApplicationLifetime.cs
    │   │   ├── GrainDirectory/
    │   │   │   ├── AdoNetGrainDirectoryClusterTests.cs
    │   │   │   ├── AdoNetGrainDirectoryTests.cs
    │   │   │   └── RelationalOrleansQueriesTests.cs
    │   │   ├── LivenessTests.cs
    │   │   ├── MySqlMembershipTableTests.cs
    │   │   ├── Orleans.AdoNet.Tests.csproj
    │   │   ├── PackageReferences.cs
    │   │   ├── Persistence/
    │   │   │   ├── PersistenceGrainTests_MySql.cs
    │   │   │   ├── PersistenceGrainTests_MySql_DeleteStateOnClear.cs
    │   │   │   ├── PersistenceGrainTests_Postgres.cs
    │   │   │   ├── PersistenceGrainTests_Postgres_DeleteStateOnClear.cs
    │   │   │   ├── PersistenceGrainTests_SqlServer.cs
    │   │   │   ├── PersistenceGrainTests_SqlServer_DeleteStateOnClear.cs
    │   │   │   ├── SqlitePersistenceGrainStorageFixture.cs
    │   │   │   └── SqlitePersistenceGrainStorageTests.cs
    │   │   ├── PostgreSqlMembershipTableTests.cs
    │   │   ├── Properties/
    │   │   │   ├── AssemblyInfo.cs
    │   │   │   ├── GlobalSuppressions.cs
    │   │   │   ├── IsExternalInit.cs
    │   │   │   └── Usings.cs
    │   │   ├── RelationalUtilities/
    │   │   │   ├── MySqlStorageForTesting.cs
    │   │   │   ├── PostgreSqlStorageForTesting.cs
    │   │   │   ├── RelationalStorageForTesting.cs
    │   │   │   └── SqlServerStorageForTesting.cs
    │   │   ├── Reminders/
    │   │   │   ├── MySqlRemindersTableTests.cs
    │   │   │   ├── PostgreSqlRemindersTableTests.cs
    │   │   │   ├── ReminderTests_AdoNet_SqlServer.cs
    │   │   │   └── SqlServerRemindersTableTests.cs
    │   │   ├── SqlServerMembershipTableTests.cs
    │   │   ├── StorageTests/
    │   │   │   ├── MySqlRelationalStoreTests.cs
    │   │   │   ├── PostgreSqlRelationalStoreTests.cs
    │   │   │   ├── Relational/
    │   │   │   │   ├── AdotNetProviderFunctionalityTests.cs
    │   │   │   │   ├── CommonFixture.cs
    │   │   │   │   ├── ConstantHasher.cs
    │   │   │   │   ├── MySqlStorageDeleteOnClearTests.cs
    │   │   │   │   ├── MySqlStorageTests.cs
    │   │   │   │   ├── PostgreSqlStorageDeleteOnClearTests.cs
    │   │   │   │   ├── PostgreSqlStorageTests.cs
    │   │   │   │   ├── RelationalStorageTests.cs
    │   │   │   │   ├── SqlServerStorageDeleteOnClearTests.cs
    │   │   │   │   ├── SqlServerStorageTests.cs
    │   │   │   │   └── TestEnvironmentInvariant.cs
    │   │   │   ├── RelationalStoreTests.cs
    │   │   │   └── SqlServerRelationalStoreTests.cs
    │   │   └── Streaming/
    │   │       ├── AdoNetBatchContainerTests.cs
    │   │       ├── AdoNetClientStreamTests.cs
    │   │       ├── AdoNetQueueAdapterFactoryTests.cs
    │   │       ├── AdoNetQueueAdapterReceiverTests.cs
    │   │       ├── AdoNetQueueAdapterTests.cs
    │   │       ├── AdoNetStreamFailureHandlerTests.cs
    │   │       ├── AdoNetStreamFilteringTests.cs
    │   │       ├── AdoNetStreamingTests.cs
    │   │       ├── AdoNetStreamsBatchingTests.cs
    │   │       ├── AdoNetSubscriptionMultiplicityTests.cs
    │   │       ├── AdoNetSubscriptionObserverWithImplicitSubscribingTests.cs
    │   │       └── RelationalOrleansQueriesTests.cs
    │   ├── Orleans.Azure.Tests/
    │   │   ├── App.config
    │   │   ├── AzureGrainDirectoryTests.cs
    │   │   ├── AzureLivenessTests.cs
    │   │   ├── AzureMembershipTableTests.cs
    │   │   ├── AzureQueueDataManagerTests.cs
    │   │   ├── AzureRemindersTableTests.cs
    │   │   ├── AzureStorageBasicTests.cs
    │   │   ├── AzureStorageOperationOptionsExtensions.cs
    │   │   ├── AzureTableDataManagerStressTests.cs
    │   │   ├── AzureTableDataManagerTests.cs
    │   │   ├── AzureTableErrorCodeTests.cs
    │   │   ├── CollectionFixtures.cs
    │   │   ├── DurableJobs/
    │   │   │   ├── AzureStorageBlobDurableJobsTests.cs
    │   │   │   ├── AzureStorageJobShardBatchingTests.cs
    │   │   │   ├── AzureStorageJobShardManagerTestFixture.cs
    │   │   │   ├── AzureStorageJobShardManagerTests.cs
    │   │   │   └── NetstringJsonSerializerTests.cs
    │   │   ├── GenericGrainsInAzureStorageTests.cs
    │   │   ├── GrainDirectory/
    │   │   │   └── AzureMultipleGrainDirectoriesTests.cs
    │   │   ├── Lease/
    │   │   │   ├── AzureBlobLeaseProviderTests.cs
    │   │   │   └── LeaseBasedQueueBalancerTests.cs
    │   │   ├── Orleans.Azure.Tests.csproj
    │   │   ├── Persistence/
    │   │   │   ├── PersistenceGrainTests_AzureBlobStore.cs
    │   │   │   ├── PersistenceGrainTests_AzureBlobStore_Json.cs
    │   │   │   ├── PersistenceGrainTests_AzureStore.cs
    │   │   │   ├── PersistenceGrainTests_AzureTableGrainStorage.cs
    │   │   │   ├── PersistenceProviderTests.cs
    │   │   │   ├── PersistenceStateTests_AzureBlobStore.cs
    │   │   │   └── PersistenceStateTests_AzureTableGrainStorage.cs
    │   │   ├── Program.cs
    │   │   ├── Properties/
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── Reminder/
    │   │   │   ├── ReminderTests_AzureTable.cs
    │   │   │   └── ReminderTests_Azure_Standalone.cs
    │   │   ├── SiloInstanceTableManagerTests.cs
    │   │   ├── StorageEmulatorUtilities.cs
    │   │   ├── Streaming/
    │   │   │   ├── AQClientStreamTests.cs
    │   │   │   ├── AQProgrammaticSubscribeTest.cs
    │   │   │   ├── AQStreamFilteringTests.cs
    │   │   │   ├── AQStreamingTests.cs
    │   │   │   ├── AQStreamsBatchingTests.cs
    │   │   │   ├── AQSubscriptionMultiplicityTests.cs
    │   │   │   ├── AQSubscriptionObserverWithImplicitSubscribingTests.cs
    │   │   │   ├── AzureQueueAdapterTests.cs
    │   │   │   ├── AzureQueueStreamProviderBuilderTests.cs
    │   │   │   ├── DelayedQueueRebalancingTests.cs
    │   │   │   ├── HaloStreamSubscribeTests.cs
    │   │   │   ├── PullingAgentManagementTests.cs
    │   │   │   ├── SampleAzureQueueStreamingTests.cs
    │   │   │   ├── StreamReliabilityTests.cs
    │   │   │   └── TestAzureTableStorageStreamFailureHandler.cs
    │   │   ├── UnitTestAzureTableDataManager.cs
    │   │   └── Utilities/
    │   │       └── AzureQueueUtilities.cs
    │   ├── Orleans.Clustering.Cassandra.Tests/
    │   │   ├── Clustering/
    │   │   │   ├── CassandraClusteringTableTests.cs
    │   │   │   ├── CassandraContainer.cs
    │   │   │   └── SiloAddressUtils.cs
    │   │   ├── Orleans.Clustering.Cassandra.Tests.csproj
    │   │   └── Utility/
    │   │       └── TestExtensions.cs
    │   ├── Orleans.Clustering.Consul.Tests/
    │   │   ├── CollectionFixtures.cs
    │   │   ├── ConsulClusteringOptionsTests.cs
    │   │   ├── ConsulMembershipTableTest.cs
    │   │   ├── ConsulTestUtils.cs
    │   │   ├── LivenessTests.cs
    │   │   ├── Orleans.Clustering.Consul.Tests.csproj
    │   │   └── Properties/
    │   │       └── AssemblyInfo.cs
    │   ├── Orleans.Clustering.ZooKeeper.Tests/
    │   │   ├── App.config
    │   │   ├── CollectionFixtures.cs
    │   │   ├── LivenessTests.cs
    │   │   ├── Orleans.Clustering.ZooKeeper.Tests.csproj
    │   │   ├── Properties/
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── ZookeeperMembershipTableTests.cs
    │   │   └── ZookeeperTestUtils.cs
    │   ├── Orleans.Cosmos.Tests/
    │   │   ├── CollectionFixtures.cs
    │   │   ├── CosmosMembershipTableTests.cs
    │   │   ├── CosmosOptionsExtensions.cs
    │   │   ├── CosmosTestUtils.cs
    │   │   ├── Orleans.Cosmos.Tests.csproj
    │   │   ├── PersistenceGrainTests_CosmosGrainStorage.cs
    │   │   ├── PersistenceProviderTests_Cosmos.cs
    │   │   ├── ReminderTests_Cosmos.cs
    │   │   ├── ReminderTests_Cosmos_Standalone.cs
    │   │   └── Usings.cs
    │   ├── Orleans.Redis.Tests/
    │   │   ├── Clustering/
    │   │   │   └── RedisMembershipTableTests.cs
    │   │   ├── CollectionFixtures.cs
    │   │   ├── GrainDirectory/
    │   │   │   ├── RedisGrainDirectoryTests.cs
    │   │   │   └── RedisMultipleGrainDirectoriesTests.cs
    │   │   ├── Orleans.Redis.Tests.csproj
    │   │   ├── Persistence/
    │   │   │   ├── GrainState.cs
    │   │   │   ├── RedisPersistenceGrainTests.cs
    │   │   │   ├── RedisPersistenceSetupTests.cs
    │   │   │   ├── RedisStorageTests.cs
    │   │   │   ├── RedisStorageTests_DeleteStateOnClear.cs
    │   │   │   └── RedisStorageTests_OrleansSerializer.cs
    │   │   ├── Reminders/
    │   │   │   └── RedisReminderTableTests.cs
    │   │   └── Utility/
    │   │       ├── CommonFixture.cs
    │   │       └── TestExtensions.cs
    │   ├── Orleans.Streaming.EventHubs.Tests/
    │   │   ├── App.config
    │   │   ├── CollectionFixtures.cs
    │   │   ├── EventHubConfigurationExtensions.cs
    │   │   ├── EvictionStrategyTests/
    │   │   │   ├── EHPurgeLogicTests.cs
    │   │   │   └── TestMocks.cs
    │   │   ├── Orleans.Streaming.EventHubs.Tests.csproj
    │   │   ├── PluggableQueueBalancerTests.cs
    │   │   ├── Properties/
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── SlowConsumingTests/
    │   │   │   └── EHSlowConsumingTests.cs
    │   │   ├── StatisticMonitorTests/
    │   │   │   ├── BlockPoolMonitorForTesting.cs
    │   │   │   ├── CacheMonitorForTesting.cs
    │   │   │   ├── EHStatisticMonitorTests.cs
    │   │   │   └── EventHubReceiverMonitorForTesting.cs
    │   │   ├── Streaming/
    │   │   │   ├── EHBatchedSubscriptionMultiplicityTests.cs
    │   │   │   ├── EHClientStreamTests.cs
    │   │   │   ├── EHImplicitSubscriptionStreamRecoveryTests.cs
    │   │   │   ├── EHProgrammaticSubscribeTests.cs
    │   │   │   ├── EHStreamBatchingTests.cs
    │   │   │   ├── EHStreamCacheMissTests.cs
    │   │   │   ├── EHStreamPerPartitionTests.cs
    │   │   │   ├── EHStreamProviderCheckpointTests.cs
    │   │   │   ├── EHStreamingResumeTests.cs
    │   │   │   ├── EHSubscriptionMultiplicityTests.cs
    │   │   │   ├── EHSubscriptionObserverWithImplicitSubscribingTests.cs
    │   │   │   └── TimePurgePredicateTests.cs
    │   │   └── TestStreamProviders/
    │   │       ├── EHStreamProviderForMonitorTests.cs
    │   │       ├── EHStreamProviderWithCreatedCacheList.cs
    │   │       ├── StreamPerPartitionEventHubStreamProvider.cs
    │   │       ├── TestAzureTableStorageStreamFailureHandler.cs
    │   │       └── TestEventHubStreamProvider.cs
    │   └── Orleans.Streaming.NATS.Tests/
    │       ├── NatsAdapterTests.cs
    │       ├── NatsClientStreamTests.cs
    │       ├── NatsStreamTests.cs
    │       ├── NatsSubscriptionMultiplicityTests.cs
    │       ├── NatsTestConstants.cs
    │       └── Orleans.Streaming.NATS.Tests.csproj
    ├── Grains/
    │   ├── BenchmarkGrainInterfaces/
    │   │   ├── BenchmarkGrainInterfaces.csproj
    │   │   ├── GrainStorage/
    │   │   │   └── IPersistentGrain.cs
    │   │   ├── MapReduce/
    │   │   │   ├── DataflowGrainsInterfaces.cs
    │   │   │   └── GrainDataflowMessageStatus.cs
    │   │   ├── Ping/
    │   │   │   ├── ILoadGrain.cs
    │   │   │   ├── IPingGrain.cs
    │   │   │   ├── ITreeGrain.cs
    │   │   │   └── MyType.cs
    │   │   └── Transaction/
    │   │       ├── ILoadGrain.cs
    │   │       ├── ITransactionGrain.cs
    │   │       └── ITransactionRootGrain.cs
    │   ├── BenchmarkGrains/
    │   │   ├── BenchmarkGrains.csproj
    │   │   ├── GrainStorage/
    │   │   │   └── PersistentGrain.cs
    │   │   ├── MapReduce/
    │   │   │   ├── BufferGrain.cs
    │   │   │   ├── DataflowGrain.cs
    │   │   │   ├── Processors.cs
    │   │   │   ├── TargetGrain.cs
    │   │   │   └── TransformGrain.cs
    │   │   ├── Ping/
    │   │   │   ├── LoadGrain.cs
    │   │   │   ├── PingGrain.cs
    │   │   │   └── TreeGrain.cs
    │   │   └── Transaction/
    │   │       ├── LoadGrain.cs
    │   │       ├── TransactionGrain.cs
    │   │       └── TransactionRootGrain.cs
    │   ├── TestFSharp/
    │   │   ├── Grains.fs
    │   │   ├── TestFSharp.fsproj
    │   │   └── Types.fs
    │   ├── TestFSharpGrainInterfaces/
    │   │   ├── FSharpInterfaces/
    │   │   │   ├── IFSharpBaseInterface.fs
    │   │   │   ├── IFSharpParameters.fs
    │   │   │   └── TestFSharpInterfaces.fsproj
    │   │   ├── IFSharpParametersGrain.cs
    │   │   ├── IGeneratorTestDerivedFromFSharpInterfaceInExternalAssemblyGrain.cs
    │   │   └── TestFSharpGrainInterfaces.csproj
    │   ├── TestGrainInterfaces/
    │   │   ├── AdoNet/
    │   │   │   ├── ICustomerGrain.cs
    │   │   │   └── IDeviceGrain.cs
    │   │   ├── ClassNotReferencingOrleansTypeDto.cs
    │   │   ├── ClassReferencingOrleansTypeDto.cs
    │   │   ├── CodegenTestInterfaces.cs
    │   │   ├── CustomPlacement.cs
    │   │   ├── Directories/
    │   │   │   ├── ICommonDirectoryGrain.cs
    │   │   │   ├── ICustomDirectoryGrain.cs
    │   │   │   └── IDefaultDirectoryGrain.cs
    │   │   ├── EventSourcing/
    │   │   │   ├── IAccountGrain.cs
    │   │   │   ├── IChatGrain.cs
    │   │   │   ├── ICountersGrain.cs
    │   │   │   ├── IPersonGrain.cs
    │   │   │   ├── ISeatReservationGrain.cs
    │   │   │   └── XDocumentSurrogate.cs
    │   │   ├── GetGrainInterfaces.cs
    │   │   ├── GrainInterfaceHierarchyIGrains.cs
    │   │   ├── IActivateDeactivateTestGrain.cs
    │   │   ├── IActivateDeactivateWatcherGrain.cs
    │   │   ├── IActivationCancellationTestGrain.cs
    │   │   ├── IActivityGrain.cs
    │   │   ├── ICSharpBaseInterface.cs
    │   │   ├── ICancellationTestSystemTarget.cs
    │   │   ├── ICatalogTestGrain.cs
    │   │   ├── IChainedGrain.cs
    │   │   ├── ICircularStateTestGrain.cs
    │   │   ├── IClientAddressableTestConsumer.cs
    │   │   ├── IClusterTestGrains.cs
    │   │   ├── ICollectionTestGrain.cs
    │   │   ├── IConcurrentGrain.cs
    │   │   ├── IConsumerEventCountingGrain.cs
    │   │   ├── IDeadlockGrain.cs
    │   │   ├── IDurableJobGrain.cs
    │   │   ├── IEchoTaskGrain.cs
    │   │   ├── IErrorGrain.cs
    │   │   ├── IExceptionGrain.cs
    │   │   ├── IExtensionTestGrain.cs
    │   │   ├── IExternalTypeGrain.cs
    │   │   ├── IFaultableConsumerGrain.cs
    │   │   ├── IFilteredImplicitSubscriptionGrain.cs
    │   │   ├── IFilteredImplicitSubscriptionWithExtensionGrain.cs
    │   │   ├── IGeneratedEventCollectorGrain.cs
    │   │   ├── IGeneratedEventReporterGrain.cs
    │   │   ├── IGeneratorTestDerivedDerivedGrain.cs
    │   │   ├── IGeneratorTestDerivedFromCSharpInterfaceInExternalAssemblyGrain.cs
    │   │   ├── IGeneratorTestDerivedGrain1.cs
    │   │   ├── IGeneratorTestDerivedGrain2.cs
    │   │   ├── IGeneratorTestGrain.cs
    │   │   ├── IGenericInterfaces.cs
    │   │   ├── IGrainServiceTestGrain.cs
    │   │   ├── IImplicitSubscriptionCounterGrain.cs
    │   │   ├── IImplicitSubscriptionKeyTypeGrain.cs
    │   │   ├── IInitialStateGrain.cs
    │   │   ├── IKeyExtensionTestGrain.cs
    │   │   ├── ILivenessTestGrain.cs
    │   │   ├── ILogTestGrain.cs
    │   │   ├── ILongRunningObserver.cs
    │   │   ├── IMethodInterceptionGrain.cs
    │   │   ├── IMultifacetReader.cs
    │   │   ├── IMultifacetWriter.cs
    │   │   ├── IMultipleImplicitSubscriptionGrain.cs
    │   │   ├── IMultipleSubscriptionConsumerGrain.cs
    │   │   ├── INullStateGrain.cs
    │   │   ├── IObservableGrain.cs
    │   │   ├── IObserverGrain.cs
    │   │   ├── IPersistenceTestGrains.cs
    │   │   ├── IPlacementTestGrain.cs
    │   │   ├── IPolymorphicTestGrain.cs
    │   │   ├── IProducerEventCountingGrain.cs
    │   │   ├── IPromiseForwardGrain.cs
    │   │   ├── IProxyGrain.cs
    │   │   ├── IReentrancyCorrelationIdGrains.cs
    │   │   ├── IReentrancyGrain.cs
    │   │   ├── IReentrantStressTestGrain.cs
    │   │   ├── IReminderTestGrain.cs
    │   │   ├── IReminderTestGrain2.cs
    │   │   ├── IRequestContextTestGrain.cs
    │   │   ├── IRetryTestGrain.cs
    │   │   ├── ISampleStreamingGrain.cs
    │   │   ├── ISchedulerGrain.cs
    │   │   ├── ISiloRoleBasedPlacementGrain.cs
    │   │   ├── ISimpleDIGrain.cs
    │   │   ├── ISimpleGenericGrain.cs
    │   │   ├── ISimpleGrain.cs
    │   │   ├── ISimpleGrainWithAsyncMethods.cs
    │   │   ├── ISimpleObserverableGrain.cs
    │   │   ├── ISimplePersistentGrain.cs
    │   │   ├── IStatelessWorkerExceptionGrain.cs
    │   │   ├── IStatelessWorkerGrain.cs
    │   │   ├── IStatelessWorkerScalingGrain.cs
    │   │   ├── IStatelessWorkerStreamConsumerGrain.cs
    │   │   ├── IStatelessWorkerStreamProducerGrain.cs
    │   │   ├── IStatelessWorkerWithMayInterleaveGrain.cs
    │   │   ├── IStatsCollectorGrain.cs
    │   │   ├── IStreamBatchingTestConsumerGrain.cs
    │   │   ├── IStreamInterceptionGrain.cs
    │   │   ├── IStreamLifecycleTestGrains.cs
    │   │   ├── IStreamLifecycleTestInternalGrains.cs
    │   │   ├── IStreamReliabilityTestGrains.cs
    │   │   ├── IStreamingGrain.cs
    │   │   ├── IStreamingHistoryGrain.cs
    │   │   ├── IStreamingImmutabilityTestGrain.cs
    │   │   ├── IStreaming_ProducerGrain.cs
    │   │   ├── IStuckGrain.cs
    │   │   ├── ITestExtension.cs
    │   │   ├── ITestGrain.cs
    │   │   ├── ITimerGrain.cs
    │   │   ├── IValueTypeTestGrain.cs
    │   │   ├── IsExternalInit.cs
    │   │   ├── ProgramaticStreamSubscribe/
    │   │   │   └── IPassive_ConsumerGrain.cs
    │   │   ├── RecursiveType.cs
    │   │   ├── RedStreamNamespacePredicate.cs
    │   │   ├── SerializerExclusions.cs
    │   │   ├── SerializerTestTypes.cs
    │   │   ├── SlowConsumingGrains/
    │   │   │   └── ISlowConsumingGrain.cs
    │   │   ├── TestGrainInterfaces.csproj
    │   │   ├── TestTypeA.cs
    │   │   ├── UnitTestGrainInterfaces.cs
    │   │   └── VersionAwarePlacementDirector.cs
    │   ├── TestGrains/
    │   │   ├── ActivateDeactivateWatcherGrain.cs
    │   │   ├── ActivationCancellationTestGrains.cs
    │   │   ├── ActivityGrain.cs
    │   │   ├── AdoNet/
    │   │   │   ├── CustomerGrain.cs
    │   │   │   ├── DeviceGrain.cs
    │   │   │   ├── ICustomerState.cs
    │   │   │   └── IDeviceState.cs
    │   │   ├── AsyncSimpleGrain.cs
    │   │   ├── CatalogTestGrain.cs
    │   │   ├── ChainedGrain.cs
    │   │   ├── CircularStateTestGrain.cs
    │   │   ├── ConcreteGrainsWithGenericInterfaces.cs
    │   │   ├── ConcurrentGrain.cs
    │   │   ├── ConsumerEventCountingGrain.cs
    │   │   ├── CustomPlacementGrains.cs
    │   │   ├── DeadlockGrain.cs
    │   │   ├── DerivedServiceType.cs
    │   │   ├── Directories/
    │   │   │   ├── CustomDirectoryGrain.cs
    │   │   │   └── DefaultDirectoryGrain.cs
    │   │   ├── DurableJobGrain.cs
    │   │   ├── EventSourcing/
    │   │   │   ├── AccountGrain.cs
    │   │   │   ├── ChatEvents.cs
    │   │   │   ├── ChatFormat.cs
    │   │   │   ├── ChatGrain.cs
    │   │   │   ├── CountersGrain.cs
    │   │   │   ├── CountersGrainVariations.cs
    │   │   │   ├── PersonEvents.cs
    │   │   │   ├── PersonGrain.cs
    │   │   │   ├── PersonState.cs
    │   │   │   └── SeatReservationGrain.cs
    │   │   ├── ExceptionGrain.cs
    │   │   ├── ExternalTypeGrain.cs
    │   │   ├── FaultableConsumerGrain.cs
    │   │   ├── FilteredImplicitSubscriptionGrain.cs
    │   │   ├── FilteredImplicitSubscriptionWithExtensionGrain.cs
    │   │   ├── GeneratedEventCollectorGrain.cs
    │   │   ├── GeneratedEventReporterGrain.cs
    │   │   ├── GeneratedStreamTestConstants.cs
    │   │   ├── GeneratorTestDerivedDerivedGrain.cs
    │   │   ├── GeneratorTestDerivedFromCSharpInterfaceInExternalAssemblyGrain.cs
    │   │   ├── GeneratorTestDerivedFromFSharpInterfaceInExternalAssemblyGrain.cs
    │   │   ├── GeneratorTestDerivedGrain1.cs
    │   │   ├── GeneratorTestDerivedGrain2.cs
    │   │   ├── GeneratorTestGrain.cs
    │   │   ├── GenericGrains.cs
    │   │   ├── GetGrainGrains.cs
    │   │   ├── GrainInterfaceHierarchyGrains.cs
    │   │   ├── GrainService/
    │   │   │   ├── GrainServiceTestGrain.cs
    │   │   │   └── ITestGrainService.cs
    │   │   ├── ImplicitStreamTestConstants.cs
    │   │   ├── ImplicitSubscriptionCounterGrain.cs
    │   │   ├── ImplicitSubscriptionWithKeyTypeGrain.cs
    │   │   ├── ImplicitSubscription_NonTransientError_RecoverableStream_CollectorGrain.cs
    │   │   ├── ImplicitSubscription_RecoverableStream_CollectorGrain.cs
    │   │   ├── ImplicitSubscription_TransientError_RecoverableStream_CollectorGrain.cs
    │   │   ├── InitialStateGrain.cs
    │   │   ├── KeyExtensionTestGrain.cs
    │   │   ├── LivenessTestGrain.cs
    │   │   ├── LogTestGrain.cs
    │   │   ├── LogTestGrainVariations.cs
    │   │   ├── MessageSerializationGrain.cs
    │   │   ├── MethodInterceptionGrain.cs
    │   │   ├── MultipleConstructorsSimpleGrain.cs
    │   │   ├── MultipleGenericParameterInterfaceImpl.cs
    │   │   ├── MultipleImplicitSubscriptionGrain.cs
    │   │   ├── MultipleSubscriptionConsumerGrain.cs
    │   │   ├── NoOpTestGrain.cs
    │   │   ├── NullStateGrain.cs
    │   │   ├── ObserverGrain.cs
    │   │   ├── ObserverWithCancellationGrain.cs
    │   │   ├── PolymorphicTestGrain.cs
    │   │   ├── ProducerEventCountingGrain.cs
    │   │   ├── ProgrammaticSubscribe/
    │   │   │   ├── Passive_ConsumerGrain.cs
    │   │   │   ├── SubscribeGrain.cs
    │   │   │   └── TypedProducerGrain.cs
    │   │   ├── PromiseForwardGrain.cs
    │   │   ├── ProxyGrain.cs
    │   │   ├── ReentrancyCorrelationIdGrains.cs
    │   │   ├── ReentrantGrain.cs
    │   │   ├── ReminderTestGrain.cs
    │   │   ├── RequestContextTestGrain.cs
    │   │   ├── RetryTestGrain.cs
    │   │   ├── RoundtripSerializationGrain.cs
    │   │   ├── SampleStreamingGrain.cs
    │   │   ├── SchedulerGrain.cs
    │   │   ├── SerializationGenerationGrain.cs
    │   │   ├── ServiceType.cs
    │   │   ├── SiloRoleBasedPlacementGrain.cs
    │   │   ├── SimpleDIGrain.cs
    │   │   ├── SimpleGenericGrain.cs
    │   │   ├── SimpleGrain.cs
    │   │   ├── SimpleObserverableGrain.cs
    │   │   ├── SimplePersistentGrain.cs
    │   │   ├── SimpleStreams/
    │   │   │   └── SimpleSubscriberGrain.cs
    │   │   ├── SlowConsumingGrains/
    │   │   │   └── SlowConsumingGrain.cs
    │   │   ├── SpecializedSimpleGenericGrain.cs
    │   │   ├── StatelessWorkerExceptionGrain.cs
    │   │   ├── StatelessWorkerGrain.cs
    │   │   ├── StatelessWorkerScalingGrain.cs
    │   │   ├── StatelessWorkerStreamConsumerGrain.cs
    │   │   ├── StatelessWorkerStreamProducerGrain.cs
    │   │   ├── StatelessWorkerWithMayInterleaveGrain.cs
    │   │   ├── StatsCollectorGrain.cs
    │   │   ├── StreamBatchingTestConsumerGrain.cs
    │   │   ├── StreamCheckpoint.cs
    │   │   ├── StreamInterceptionGrain.cs
    │   │   ├── StreamingHistoryGrain.cs
    │   │   ├── StuckGrain.cs
    │   │   ├── TestGrains.csproj
    │   │   ├── TestPlacementStrategyFixedSiloDirector.cs
    │   │   ├── ValueTypeTestGrain.cs
    │   │   └── VersionAwarePlacementDirector.cs
    │   ├── TestInternalGrainInterfaces/
    │   │   ├── ActivationGCTestGrainInterfaces.cs
    │   │   ├── IClientAddressableTestClientObject.cs
    │   │   ├── IClientAddressableTestGrain.cs
    │   │   ├── IClientAddressableTestProducer.cs
    │   │   ├── IClientAddressableTestRendezvousGrain.cs
    │   │   ├── IMultifacetFactoryTestGrain.cs
    │   │   ├── IMultifacetTestGrain.cs
    │   │   ├── IPlacementTestGrain.cs
    │   │   ├── ISerializerPresenceTest.cs
    │   │   ├── IStressTestGrain.cs
    │   │   └── TestInternalGrainInterfaces.csproj
    │   ├── TestInternalGrains/
    │   │   ├── ActivateDeactivateTestGrain.cs
    │   │   ├── ActivationGCTestGrains.cs
    │   │   ├── ClientAddressableTestConsumerGrain.cs
    │   │   ├── ClientAddressableTestGrain.cs
    │   │   ├── ClientAddressableTestRendezvousGrain.cs
    │   │   ├── CollectionTestGrain.cs
    │   │   ├── EchoTaskGrain.cs
    │   │   ├── ErrorGrain.cs
    │   │   ├── ExtensionTestGrain.cs
    │   │   ├── HashBasedPlacementGrain.cs
    │   │   ├── InterlockedFlag.cs
    │   │   ├── MultifacetFactoryTestGrain.cs
    │   │   ├── MultifacetTestGrain.cs
    │   │   ├── ObservableGrain.cs
    │   │   ├── PersistenceTestGrains.cs
    │   │   ├── PersistentStateTestGrains.cs
    │   │   ├── PlacementTestGrain.cs
    │   │   ├── Properties/
    │   │   │   └── IsExternalInit.cs
    │   │   ├── ReminderTestGrain2.cs
    │   │   ├── SerializationTestTypes.cs
    │   │   ├── SerializerPresenceTestGrain.cs
    │   │   ├── StreamLifecycleTestGrains.cs
    │   │   ├── StreamLifecycleTestInternalGrains.cs
    │   │   ├── StreamReliabilityTestGrains.cs
    │   │   ├── StreamTestsConstants.cs
    │   │   ├── StreamingGrain.cs
    │   │   ├── StreamingImmutabilityTestGrain.cs
    │   │   ├── StressTestGrain.cs
    │   │   ├── TestExtension.cs
    │   │   ├── TestGrain.cs
    │   │   ├── TestInternalGrains.csproj
    │   │   └── TimerGrain.cs
    │   ├── TestVersionGrains/
    │   │   ├── IVersionTestGrain.cs
    │   │   ├── Program.cs
    │   │   ├── TestVersionGrains.csproj
    │   │   ├── VersionGrainsSiloBuilderConfigurator.cs
    │   │   └── VersionTestGrain.cs
    │   └── TestVersionGrains2/
    │       └── TestVersionGrains2.csproj
    ├── Misc/
    │   └── TestSerializerExternalModels/
    │       ├── IsExternalInit.cs
    │       ├── Models.cs
    │       └── TestSerializerExternalModels.csproj
    ├── Orleans.Analyzers.Tests/
    │   ├── AbstractPropertiesCannotBeSerializedAnalyzerTest.cs
    │   ├── AliasClashAttributeAnalyzerTest.cs
    │   ├── AlwaysInterleaveDiagnosticAnalyzerTests.cs
    │   ├── AssemblyInfo.cs
    │   ├── AtMostOneOrleansConstructorAnalyzerTest.cs
    │   ├── ConfigureAwaitAnalyzerTest.cs
    │   ├── DiagnosticAnalyzerTestBase.cs
    │   ├── GenerateAliasAttributesAnalyzerTest.cs
    │   ├── GenerateGenerateSerializerAttributeAnalyzerTest.cs
    │   ├── GenerateSerializationAttributesAnalyzerTest.cs
    │   ├── GrainInterfaceMethodReturnTypeDiagnosticAnalyzerTest.cs
    │   ├── GrainInterfacePropertyDiagnosticAnalyzerTest.cs
    │   ├── IdClashAttributeAnalyzerTest.cs
    │   ├── IncorrectAttributeUseAnalyzerTest.cs
    │   ├── NoRefParamsDiagnosticAnalyzerTest.cs
    │   └── Orleans.Analyzers.Tests.csproj
    ├── Orleans.CodeGenerator.Tests/
    │   ├── Orleans.CodeGenerator.Tests.csproj
    │   ├── OrleansSourceGeneratorTests.cs
    │   └── snapshots/
    │       ├── OrleansSourceGeneratorTests.TestAlias.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClass.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithAnnotatedFields.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithDifferentAccessModifiers.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithFields.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithInheritance.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithInitOnlyProperty.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithoutNamespace.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicGrain.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicStruct.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassNestedTypes.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassPrimitiveTypes.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassPrimitiveTypesUsingFullName.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassReferenceProperties.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithConstructorParameters.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithFieldAndNoSetters.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithGenerateMethodSerializersAnnotation.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithGenerateSerializerAnnotation.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithInterfaceConstructorParameter.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithNoPublicConstructors.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithOptionalConstructorParameters.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithParameterizedConstructor.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassesWithGeneratedActivatorConstructorAnnotation.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestCompoundTypeAlias.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGenericClass.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGenericClassWithConstructorParameters.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGrainComplexGrain.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGrainMethodAnnotatedWithInvokableBaseType.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGrainMethodAnnotatedWithResponseTimeout.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGrainWithDifferentKeyTypes.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGrainWithMultipleInterfaces.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestRecords.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestWithOmitDefaultMemberValuesAnnotation.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestWithSerializerTransparentAnnotation.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestWithSuppressReferenceTrackingAttribute.verified.cs
    │       └── OrleansSourceGeneratorTests.TestWithUseActivatorAnnotation.verified.cs
    ├── Orleans.Connections.Security.Tests/
    │   ├── CertificateCreator.cs
    │   ├── Orleans.Connections.Security.Tests.csproj
    │   └── TlsConnectionTests.cs
    ├── Orleans.Core.Tests/
    │   ├── Async_AsyncExecutorWithRetriesTests.cs
    │   ├── Caching/
    │   │   ├── ConcurrentLruSoakTests.cs
    │   │   └── ConcurrentLruTests.cs
    │   ├── ClientBuilderTests.cs
    │   ├── CollectionFixtures.cs
    │   ├── ConfigTests.cs
    │   ├── DebuggerHelperTests.cs
    │   ├── Directory/
    │   │   ├── CachedGrainLocatorTests.cs
    │   │   ├── ClientDirectoryTests.cs
    │   │   ├── DhtGrainLocatorTests.cs
    │   │   ├── DirectoryMembershipSnapshotTests.cs
    │   │   ├── GrainDirectoryResolverTests.cs
    │   │   ├── GrainLocatorResolverTests.cs
    │   │   ├── MockClusterMembershipService.cs
    │   │   ├── MockLocalGrainDirectory.cs
    │   │   ├── RingRangeCollectionTests.cs
    │   │   └── RingRangeTests.cs
    │   ├── DurableJobs/
    │   │   ├── DurableJobReceiverExtensionTests.cs
    │   │   ├── InMemoryJobQueueTests.cs
    │   │   ├── InMemoryJobShardManagerTests.cs
    │   │   └── ShardExecutorTests.cs
    │   ├── General/
    │   │   ├── CounterAggregatorGroupTests.cs
    │   │   ├── HistogramAggregatorTests.cs
    │   │   ├── Identifiertests.cs
    │   │   ├── RequestContextTestsNonSiloRequired.cs
    │   │   ├── RingTests_Standalone.cs
    │   │   └── UtilsTests.cs
    │   ├── IdSpanTests.cs
    │   ├── Lease/
    │   │   └── GoldenPathInMemoryLeaseProviderTests.cs
    │   ├── ManagementAgentTests.cs
    │   ├── Membership/
    │   │   ├── ClusterHealthMonitorTests.cs
    │   │   ├── InMemoryMembershipTable.cs
    │   │   ├── MembershipAgentTests.cs
    │   │   ├── MembershipTableCleanupAgentTests.cs
    │   │   ├── MembershipTableManagerTests.cs
    │   │   ├── MembershipTableSnapshotTests.cs
    │   │   └── SiloHealthMonitorTests.cs
    │   ├── ObserverManagerTests.cs
    │   ├── Orleans.Core.Tests.csproj
    │   ├── OrleansRuntime/
    │   │   ├── AsyncSerialExecutorTests.cs
    │   │   ├── ExceptionsTests.cs
    │   │   └── Streams/
    │   │       ├── BestFitBalancerTests.cs
    │   │       ├── ResourceSelectorTestRunner.cs
    │   │       ├── RoundRobinSelectorTests.cs
    │   │       └── SubscriptionMarkerTests.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── ProviderErrorMessageTests.cs
    │   ├── Runtime/
    │   │   ├── ActivationCollectorTests.cs
    │   │   └── ActivationCountPlacementDirectorTests.cs
    │   ├── RuntimeTypeNameFormatterTests.cs
    │   ├── SchedulerTests/
    │   │   ├── OrleansTaskSchedulerAdvancedTests.cs
    │   │   ├── OrleansTaskSchedulerAdvancedTests_Set2.cs
    │   │   ├── OrleansTaskSchedulerBasicTests.cs
    │   │   └── STSchedulerLongTurnTest.cs
    │   ├── SchedulingHelper.cs
    │   ├── Serialization/
    │   │   ├── BuiltInSerializerTests.cs
    │   │   ├── ExternalCodecTests.cs
    │   │   ├── MessageSerializerTests.cs
    │   │   ├── SerializationTests.DifferentTypes.cs
    │   │   └── SerializationTests.ImmutableCollections.cs
    │   ├── ServiceLifecycleTests.cs
    │   ├── SiloBuilderTests.cs
    │   └── Utilities/
    │       ├── DelegateAsyncTimer.cs
    │       └── DelegateAsyncTimerFactory.cs
    ├── Orleans.Dashboard.Tests/
    │   ├── Orleans.Dashboard.TestGrains/
    │   │   ├── GenericGrain.cs
    │   │   ├── Orleans.Dashboard.TestGrains.csproj
    │   │   ├── TestCalls.cs
    │   │   ├── TestGenericGrain.cs
    │   │   ├── TestGrain.cs
    │   │   ├── TestGrainsHostedService.cs
    │   │   ├── TestMessageBasedGrain.cs
    │   │   ├── TestStateCompoundKeyGrain.cs
    │   │   ├── TestStateGrain.cs
    │   │   └── TestStateInMemoryGrain.cs
    │   └── Orleans.Dashboard.UnitTests/
    │       ├── EmbeddedAssetTests.cs
    │       ├── GrainStateTests.cs
    │       ├── Orleans.Dashboard.UnitTests.csproj
    │       ├── RingBufferTests.cs
    │       ├── TraceHistoryTests.cs
    │       └── TypeFormatterTests.cs
    ├── Orleans.DefaultCluster.Tests/
    │   ├── App.config
    │   ├── AsyncEnumerableGrainCallTests.cs
    │   ├── BasicActivationTests.cs
    │   ├── ClientAddressableTests.cs
    │   ├── CodeGenTests/
    │   │   ├── CodeGeneratorTests_KnownAssemblyAttribute.cs
    │   │   ├── GeneratorGrainTest.cs
    │   │   └── IRuntimeCodeGenGrain.cs
    │   ├── CollectionFixtures.cs
    │   ├── ConcreteStateClassTests.cs
    │   ├── DeactivationTests.cs
    │   ├── EchoTaskGrainTests.cs
    │   ├── ErrorGrainTest.cs
    │   ├── ExternalTypesTests.cs
    │   ├── FSharpGrainTests.cs
    │   ├── GenericGrainTests.cs
    │   ├── GrainActivateDeactivateTests.cs
    │   ├── GrainFactoryTests.cs
    │   ├── GrainInterfaceHierarchyTests.cs
    │   ├── GrainReferenceCastTests.cs
    │   ├── GrainReferenceTest.cs
    │   ├── HostedClientTests.cs
    │   ├── InMemoryDurableJobsTests.cs
    │   ├── KeyExtensionTests.cs
    │   ├── LifecycleObserverCreationTests.cs
    │   ├── LocalActivationStatusCheckerTests.cs
    │   ├── LocalErrorGrain.cs
    │   ├── ManagementGrainTests.cs
    │   ├── MemoryStorageProviderTests.cs
    │   ├── Migration/
    │   │   └── MigrationTests.cs
    │   ├── MultifacetGrainTest.cs
    │   ├── ObserverTests.cs
    │   ├── OneWayCallTests.cs
    │   ├── Orleans.DefaultCluster.Tests.csproj
    │   ├── PolymorphicInterfaceTest.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── ProviderTests.cs
    │   ├── ReminderTest.cs
    │   ├── RequestContextTest.cs
    │   ├── SerializationTests/
    │   │   ├── JsonSerializerTests.cs
    │   │   ├── RoundTripSerializerTests.cs
    │   │   └── SerializationTests.cs
    │   ├── SiloRoleBasedPlacementDirectorTests.cs
    │   ├── SimpleGrainTests.cs
    │   ├── StatelessWorkerTests.cs
    │   └── TimerOrleansTest.cs
    ├── Orleans.DependencyInjection.Tests/
    │   ├── App.config
    │   ├── Autofac/
    │   │   └── DependencyInjectionGrainTestsUsingAutofac.cs
    │   ├── DefaultServiceProvider/
    │   │   └── DependencyInjectionGrainTestsUsingDefaultServiceProvider.cs
    │   ├── DependencyInjectionGrainTestsRunner.cs
    │   ├── Orleans.DependencyInjection.Tests.csproj
    │   └── Properties/
    │       └── AssemblyInfo.cs
    ├── Orleans.DurableJobs.Tests/
    │   ├── DurableJobs/
    │   │   ├── DurableJobTestsRunner.cs
    │   │   ├── IJobShardManagerTestFixture.cs
    │   │   ├── InMemoryJobShardManagerTestFixture.cs
    │   │   ├── InMemoryJobShardManagerTests.cs
    │   │   └── JobShardManagerTestsRunner.cs
    │   └── Orleans.DurableJobs.Tests.csproj
    ├── Orleans.EventSourcing.Tests/
    │   ├── EventSourcingTests/
    │   │   ├── AccountGrainTests.cs
    │   │   ├── ChatGrainTests.cs
    │   │   ├── CountersGrainPerfTests.cs
    │   │   ├── CountersGrainTests.cs
    │   │   ├── EventSourcingClusterFixture.cs
    │   │   ├── LogTestGrainClearTests.cs
    │   │   └── PersonGrainTests.cs
    │   └── Orleans.EventSourcing.Tests.csproj
    ├── Orleans.GrainDirectory.Tests/
    │   ├── GrainDirectory/
    │   │   ├── DistributedGrainDirectoryTests.cs
    │   │   └── GrainDirectoryResilienceTests.cs
    │   └── Orleans.GrainDirectory.Tests.csproj
    ├── Orleans.Journaling.Tests/
    │   ├── DurableDictionaryTests.cs
    │   ├── DurableGrainTests.cs
    │   ├── DurableQueueTests.cs
    │   ├── DurableSetTests.cs
    │   ├── DurableValueTests.cs
    │   ├── Grains.cs
    │   ├── ITestDurableGrainInterface.cs
    │   ├── ITestMultiCollectionGrain.cs
    │   ├── IntegrationTestFixture.cs
    │   ├── JournalingAzureStorageTestConfiguration.cs
    │   ├── LogSegmentTests.cs
    │   ├── Orleans.Journaling.Tests.csproj
    │   ├── StateMachineManagerTests.cs
    │   ├── StateMachineTestBase.cs
    │   ├── TestDurableGrain.cs
    │   ├── TestMultiCollectionGrain.cs
    │   └── TestPerson.cs
    ├── Orleans.Placement.Tests/
    │   ├── ActivationRebalancingTests/
    │   │   ├── ControlRebalancerTests.cs
    │   │   ├── DynamicRebalancingTests.cs
    │   │   ├── RebalancerFixture.cs
    │   │   ├── RebalancingOptionsTests.cs
    │   │   ├── RebalancingTestBase.cs
    │   │   ├── StatePreservationRebalancingTests.cs
    │   │   └── StaticRebalancingTests.cs
    │   ├── ActivationRepartitioningTests/
    │   │   ├── BlockedBloomFilterTests.cs
    │   │   ├── CustomToleranceTests.cs
    │   │   ├── DefaultToleranceTests.cs
    │   │   ├── FrequencyFilterTests.cs
    │   │   ├── FrequentEdgeCounterTests.cs
    │   │   ├── MaxHeapTests.cs
    │   │   ├── OptionsTests.cs
    │   │   ├── RepartitioningTestBase.cs
    │   │   └── TestMessageFilter.cs
    │   ├── General/
    │   │   ├── ElasticPlacementTest.cs
    │   │   ├── GrainPlacementClusterChangeTests.cs
    │   │   ├── GrainPlacementTests.cs
    │   │   ├── LoadSheddingTest.cs
    │   │   └── ResourceOptimizedPlacementOptionsTests.cs
    │   ├── Orleans.Placement.Tests.csproj
    │   └── PlacementFilterTests/
    │       ├── GrainPlacementFilterTests.cs
    │       ├── PreferredMatchSiloMetadataPlacementFilterDirectorTests.cs
    │       ├── RequiredMatchSiloMetadataPlacementFilterDirectorTests.cs
    │       ├── SiloMetadataPlacementFilterTests.cs
    │       ├── TestLocalSiloDetails.cs
    │       └── TestSiloMetadataCache.cs
    ├── Orleans.Runtime.Internal.Tests/
    │   ├── ActivationsLifeCycleTests/
    │   │   ├── ActivationCollectorTests.cs
    │   │   └── DeactivateOnIdleTests.cs
    │   ├── App.config
    │   ├── CancellationTests/
    │   │   └── SystemTargetCancellationTokenTests.cs
    │   ├── CollectionFixtures.cs
    │   ├── ConcurrencyTests.cs
    │   ├── ConnectionStringFixture.cs
    │   ├── ErrorInjectionStorageProvider.cs
    │   ├── GatewaySelectionTest.cs
    │   ├── General/
    │   │   ├── ConsistentRingProviderTests_Silo.cs
    │   │   └── RequestContextTest.cs
    │   ├── GeoClusterTests/
    │   │   └── BasicLogTestGrainTests.cs
    │   ├── GrainDirectoryPartitionTests.cs
    │   ├── GrainLocatorActivationResiliencyTests.cs
    │   ├── GrainStateContainingGrainReferences.cs
    │   ├── LivenessTests/
    │   │   └── ConsistentRingProviderTests.cs
    │   ├── MembershipTests/
    │   │   ├── ClientIdPartitionDataRebuildTests.cs
    │   │   └── MembershipTableTestsBase.cs
    │   ├── MemoryGrainStorageTests.cs
    │   ├── MessageScheduling/
    │   │   ├── AllowCallChainReentrancyTests.cs
    │   │   ├── CallChainReentrancyTestHelper.cs
    │   │   ├── DisabledCallChainReentrancyTestRunner.cs
    │   │   ├── DisabledCallChainReentrancyTests.cs
    │   │   └── ReentrancyTests.cs
    │   ├── Orleans.Runtime.Internal.Tests.csproj
    │   ├── OrleansRuntime/
    │   │   └── StuckGrainTests.cs
    │   ├── Properties/
    │   │   ├── AssemblyInfo.cs
    │   │   └── IsExternalInit.cs
    │   ├── ReadMe.md
    │   ├── RemindersTest/
    │   │   └── ReminderTableTestsBase.cs
    │   ├── RetryHelper.cs
    │   ├── SiloMetadataTests/
    │   │   └── SiloMetadataTests.cs
    │   ├── StorageTests/
    │   │   ├── CommonStorageTests.cs
    │   │   ├── CommonStorageUtilities.cs
    │   │   ├── HierarchicalKeyStoreTests.cs
    │   │   ├── LocalStoreTests.cs
    │   │   ├── PersistenceGrainTests.cs
    │   │   ├── RandomUtilities.cs
    │   │   ├── Range.cs
    │   │   ├── StorageProviders/
    │   │   │   ├── BaseJSONStorageProvider.cs
    │   │   │   ├── FileStorageProvider.cs
    │   │   │   └── IJSONStateDataManager.cs
    │   │   ├── SymbolSet.cs
    │   │   └── TestDataSets/
    │   │       ├── GrainTypeGenerator.cs
    │   │       ├── StorageDataSet2CyrillicIdsAndGrainNames.cs
    │   │       ├── StorageDataSetGeneric.cs
    │   │       ├── StorageDataSetPlain.cs
    │   │       ├── StorageDateSetGenericHuge.cs
    │   │       ├── TestState1.cs
    │   │       └── TestStateGeneric1.cs
    │   ├── TestRunners/
    │   │   └── GrainPersistenceTestRunner.cs
    │   ├── TestStoreGrainState.cs
    │   ├── TestUtils.cs
    │   ├── TimeoutTests.cs
    │   └── TimerTests/
    │       ├── ReminderTests_Base.cs
    │       └── ReminderTests_TableGrain.cs
    ├── Orleans.Runtime.Tests/
    │   ├── ActivationTracingTests.cs
    │   ├── ActivityPropagationTests.cs
    │   ├── App.config
    │   ├── CancellationTests/
    │   │   ├── CancellationTokenTests.cs
    │   │   ├── GrainCancellationTokenTests.cs
    │   │   └── ObserverCancellationTokenTests.cs
    │   ├── ClientConnectionTests/
    │   │   ├── ClientConnectionEventTests.cs
    │   │   ├── ClientConnectionRegisteredServiceEventTests.cs
    │   │   ├── ClusterClientTests.cs
    │   │   ├── GatewayConnectionTests.cs
    │   │   ├── InvalidPreambleConnectionTests.cs
    │   │   └── StallConnectionTests.cs
    │   ├── CollectionFixtures.cs
    │   ├── Directories/
    │   │   ├── GrainDirectoryTests.cs
    │   │   └── MultipleGrainDirectoriesTests.cs
    │   ├── DuplicateActivationsTests.cs
    │   ├── ExceptionPropagationTests.cs
    │   ├── Forwarding/
    │   │   └── ShutdownSiloTests.cs
    │   ├── GrainActivatorTests.cs
    │   ├── GrainCallFilterTests.cs
    │   ├── GrainLevelCallFilterTests.cs
    │   ├── GrainServiceTests/
    │   │   ├── GrainServiceTests.cs
    │   │   └── TestGrainService.cs
    │   ├── HeterogeneousSilosTests/
    │   │   ├── HeterogeneousTests.cs
    │   │   └── UpgradeTests/
    │   │       ├── RuntimeStrategyChangeTests.cs
    │   │       ├── UpgradeTests.cs
    │   │       ├── UpgradeTestsBase.cs
    │   │       └── VersionPlacementTests.cs
    │   ├── JsonNodeGrainTests.cs
    │   ├── Lifecycle/
    │   │   └── LifecycleTests.cs
    │   ├── LocalhostSiloTests.cs
    │   ├── LogFomatterTests.cs
    │   ├── ManagementGrainTests.cs
    │   ├── MembershipTests/
    │   │   ├── LivenessTests.cs
    │   │   └── SilosStopTests.cs
    │   ├── MinimalReminderTests.cs
    │   ├── OneWayDeactivationTests.cs
    │   ├── Orleans.Runtime.Tests.csproj
    │   ├── Placement/
    │   │   └── CustomPlacementTests.cs
    │   ├── Program.cs
    │   ├── Properties/
    │   │   ├── AssemblyInfo.cs
    │   │   └── IsExternalInit.cs
    │   ├── ReadMe.md
    │   ├── StartupTaskTests.cs
    │   ├── StatelessWorkerActivationTests.cs
    │   ├── StorageFacet/
    │   │   ├── Feature.Abstractions/
    │   │   │   ├── ExampleStorageAttribute.cs
    │   │   │   └── IExampleStorage.cs
    │   │   ├── Feature.Implementations/
    │   │   │   ├── BlobExampleStorage.cs
    │   │   │   └── TableExampleStorage.cs
    │   │   ├── Feature.Infrastructure/
    │   │   │   ├── ExampleStorageAttributeMapper.cs
    │   │   │   ├── ExampleStorageExtensions.cs
    │   │   │   └── NamedExampleStorageFactory.cs
    │   │   ├── StorageFacetGrain.cs
    │   │   └── StorageFacetTests.cs
    │   ├── TestDirectoryCache.cs
    │   └── TransportTests/
    │       ├── TransportTestsBase.cs
    │       └── UnixSocketTransportTests.cs
    ├── Orleans.Serialization.FSharp.Tests/
    │   ├── Orleans.Serialization.FSharp.Tests.fsproj
    │   └── SerializationTests.fs
    ├── Orleans.Serialization.UnitTests/
    │   ├── ArcBufferWriterTests.cs
    │   ├── Buffers/
    │   │   └── Adaptors/
    │   │       └── PooledBufferStreamTests.cs
    │   ├── BuiltInCodecTests.cs
    │   ├── ConverterTests.cs
    │   ├── GeneratedSerializerTests.cs
    │   ├── GenericBaseClassTest.cs
    │   ├── ISerializableTests.cs
    │   ├── InvokableTestInterfaces.cs
    │   ├── ManualVersionToleranceTests.cs
    │   ├── MemoryPackSerializerTests.cs
    │   ├── MessagePackSerializerTests.cs
    │   ├── Models.cs
    │   ├── NewtonsoftJsonCodecTests.cs
    │   ├── NumericsWideningAndNarrowingTests.cs
    │   ├── Orleans.Serialization.UnitTests.csproj
    │   ├── PolymorphismTests.cs
    │   ├── PooledBufferTests.cs
    │   ├── Properties/
    │   │   ├── IsExternalInit.cs
    │   │   └── RequiredMemberAttribute.cs
    │   ├── ProtobufSerializerTests.cs
    │   ├── ReaderWriterTests.cs
    │   ├── RecordSerializationTests.cs
    │   ├── Request.cs
    │   ├── TypeEncodingTests.cs
    │   └── protobuf-model.proto
    ├── Orleans.Streaming.Tests/
    │   ├── Orleans.Streaming.Tests.csproj
    │   ├── OrleansRuntime/
    │   │   └── Streams/
    │   │       ├── CachedMessageBlockTests.cs
    │   │       ├── FixedSizeBufferTests.cs
    │   │       ├── ObjectPoolTests.cs
    │   │       └── PooledQueueCacheTests.cs
    │   ├── StreamingTests/
    │   │   ├── BroadcastChannels/
    │   │   │   └── BroadcastChannelTests.cs
    │   │   ├── ClientStreamTestRunner.cs
    │   │   ├── ControllableStreamGeneratorProviderTests.cs
    │   │   ├── ControllableStreamProviderTests.cs
    │   │   ├── DeactivationTestRunner.cs
    │   │   ├── Filtering/
    │   │   │   └── StreamFilteringTestsBase.cs
    │   │   ├── GeneratedStreamRecoveryTests.cs
    │   │   ├── ImplicitSubscriptionKeyTypeGrainTests.cs
    │   │   ├── ImplicitSubscritionRecoverableStreamTestRunner.cs
    │   │   ├── MemoryProgrammaticSubcribeTests.cs
    │   │   ├── MemoryStreamBatchingTests.cs
    │   │   ├── MemoryStreamCacheMissTests.cs
    │   │   ├── MemoryStreamProviderBatchedClientTests.cs
    │   │   ├── MemoryStreamProviderClientTests.cs
    │   │   ├── MemoryStreamResumeTests.cs
    │   │   ├── MultipleStreamsTestRunner.cs
    │   │   ├── PlugableQueueBalancerTests/
    │   │   │   ├── LeaseBasedQueueBalancer.cs
    │   │   │   ├── LeaseManagerGrain.cs
    │   │   │   ├── PluggableQueueBalancerTestBase.cs
    │   │   │   └── PluggableQueueBalancerTestsWithMemoryStreamProvider.cs
    │   │   ├── ProgrammaticSubscribeTests/
    │   │   │   ├── ProgrammaticSubscribeTestsRunner.cs
    │   │   │   └── SubscriptionObserverWithImplicitSubscribingTestRunner.cs
    │   │   ├── PubSubRendezvousGrainTests.cs
    │   │   ├── SampleStreamingTests.cs
    │   │   ├── SingleStreamTestRunner.cs
    │   │   ├── StatelessWorkersStreamTests.cs
    │   │   ├── StreamBatchingTestRunner.cs
    │   │   ├── StreamGeneratorProviderTests.cs
    │   │   ├── StreamProvidersTests.cs
    │   │   ├── StreamPubSubReliabilityTests.cs
    │   │   ├── StreamTestHelperClasses.cs
    │   │   ├── StreamTestUtils.cs
    │   │   ├── StreamingCacheMissTests.cs
    │   │   ├── StreamingResumeTests.cs
    │   │   ├── SubscriptionMultiplicityTestRunner.cs
    │   │   └── SystemTargetRouteTests.cs
    │   └── TestStreamProviders/
    │       └── Controllable/
    │           └── ControllableTestStreamProvider.cs
    ├── TestInfrastructure/
    │   ├── Orleans.TestingHost.Tests/
    │   │   ├── App.config
    │   │   ├── Grains/
    │   │   │   └── SimpleGrain.cs
    │   │   ├── Orleans.TestingHost.Tests.csproj
    │   │   └── TestClusterTests.cs
    │   └── TestExtensions/
    │       ├── BaseClusterFixture.cs
    │       ├── BaseInProcessTestClusterFixture.cs
    │       ├── DefaultClusterFixture.cs
    │       ├── HierarchicalKeyStore.cs
    │       ├── HostedTestClusterBase.cs
    │       ├── ILocalDataStore.cs
    │       ├── MockStorageProvider.cs
    │       ├── OrleansTestingBase.cs
    │       ├── Runners/
    │       │   └── GoldenPathLeaseProviderTestRunner.cs
    │       ├── SerializationTestEnvironment.cs
    │       ├── SiloAddressUtils.cs
    │       ├── TestCategory.cs
    │       ├── TestClusterPerTest.cs
    │       ├── TestConstants.cs
    │       ├── TestDefaultConfiguration.cs
    │       ├── TestEnvironmentFixture.cs
    │       ├── TestExtensions.csproj
    │       ├── TestOutputHelperExtensions.cs
    │       ├── TestUtils.cs
    │       └── XunitLoggerProvider.cs
    ├── TesterInternal/
    │   └── ActivationsLifeCycleTests/
    │       └── ActivationCancellationTests.cs
    ├── Transactions/
    │   ├── Orleans.Transactions.Azure.Test/
    │   │   ├── AssemblyInfo.cs
    │   │   ├── AzureTransactionalStateStorageTests.cs
    │   │   ├── ConsistencySkewedClockTests.cs
    │   │   ├── ConsistencyTests.cs
    │   │   ├── FaultInjection/
    │   │   │   ├── ControlledInjection/
    │   │   │   │   └── TransactionFaultInjectionTests.cs
    │   │   │   └── RandomInjection/
    │   │   │       └── ConsistencyFaultInjectionTests.cs
    │   │   ├── GoldenPathTests.cs
    │   │   ├── GrainFaultTests.cs
    │   │   ├── Orleans.Transactions.Azure.Test.csproj
    │   │   ├── SkewedClockGoldenPathTransactionTests.cs
    │   │   ├── TestFixture.cs
    │   │   ├── TocFaultTransactionTests.cs
    │   │   ├── TocGoldenPathTests.cs
    │   │   ├── TransactionConcurrencyTests.cs
    │   │   ├── TransactionRecoveryTests.cs
    │   │   └── TransactionScopeTests.cs
    │   └── Orleans.Transactions.Tests/
    │       ├── AssemblyInfo.cs
    │       ├── Disabled/
    │       │   └── DisabledTransactionsTests.cs
    │       ├── Memory/
    │       │   ├── ConsistencySkewedClockTests.cs
    │       │   ├── ConsistencyTests.cs
    │       │   ├── GoldenPathTransactionMemoryTests.cs
    │       │   ├── GrainFaultTransactionMemoryTests.cs
    │       │   ├── MemoryTransactionsFixture.cs
    │       │   ├── SkewedClockGoldenPathTransactionMemoryTests.cs
    │       │   ├── TocFaultTransactionMemoryTests.cs
    │       │   ├── TocGoldenPathMemoryTests.cs
    │       │   ├── TransactionAttributionTest.cs
    │       │   └── TransactionConcurrencyTests.cs
    │       ├── Orleans.Transactions.Tests.csproj
    │       ├── Runners/
    │       │   └── TransactionAttributionTestRunner.cs
    │       └── TransactionOverloadDetectorTests.cs
    └── xunit.runner.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .azure/pipelines/build.yaml
================================================
trigger:
  branches:
    include:
    - main
    - 3.x
  paths:
    exclude:
    - samples

schedules:
- cron: "0 0 * * *"
  displayName: 'Daily midnight build (including CodeQL)'
  branches:
    include:
    - main
    - 3.x
  always: true

parameters:
  - name: build_configuration
    displayName: Build configuration
    type: string
    default: Release
    values:
    - Release
    - Debug
  - name: version_prefix
    displayName: Version prefix
    type: string
    default: 10.0.0
  - name: include_suffix
    displayName: Append version suffix
    type: boolean
    default: true
  - name: version_suffix
    displayName: Version suffix
    type: string
    default: ci.$(Build.BuildNumber)
  - name: skip_test
    displayName: Skip tests
    type: boolean
    default: false
  - name: frameworks
    displayName: Frameworks
    type: object
    default:
    - net8.0
    - net10.0
  - name: tests_categories
    displayName: Test categories
    type: object
    default:
    - BVT
    - SlowBVT
    - Functional
  - name: runCodeQL3000
    default: false
    displayName: Run CodeQL3000 tasks
    type: boolean

variables:
- template: templates/vars.yaml

resources:
  repositories:
  - repository: 1ESPipelineTemplates
    type: git
    name: 1ESPipelineTemplates/1ESPipelineTemplates
    ref: refs/tags/release

extends:
  ${{ if eq(variables['System.TeamProject'], 'GitHub - PR Builds') }}:
    template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates
  ${{ else }}:
    template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
  parameters:
    settings:
      skipBuildTagsForGitHubPullRequests: true
    sdl:
      autobaseline:
        enableForGitHub: true
    pool:
      name: $(pool_name)
      image: $(pool_image)
      os: windows
    stages:
    - stage: build_test
      displayName: Build and Tests
      jobs:
      - template: /.azure/pipelines/templates/build.yaml@self
        parameters:
          build_configuration: ${{ parameters.build_configuration }}
          version_prefix: ${{ parameters.version_prefix }}
          include_suffix: ${{ parameters.include_suffix }}
          version_suffix: ${{ parameters.version_suffix }}
          codesign: false
          skip_test: ${{ parameters.skip_test }}
          publish_nightly: false
          publish_nuget: false
          frameworks: ${{ parameters.frameworks }}
          tests_categories: ${{ parameters.tests_categories }}
          runCodeQL3000: ${{ parameters.runCodeQL3000 }}


================================================
FILE: .azure/pipelines/github-mirror.yaml
================================================
trigger:
  branches:
    include:
    - '*'

pr: none

schedules:
- cron: '0 */2 * * *'
  displayName: Scheduled sync
  branches:
    include:
    - main

resources:
  repositories:
  - repository: 1ESPipelineTemplates
    type: git
    name: 1ESPipelineTemplates/1ESPipelineTemplates
    ref: refs/tags/release

extends:
  template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
  parameters:
    pool: 
      name: orleans-build-hosted-pool
      image: orleans-build-image
      os: windows
    stages:
    - stage: clone
      displayName: Mirror GitHub repo
      jobs:
      - job:
        steps:
        - checkout: self
          displayName: Clone GitHub repo
          fetchDepth: 0
          fetchTags: true
        - task: Powershell@2
          displayName: Set git config
          inputs:
            targetType: 'inline'
            script: |
              git config --global user.email "${env:GIT_USEREMAIL}"
              git config --global user.name "${env:GIT_USERNAME}"
        - task: PowerShell@2
          displayName: Push to remote repo
          inputs:
            targetType: 'inline'
            script: |
              foreach ($ref in ${env:REFS_MIRROR}.Split(' '))
              {
                git config --add remote.origin.fetch "$ref"
              }
              git fetch --all
              git remote add --mirror=fetch mirror https://${Env:SYSTEM_ACCESSTOKEN}@${env:REMOTE_REPOSITORY}
              git push --force --all --progress mirror
          env:
            SYSTEM_ACCESSTOKEN: $(System.AccessToken)

================================================
FILE: .azure/pipelines/nightly-main.yaml
================================================
trigger: none
pr: none

schedules:
- cron: "0 0 * * *"
  displayName: Publish nightly packages
  branches:
    include:
    - main
  always: false

parameters:
  - name: publish_nuget
    displayName: Publish to nuget.org
    type: boolean
    default: false
  - name: publish_nightly
    displayName: Publish to orleans-nightly
    type: boolean
    default: true
  - name: version_prefix
    displayName: Version prefix
    type: string
    default: 10.0.0
  - name: version_suffix
    displayName: Version suffix
    type: string
    default: nightly.$(Build.BuildNumber)
  - name: include_suffix
    displayName: Append version suffix
    type: boolean
    default: true

variables:
- template: templates/vars.yaml

resources:
  repositories:
  - repository: 1ESPipelineTemplates
    type: git
    name: 1ESPipelineTemplates/1ESPipelineTemplates
    ref: refs/tags/release

extends:
  ${{ if eq(variables['System.TeamProject'], 'GitHub - PR Builds') }}:
    template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates
  ${{ else }}:
    template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
  parameters:
    sdl:
      policheck:
        enabled: true
      tsa:
        enabled: true
    settings:
      skipBuildTagsForGitHubPullRequests: true
    pool:
      name: $(pool_name)
      image: $(pool_image)
      os: windows
    stages:
    - stage: build_test
      displayName: Build and Tests
      jobs:
      - template: /.azure/pipelines/templates/build.yaml@self
        parameters:
          build_configuration: Release
          version_prefix: ${{ parameters.version_prefix }}
          include_suffix: ${{ parameters.include_suffix }}
          version_suffix: ${{ parameters.version_suffix }}
          codesign: true
          publish_nightly: ${{ parameters.publish_nightly }}
          publish_nuget: ${{ parameters.publish_nuget }}
          skip_test: true


================================================
FILE: .azure/pipelines/templates/build.yaml
================================================
parameters:
  - name: build_configuration
    displayName: Build configuration
    type: string
    default: Release
    values:
    - Release
    - Debug
  - name: version_prefix
    displayName: Version prefix
    type: string
    default: 9.0.0
  - name: include_suffix
    displayName: Append version suffix
    type: boolean
    default: true
  - name: version_suffix
    displayName: Version suffix
    type: string
    default: ci.$(Build.BuildNumber)
  - name: codesign
    displayName: Enable code signing
    type: boolean
    default: false
  - name: skip_test
    displayName: Skip tests
    type: boolean
    default: false
  - name: publish_nightly
    displayName: Publish to orleans-nightly
    type: boolean
    default: false
  - name: publish_nuget
    displayName: Publish to nuget.org
    type: boolean
    default: false
  - name: frameworks
    displayName: Frameworks
    type: object
    default:
    - net8.0
    - net10.0
  - name: tests_categories
    displayName: Test categories
    type: object
    default:
    - BVT
    - SlowBVT
    - Functional
  - name: runCodeQL3000
    default: false
    displayName: Run CodeQL3000 tasks
    type: boolean

jobs:

# Approval needed for publishing to nuget.org
- job: PreDeploymentApprovalJob
  displayName: Pre-Deployment Approval
  timeoutInMinutes: 2880
  ${{ if and(eq(parameters.codesign, true), eq(parameters.publish_nuget, true)) }}:
    pool: server
  steps:
    - ${{ if and(eq(parameters.codesign, true), eq(parameters.publish_nuget, true)) }}:
      - task: ManualValidation@1
        inputs:
          notifyUsers: ${{ variables.notifyUsers }}
          approvers: ${{ variables.approvers }}
    - ${{ if not(and(eq(parameters.codesign, true), eq(parameters.publish_nuget, true))) }}:
      - script: echo "Skipping pre-deployment approval"

# Build, sign dlls, build nuget pkgs, then sign them
- job: Build
  displayName: Build and create NuGet packages
  dependsOn: PreDeploymentApprovalJob
  variables:
    ${{ if eq(parameters.codesign, true) }}:
      microbuild_signing: true
      publishVstsFeed: 'public/orleans-nightly'
    ${{ else }}:
      microbuild_signing: false
  ${{ if ne(variables['System.TeamProject'], 'GitHub - PR Builds') }}:
    templateContext:
      outputs:
      - output: pipelineArtifact
        targetPath: '$(build.sourcesdirectory)/Artifacts/${{parameters.build_configuration}}'
        artifactName: nuget
      # Publish packages to nightly
      - ${{ if and(eq(parameters.codesign, true), eq(parameters.publish_nightly, true)) }}:
        - output: nuget
          useDotNetTask: false
          packageParentPath: $(Pipeline.Workspace)
          packagesToPush: $(build.sourcesdirectory)/Artifacts/${{parameters.build_configuration}}/**/*.nupkg
          nuGetFeedType: internal
          publishVstsFeed: $(publishVstsFeed)
          allowPackageConflicts: true
      - ${{ if and(eq(parameters.codesign, true), eq(parameters.publish_nuget, true)) }}:
        - output: nuget
          condition: succeeded()
          useDotNetTask: false
          packageParentPath: $(Pipeline.Workspace)
          packagesToPush: $(build.sourcesdirectory)/Artifacts/${{parameters.build_configuration}}/**/*.nupkg
          nuGetFeedType: external
          publishFeedCredentials: dotnet-orleans-nuget
          publishPackageMetadata: true
          allowPackageConflicts: true
  steps:
  - ${{ if eq(variables.microbuild_signing, true) }}:
    - task: MicroBuildSigningPlugin@4
      displayName: Install MicroBuild plugin
      inputs:
        signType: real
        zipSources: false
        feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
        ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
        ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
      env:
        TeamName: Orleans
        MicroBuildOutputFolderOverride: '$(Agent.TempDirectory)'
  - checkout: self
  - task: NodeTool@0
    displayName: 'Use Node.js'
    inputs:
      versionSpec: '20.x'
  - task: npmAuthenticate@0
    displayName: 'Authenticate npm feeds'
    inputs:
      workingFile: '$(Build.SourcesDirectory)/src/Dashboard/Orleans.Dashboard/.azdo/.npmrc'
  - task: UseDotNet@2
    displayName: 'Use .NET Core sdk'
    inputs:
      useGlobalJson: true
  - ${{ if eq(variables.runCodeQL3000, 'true') }}:
    - task: CodeQL3000Init@0
      displayName: CodeQL Initialize
    # This task only tags a build if it actually does CodeQL3000 work.
    # Those tasks no-op while the analysis is considered up to date i.e. for runs w/in a few days of each other.
    - script: "echo ##vso[build.addbuildtag]CodeQL3000"
      displayName: 'Set CI CodeQL3000 tag'
      condition: ne(variables.CODEQL_DIST,'')
  - task: DotNetCoreCLI@2
    displayName: Build
    inputs:
      command: build
      arguments: '$(build_flags) /bl:${{parameters.build_configuration}}-Build.binlog /p:Configuration=${{parameters.build_configuration}} $(solution)'
    env:
      VersionPrefix: ${{parameters.version_prefix}}
      ${{ if eq(parameters.include_suffix, true) }}:
        VersionSuffix: ${{parameters.version_suffix}}
      OfficialBuild: $(official_build)
  - ${{ if eq(variables.runCodeQL3000, 'true') }}:
    - task: CodeQL3000Finalize@0
      displayName: CodeQL Finalize
  - task: CmdLine@2
    displayName: Pack
    inputs:
      script: 'dotnet pack --no-build --no-restore $(build_flags) /bl:${{parameters.build_configuration}}-Pack.binlog /p:Configuration=${{parameters.build_configuration}} $(solution)'
    env:
      VersionPrefix: ${{parameters.version_prefix}}
      ${{ if eq(parameters.include_suffix, true) }}:
        VersionSuffix: ${{parameters.version_suffix}}
      OfficialBuild: $(official_build)
  # Signing
  - ${{ if eq(variables.microbuild_signing, true) }}:
    - task: NuGetCommand@2
      displayName: "Install packages for signing"
      inputs:
        command: 'custom'
        arguments: 'install sign/packages.config -ConfigFile sign/Nuget.Config'
    - task: MSBuild@1
      displayName: "Sign binaries and packages"
      inputs:
        solution: sign/sign.proj
        msbuildArguments: -t:sign -p:Configuration=${{parameters.build_configuration}}

# Tests
- ${{ if and(eq(parameters.skip_test, false), ne(variables.runCodeQL3000, 'true')) }}:
  - ${{ each category in parameters.tests_categories }}:
    - ${{ each framework in parameters.frameworks }}:
      - job:
        displayName: ${{category}} on ${{framework}}
        timeoutInMinutes: 120
        dependsOn: Build
        templateContext:
          outputs:
          - output: pipelineArtifact
            targetPath: '$(Build.ArtifactStagingDirectory)/test_outputs_${{category}}_${{framework}}_$(Build.BuildId)'
            artifactName: 'test_outputs_${{category}}_${{framework}}_$(System.JobAttempt)'
            condition: succeededOrFailed()
        variables:
          # Transform "net8.0" to "8.0.x" for the second DotNetCoreCLI@2
          testFrameworkToInstall: ${{format('{0}.x', replace(upper(framework), 'NET', ''))}}
        steps:
        - checkout: self
        - task: NodeTool@0
          displayName: 'Use Node.js'
          inputs:
            versionSpec: '20.x'
        - task: npmAuthenticate@0
          displayName: 'Authenticate npm feeds'
          inputs:
            workingFile: '$(Build.SourcesDirectory)/src/Dashboard/Orleans.Dashboard/.azdo/.npmrc'
        - task: UseDotNet@2
          inputs:
            useGlobalJson: true
          displayName: 'Use .NET Core sdk'
        - task: DotNetCoreCLI@2
          displayName: Build
          inputs:
            command: build
            arguments: '$(build_flags) /bl:${{parameters.build_configuration}}-Build.binlog /p:Configuration=${{parameters.build_configuration}} $(solution)'
        - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
          - task: AzureCLI@2
            displayName: Azure Login
            env:
              SYSTEM_ACCESSTOKEN: $(System.AccessToken)
              AZURE_CORE_USE_MSAL_HTTP_CACHE: "false"
            inputs:
              azureSubscription: 'dotnet-orleans-test'
              useGlobalConfig: true
              addSpnToEnvironment: true
              scriptType: pscore
              scriptLocation: inlineScript
              inlineScript: |
                # Extract TenantId and ServicePrincipalId from the connection
                Write-Host "##vso[task.setvariable variable=tenantId]$($env:tenantId)"
                Write-Host "##vso[task.setvariable variable=servicePrincipalId;issecret=true]$($env:servicePrincipalId)"
                # AzurePipelinesCredential expect the GUID of the connection, not the name, so let's get it here
                Write-Host "##vso[task.setvariable variable=serviceConnectionId]$($env:SERVICE_CONNECTION_ID)"
                Get-ChildItem env:
        - task: UseDotNet@2
          # We need this step because the tested framework can be different from the build framework
          inputs:
            version: ${{variables.testFrameworkToInstall}}
          displayName: 'Install .NET Core sdk used in tests'
        - task: DotNetCoreCLI@2
          displayName: Test
          env:
            ${{ if eq(variables['System.TeamProject'], 'internal') }}:
              AZURE_TENANT_ID: $(tenantId)
              AZURE_CLIENT_ID: $(servicePrincipalId)
              SERVICE_CONNECTION_ID: $(serviceConnectionId)
              SYSTEM_ACCESSTOKEN: $(System.AccessToken)
          inputs:
            command: 'test'
            testRunTitle: ${{category}} on ${{framework}}
            arguments: '--no-build --logger "trx;LogFilePrefix=testresults-${{framework}}-${{category}}" --framework ${{framework}} --configuration "${{parameters.build_configuration}}" --filter Category=${{category}} --blame-crash-dump-type full --blame-hang-timeout 10m --blame-hang-dump-type full -- -parallel none -noshadow'
            publishTestResults: false # Doesn't merge correctly, use the explicit PublishTestResults task instead
        - task: PublishTestResults@2
          displayName: Publishing test results
          condition: succeededOrFailed()
          inputs:
            testResultsFormat: VSTest
            testResultsFiles: '**/testresults-*.trx'
            mergeTestResults: true
            testRunTitle: ${{category}} on ${{framework}}
        - task: CopyFiles@2
          displayName: 'Copy test logs'
          condition: succeededOrFailed()
          inputs:
            Contents: '**\*.log'
            TargetFolder: '$(Build.ArtifactStagingDirectory)/test_outputs_${{category}}_${{framework}}_$(Build.BuildId)'
            OverWrite: true
        - task: CopyFiles@2
          displayName: 'Copy crash dumps'
          condition: succeededOrFailed()
          inputs:
            Contents: '**\*.dmp'
            TargetFolder: '$(Build.ArtifactStagingDirectory)/test_outputs_${{category}}_${{framework}}_$(Build.BuildId)'
            OverWrite: true


================================================
FILE: .azure/pipelines/templates/vars.yaml
================================================
# It seems that variables must be defined in their own file when using templates

variables:
  build_flags: ' /m /v:m'
  solution: 'Orleans.slnx'
  codesign_runtime: '2.1.x'
  GDN_SUPPRESS_FORKED_BUILD_WARNING: true # Avoid warning "Guardian is not supported for builds from forked GitHub repositories"
  MicroBuildOutputFolderOverride: '$(Agent.TempDirectory)'
  # Auto-injection is not necessary because the tasks are explicitly included where they're enabled.
  Codeql.SkipTaskAutoInjection: true
  ${{ if eq(variables['System.TeamProject'], 'GitHub - PR Builds') }}:
    pool_name: 'orleans-pr-hosted-pool'
    pool_image: 'orleans-build-image'
    official_build: false
  ${{ else }}:
    ${{ if eq(variables['System.TeamProject'], 'internal') }}:
      pool_name: 'NetCore1ESPool-Internal'
      pool_image: '1es-windows-2022'
    ${{ else }}:
      pool_name: 'orleans-build-hosted-pool'
      pool_image: 'orleans-build-image'
    official_build: true
    # Do not let CodeQL3000 Extension gate scan frequency.
    Codeql.Cadence: 0
    # Enable CodeQL3000 unconditionally so it may be run on any branch.
    Codeql.Enabled: true
    # Ignore test and infrastructure code.
    Codeql.SourceRoot: src
    # CodeQL3000 needs this plumbed along as a variable to enable TSA. Don't use TSA in manual builds.
    Codeql.TSAEnabled: ${{ eq(variables['Build.Reason'], 'Schedule') }}
    # Default expects tsaoptions.json under SourceRoot.
    Codeql.TSAOptionsPath: '$(Build.SourcesDirectory)/.config/tsaoptions.json'
    # Do not slow builds down w/ the CodeQL3000 tasks unless this is a nightly build or it's requested.
    runCodeQL3000: ${{ or(eq(variables['Build.Reason'], 'Schedule'), and(eq(variables['Build.Reason'], 'Manual'), eq(parameters.runCodeQL3000, 'true'))) }}


================================================
FILE: .azuredevops/dependabot.yml
================================================
version: 2

# Disabling dependabot on Azure DevOps as this is a mirrored repo. Updates should go through github.
enable-campaigned-updates: false
enable-security-updates: false


================================================
FILE: .config/1espt/PipelineAutobaseliningConfig.yml
================================================
## DO NOT MODIFY THIS FILE MANUALLY. This is part of auto-baselining from 1ES Pipeline Templates. Go to [https://aka.ms/1espt-autobaselining] for more details.

pipelines:
  128:
    retail:
      source:
        credscan:
          lastModifiedDate: 2024-09-11
        eslint:
          lastModifiedDate: 2024-09-11
        armory:
          lastModifiedDate: 2024-09-11
      binary:
        credscan:
          lastModifiedDate: 2024-10-16
        binskim:
          lastModifiedDate: 2024-10-16
  1152:
    retail:
      source:
        credscan:
          lastModifiedDate: 2024-07-30
        eslint:
          lastModifiedDate: 2024-07-30
        psscriptanalyzer:
          lastModifiedDate: 2024-07-30
        armory:
          lastModifiedDate: 2024-07-30
      binary:
        credscan:
          lastModifiedDate: 2024-07-30
        binskim:
          lastModifiedDate: 2024-07-30
        spotbugs:
          lastModifiedDate: 2024-07-30
  1397:
    retail:
      source:
        credscan:
          lastModifiedDate: 2024-08-02
        eslint:
          lastModifiedDate: 2024-08-02
        psscriptanalyzer:
          lastModifiedDate: 2024-08-02
        armory:
          lastModifiedDate: 2024-08-02
      binary:
        credscan:
          lastModifiedDate: 2024-08-02
        binskim:
          lastModifiedDate: 2024-08-02
        spotbugs:
          lastModifiedDate: 2024-08-02

================================================
FILE: .config/guardian/.gdnbaselines
================================================
{
  "properties": {
    "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/baselines"
  },
  "version": "1.0.0",
  "baselines": {
    "default": {
      "name": "default",
      "createdDate": "2024-08-02 00:42:13Z",
      "lastUpdatedDate": "2024-08-02 00:42:13Z"
    }
  },
  "results": {
    "492bb9459285aa02a23f6a6779e5be2eb5abf65a32cc613280b7ed722cd4a98e": {
      "signature": "492bb9459285aa02a23f6a6779e5be2eb5abf65a32cc613280b7ed722cd4a98e",
      "alternativeSignatures": [],
      "target": "MicroBuild/Plugins/nuget.config",
      "line": 9,
      "memberOf": [
        "default"
      ],
      "tool": "credscan",
      "ruleId": "CSCAN-GENERAL0060",
      "createdDate": "2024-08-02 00:42:13Z",
      "expirationDate": "2025-01-19 00:45:11Z",
      "justification": "This error is baselined with an expiration date of 180 days from 2024-08-02 00:45:11Z"
    },
    "caaa03f03b1c7c073308d50dd596413120a75aa9f7188f1747597683f6e3b436": {
      "signature": "caaa03f03b1c7c073308d50dd596413120a75aa9f7188f1747597683f6e3b436",
      "alternativeSignatures": [],
      "target": "MicroBuild/Plugins/MicroBuild.Plugins.Signing.1.1.950/build/tools/dlabnugetcert.pfx",
      "line": 1,
      "memberOf": [
        "default"
      ],
      "tool": "credscan",
      "ruleId": "CSCAN-GENERAL0020",
      "createdDate": "2024-08-02 00:42:13Z",
      "expirationDate": "2025-01-19 00:45:11Z",
      "justification": "This error is baselined with an expiration date of 180 days from 2024-08-02 00:45:11Z"
    },
    "37bf0118bbd656e6d30e7e3f731bac3e88caa0067868f32526cba611de7fb34a": {
      "signature": "37bf0118bbd656e6d30e7e3f731bac3e88caa0067868f32526cba611de7fb34a",
      "alternativeSignatures": [],
      "target": "MicroBuild/Plugins/MicroBuild.Plugins.Signing.1.1.950/build/tools/dynamicsha1.pfx",
      "line": 1,
      "memberOf": [
        "default"
      ],
      "tool": "credscan",
      "ruleId": "CSCAN-GENERAL0020",
      "createdDate": "2024-08-02 00:42:13Z",
      "expirationDate": "2025-01-19 00:45:11Z",
      "justification": "This error is baselined with an expiration date of 180 days from 2024-08-02 00:45:11Z"
    },
    "0df13d5b0e02d27610c5d26fbf8ada8c29161046087a88e59971d1fdea20c88d": {
      "signature": "0df13d5b0e02d27610c5d26fbf8ada8c29161046087a88e59971d1fdea20c88d",
      "alternativeSignatures": [],
      "target": "MicroBuild/Plugins/MicroBuild.Plugins.Signing.1.1.950/build/tools/dynamicsha2.pfx",
      "line": 1,
      "memberOf": [
        "default"
      ],
      "tool": "credscan",
      "ruleId": "CSCAN-GENERAL0020",
      "createdDate": "2024-08-02 00:42:13Z",
      "expirationDate": "2025-01-19 00:45:11Z",
      "justification": "This error is baselined with an expiration date of 180 days from 2024-08-02 00:45:11Z"
    },
    "709b4fdd6d0142712f9f69b3192563e149ccc7cb8762be291bbb567bb2d42d86": {
      "signature": "709b4fdd6d0142712f9f69b3192563e149ccc7cb8762be291bbb567bb2d42d86",
      "alternativeSignatures": [],
      "target": "MicroBuild/Plugins/MicroBuild.Plugins.Signing.1.1.950/build/tools/testdlab.pfx",
      "line": 1,
      "memberOf": [
        "default"
      ],
      "tool": "credscan",
      "ruleId": "CSCAN-GENERAL0020",
      "createdDate": "2024-08-02 00:42:13Z",
      "expirationDate": "2025-01-19 00:45:11Z",
      "justification": "This error is baselined with an expiration date of 180 days from 2024-08-02 00:45:11Z"
    },
    "4eaff6af7a166277db7356b713f44571532010adcfa3b81e77d34370f054a692": {
      "signature": "4eaff6af7a166277db7356b713f44571532010adcfa3b81e77d34370f054a692",
      "alternativeSignatures": [],
      "target": "MicroBuild/Plugins/MicroBuild.Plugins.Signing.1.1.950/build/tools/testdlabsha2.pfx",
      "line": 1,
      "memberOf": [
        "default"
      ],
      "tool": "credscan",
      "ruleId": "CSCAN-GENERAL0020",
      "createdDate": "2024-08-02 00:42:13Z",
      "expirationDate": "2025-01-19 00:45:11Z",
      "justification": "This error is baselined with an expiration date of 180 days from 2024-08-02 00:45:11Z"
    },
    "bf291646a1ae462fe07d1e4fe7cf682ececdbac480c9242a9fe60b5607842dbc": {
      "signature": "bf291646a1ae462fe07d1e4fe7cf682ececdbac480c9242a9fe60b5607842dbc",
      "alternativeSignatures": [],
      "target": "MicroBuild/Plugins/MicroBuild.Plugins.Signing.1.1.950/build/tools/vsmsappx.pfx",
      "line": 1,
      "memberOf": [
        "default"
      ],
      "tool": "credscan",
      "ruleId": "CSCAN-GENERAL0020",
      "createdDate": "2024-08-02 00:42:13Z",
      "expirationDate": "2025-01-19 00:45:11Z",
      "justification": "This error is baselined with an expiration date of 180 days from 2024-08-02 00:45:11Z"
    },
    "f85ca33e9ffc2662390548a77947fa9c1c0a66aa194a61d381fdbce391769435": {
      "signature": "f85ca33e9ffc2662390548a77947fa9c1c0a66aa194a61d381fdbce391769435",
      "alternativeSignatures": [],
      "target": "MicroBuild/Plugins/MicroBuild.Plugins.Signing.1.1.950/build/tools/WinBlue.pfx",
      "line": 1,
      "memberOf": [
        "default"
      ],
      "tool": "credscan",
      "ruleId": "CSCAN-GENERAL0020",
      "createdDate": "2024-08-02 00:42:13Z",
      "expirationDate": "2025-01-19 00:45:11Z",
      "justification": "This error is baselined with an expiration date of 180 days from 2024-08-02 00:45:11Z"
    },
    "f64a177dcdd266dfecc33e3a55c01c58ec6c097f3453a70cf7b9be0bb40ea30c": {
      "signature": "f64a177dcdd266dfecc33e3a55c01c58ec6c097f3453a70cf7b9be0bb40ea30c",
      "alternativeSignatures": [],
      "target": "MicroBuild/Plugins/MicroBuild.Plugins.Signing.1.1.950/build/tools/WP223.pfx",
      "line": 1,
      "memberOf": [
        "default"
      ],
      "tool": "credscan",
      "ruleId": "CSCAN-GENERAL0020",
      "createdDate": "2024-08-02 00:42:13Z",
      "expirationDate": "2025-01-19 00:45:11Z",
      "justification": "This error is baselined with an expiration date of 180 days from 2024-08-02 00:45:11Z"
    },
    "26564b328f56f22a3050e620db0d9bc693ba20720e04e99e76625da1bacc92b8": {
      "signature": "26564b328f56f22a3050e620db0d9bc693ba20720e04e99e76625da1bacc92b8",
      "alternativeSignatures": [],
      "target": "MicroBuild/Plugins/MicroBuild.Plugins.Signing.1.1.950/build/tools/MobileTools/7Sign/tcb.pfx",
      "line": 1,
      "memberOf": [
        "default"
      ],
      "tool": "credscan",
      "ruleId": "CSCAN-GENERAL0020",
      "createdDate": "2024-08-02 00:42:13Z",
      "expirationDate": "2025-01-19 00:45:11Z",
      "justification": "This error is baselined with an expiration date of 180 days from 2024-08-02 00:45:11Z"
    }
  }
}

================================================
FILE: .config/tsaoptions.json
================================================
{
  "areaPath": "DevDiv\\ASP.NET Core\\Orleans",
  "codebaseName": "Orleans",
  "instanceUrl": "https://devdiv.visualstudio.com/",
  "iterationPath": "DevDiv",
  "notificationAliases": [
    "bpetit@microsoft.com",
    "reuben.bond@microsoft.com"
  ],
  "projectName": "DEVDIV",
  "repositoryName": "Orleans",
  "template": "TFSDEVDIV"
}


================================================
FILE: .devcontainer/devcontainer.json
================================================
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/devcontainers/images/tree/main/src/dotnet
{
	"name": "Orleans",
	"image": "mcr.microsoft.com/devcontainers/dotnet:latest",

	// Features to add to the dev container. More info: https://containers.dev/features
	"features": {
		"ghcr.io/devcontainers/features/docker-in-docker": {},
		"ghcr.io/devcontainers/features/github-cli:1": {}
	},

	"hostRequirements": {
		"cpus": 4,
		"memory": "8gb",
		"storage": "32gb"
	},

	"customizations": {
		"vscode": {
			"extensions": [
				"ms-dotnettools.csdevkit",
				"GitHub.copilot"
			],
			"settings": {
				"remote.autoForwardPorts": true,
				"remote.autoForwardPortsSource": "hybrid",
				"remote.otherPortsAttributes": {
					"onAutoForward": "ignore"
				},
				"dotnet.defaultSolution": "Orleans.slnx"
			}
		}
	},

	"onCreateCommand": "dotnet restore",
	"postStartCommand": "dotnet dev-certs https --trust || true"
}


================================================
FILE: .editorconfig
================================================
; EditorConfig to support per-solution formatting.
; Use the EditorConfig VS add-in to make this work.
; http://editorconfig.org/
;
; Here are some resources for what's supported for .NET/C#
; https://kent-boogaart.com/blog/editorconfig-reference-for-c-developers
; https://learn.microsoft.com/visualstudio/ide/editorconfig-code-style-settings-reference
;
; Be **careful** editing this because some of the rules don't support adding a severity level
; For instance if you change to `dotnet_sort_system_directives_first = true:suggestion` (adding `:warning`)
; then the rule will be silently ignored.

; This is the default for the codeline.
root = true

[*]
indent_style = space
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
spelling_exclusion_path = spelling.dic

# Verify settings
[*.{received,verified}.{cs}]
charset = "utf-8-bom"
end_of_line = lf
indent_size = unset
indent_style = unset
insert_final_newline = false
tab_width = unset
trim_trailing_whitespace = false

[*.{cs,csx,cake}]
indent_size = 4
dotnet_sort_system_directives_first = true

# Don't use this. qualifier
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion

# use int x = .. over Int32
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion

# use int.MaxValue over Int32.MaxValue
dotnet_style_predefined_type_for_member_access = true:suggestion

# Require var all the time.
csharp_style_var_for_built_in_types = true:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_style_var_elsewhere = true:suggestion

# Disallow throw expressions.
csharp_style_throw_expression = false:suggestion

# Newline settings
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true

# Namespace settings
csharp_style_namespace_declarations = file_scoped

# Brace settings
csharp_prefer_braces = true # Prefer curly braces even for one line of code

dotnet_sort_system_directives_first = true
dotnet_style_coalesce_expression = true : suggestion
dotnet_style_collection_initializer = true : suggestion
dotnet_style_explicit_tuple_names = true : suggestion
dotnet_style_null_propagation = true : suggestion
dotnet_style_object_initializer = true : suggestion
dotnet_style_parentheses_in_arithmetic_binary_operators =never_if_unnecessary:suggestion
dotnet_style_parentheses_in_other_binary_operators =never_if_unnecessary:suggestion
dotnet_style_parentheses_in_other_operators =never_if_unnecessary:suggestion
dotnet_style_parentheses_in_relational_binary_operators =never_if_unnecessary:suggestion
dotnet_style_predefined_type_for_locals_parameters_members = true : suggestion
dotnet_style_predefined_type_for_member_access = true : suggestion
dotnet_style_prefer_auto_properties = true : suggestion
dotnet_style_prefer_compound_assignment = true : suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true : suggestion
dotnet_style_prefer_conditional_expression_over_return = true : suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true : suggestion
dotnet_style_prefer_inferred_tuple_names = true : suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true : suggestion
dotnet_style_qualification_for_event =false:suggestion
dotnet_style_qualification_for_field =false:suggestion
dotnet_style_qualification_for_method =false:suggestion
dotnet_style_qualification_for_property =false:suggestion
dotnet_style_require_accessibility_modifiers = always : suggestion

# Naming Symbols
# constant_fields - Define constant fields
dotnet_naming_symbols.constant_fields.applicable_kinds = field
dotnet_naming_symbols.constant_fields.required_modifiers = const
# non_private_readonly_fields - Define public, internal and protected readonly fields
dotnet_naming_symbols.non_private_readonly_fields.applicable_accessibilities = public, internal, protected
dotnet_naming_symbols.non_private_readonly_fields.applicable_kinds = field
dotnet_naming_symbols.non_private_readonly_fields.required_modifiers = readonly
# static_readonly_fields - Define static and readonly fields
dotnet_naming_symbols.static_readonly_fields.applicable_kinds = field
dotnet_naming_symbols.static_readonly_fields.required_modifiers = static, readonly
# private_readonly_fields - Define private readonly fields
dotnet_naming_symbols.private_readonly_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_readonly_fields.applicable_kinds = field
dotnet_naming_symbols.private_readonly_fields.required_modifiers = readonly
# public_internal_fields - Define public and internal fields
dotnet_naming_symbols.public_internal_fields.applicable_accessibilities = public, internal
dotnet_naming_symbols.public_internal_fields.applicable_kinds = field
# private_protected_fields - Define private and protected fields
dotnet_naming_symbols.private_protected_fields.applicable_accessibilities = private, protected
dotnet_naming_symbols.private_protected_fields.applicable_kinds = field
# public_symbols - Define any public symbol
dotnet_naming_symbols.public_symbols.applicable_accessibilities = public, internal, protected, protected_internal
dotnet_naming_symbols.public_symbols.applicable_kinds = method, property, event, delegate
# parameters - Defines any parameter
dotnet_naming_symbols.parameters.applicable_kinds = parameter
# non_interface_types - Defines class, struct, enum and delegate types
dotnet_naming_symbols.non_interface_types.applicable_kinds = class, struct, enum, delegate
# interface_types - Defines interfaces
dotnet_naming_symbols.interface_types.applicable_kinds = interface
# private_fields - Defines private fields
dotnet_naming_symbols.private_fields.applicable_kinds = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private

# Naming Styles
# camel_case - Define the camelCase style
dotnet_naming_style.camel_case.capitalization = camel_case
# pascal_case - Define the Pascal_case style
dotnet_naming_style.pascal_case.capitalization = pascal_case
# first_upper - The first character must start with an upper-case character
dotnet_naming_style.first_upper.capitalization = first_word_upper
# prefix_interface_interface_with_i - Interfaces must be PascalCase and the first character of an interface must be an 'I'
dotnet_naming_style.prefix_interface_interface_with_i.capitalization = pascal_case
dotnet_naming_style.prefix_interface_interface_with_i.required_prefix = I
# prefix_underscore_camel_case - Private fields must be prefixed with an '_'
dotnet_naming_style.prefix_underscore_camel_case.capitalization = camel_case
dotnet_naming_style.prefix_underscore_camel_case.required_prefix = _

# Naming Rules
# Constant fields must be PascalCase
dotnet_naming_rule.constant_fields_must_be_pascal_case.severity = suggestion
dotnet_naming_rule.constant_fields_must_be_pascal_case.symbols = constant_fields
dotnet_naming_rule.constant_fields_must_be_pascal_case.style = pascal_case
# Public, internal and protected readonly fields must be PascalCase
dotnet_naming_rule.non_private_readonly_fields_must_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_private_readonly_fields_must_be_pascal_case.symbols = non_private_readonly_fields
dotnet_naming_rule.non_private_readonly_fields_must_be_pascal_case.style = pascal_case
# Static readonly fields must be PascalCase
dotnet_naming_rule.static_readonly_fields_must_be_pascal_case.severity = suggestion
dotnet_naming_rule.static_readonly_fields_must_be_pascal_case.symbols = static_readonly_fields
dotnet_naming_rule.static_readonly_fields_must_be_pascal_case.style = pascal_case
# Private readonly fields must be camelCase
dotnet_naming_rule.private_readonly_fields_must_be_camel_case.severity = suggestion
dotnet_naming_rule.private_readonly_fields_must_be_camel_case.symbols = private_readonly_fields
dotnet_naming_rule.private_readonly_fields_must_be_camel_case.style = prefix_underscore_camel_case
# Public and internal fields must be PascalCase
dotnet_naming_rule.public_internal_fields_must_be_pascal_case.severity = suggestion
dotnet_naming_rule.public_internal_fields_must_be_pascal_case.symbols = public_internal_fields
dotnet_naming_rule.public_internal_fields_must_be_pascal_case.style = pascal_case
# Private and protected fields must be camelCase
dotnet_naming_rule.private_protected_fields_must_be_camel_case.severity = suggestion
dotnet_naming_rule.private_protected_fields_must_be_camel_case.symbols = private_protected_fields
dotnet_naming_rule.private_protected_fields_must_be_camel_case.style = camel_case
# Public members must be capitalized
dotnet_naming_rule.public_members_must_be_capitalized.severity = suggestion
dotnet_naming_rule.public_members_must_be_capitalized.symbols = public_symbols
dotnet_naming_rule.public_members_must_be_capitalized.style = first_upper
# Parameters must be camelCase
dotnet_naming_rule.parameters_must_be_camel_case.severity = suggestion
dotnet_naming_rule.parameters_must_be_camel_case.symbols = parameters
dotnet_naming_rule.parameters_must_be_camel_case.style = camel_case
# Class, struct, enum and delegates must be PascalCase
dotnet_naming_rule.non_interface_types_must_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_interface_types_must_be_pascal_case.symbols = non_interface_types
dotnet_naming_rule.non_interface_types_must_be_pascal_case.style = pascal_case
# Interfaces must be PascalCase and start with an 'I'
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.severity = suggestion
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.symbols = interface_types
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.style = prefix_interface_interface_with_i
# Private fields must begin with an '_'
dotnet_naming_rule.private_members_with_underscore.symbols = private_fields
dotnet_naming_rule.private_members_with_underscore.style = prefix_underscore_camel_case
dotnet_naming_rule.private_members_with_underscore.severity = suggestion

# Indentation Options
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_labels = flush_left
csharp_indent_switch_labels = true
# Style Options
csharp_style_conditional_delegate_call = true : suggestion
csharp_style_deconstructed_variable_declaration = true : suggestion
csharp_style_expression_bodied_accessors = true : suggestion
csharp_style_expression_bodied_constructors = false : silent
csharp_style_expression_bodied_indexers = true : suggestion
csharp_style_expression_bodied_methods = when_on_single_line : suggestion
csharp_style_expression_bodied_operators = when_on_single_line : suggestion
csharp_style_expression_bodied_properties = true : suggestion
csharp_style_expression_bodied_lambdas = true : suggestion
csharp_style_expression_bodied_local_functions = when_on_single_line : suggestion
csharp_style_inlined_variable_declaration = true : suggestion
csharp_style_pattern_local_over_anonymous_function = true : suggestion
csharp_style_pattern_matching_over_as_with_null_check = true : suggestion
csharp_style_pattern_matching_over_is_with_cast_check = true : suggestion
csharp_style_throw_expression = true : suggestion
csharp_style_var_elsewhere = true : suggestion
csharp_style_var_for_built_in_types = true : suggestion
csharp_style_var_when_type_is_apparent = true : suggestion
csharp_style_namespace_declarations = file_scoped

# New Line Options
csharp_new_line_before_catch = true
csharp_new_line_before_else = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = all
csharp_new_line_between_query_expression_clauses = true
# Spacing Options
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = do_not_ignore
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false
# Wrapping Options
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = true
# Blocks
csharp_prefer_braces = true:none
# Expressions
csharp_prefer_simple_default_expression = true:suggestion

[*.{xml,config,*proj,nuspec,props,resx,targets,yml,tasks}]
indent_size = 2

# Xml config files
[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
indent_size = 2

[*.json]
indent_size = 2

[*.{ps1,psm1}]
indent_size = 4

[*.sh]
indent_size = 4
end_of_line = lf

[*.{razor,cshtml}]
charset = utf-8-bom

[*.{cs,vb}]

# SYSLIB1054: Use 'LibraryImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time
dotnet_diagnostic.SYSLIB1054.severity = suggestion

# CA1018: Mark attributes with AttributeUsageAttribute
dotnet_diagnostic.CA1018.severity = suggestion

# CA1047: Do not declare protected member in sealed type
dotnet_diagnostic.CA1047.severity = suggestion

# CA1305: Specify IFormatProvider
dotnet_diagnostic.CA1305.severity = suggestion

# CA1507: Use nameof to express symbol names
dotnet_diagnostic.CA1507.severity = suggestion

# CA1510: Use ArgumentNullException throw helper
dotnet_diagnostic.CA1510.severity = suggestion

# CA1511: Use ArgumentException throw helper
dotnet_diagnostic.CA1511.severity = suggestion

# CA1512: Use ArgumentOutOfRangeException throw helper
dotnet_diagnostic.CA1512.severity = suggestion

# CA1513: Use ObjectDisposedException throw helper
dotnet_diagnostic.CA1513.severity = suggestion

# CA1725: Parameter names should match base declaration
dotnet_diagnostic.CA1725.severity = suggestion

# CA1802: Use literals where appropriate
dotnet_diagnostic.CA1802.severity = suggestion

# CA1805: Do not initialize unnecessarily
dotnet_diagnostic.CA1805.severity = suggestion

# CA1810: Do not initialize unnecessarily
dotnet_diagnostic.CA1810.severity = suggestion

# CA1821: Remove empty Finalizers
dotnet_diagnostic.CA1821.severity = suggestion

# CA1822: Make member static
dotnet_diagnostic.CA1822.severity = suggestion
dotnet_code_quality.CA1822.api_surface = private, internal

# CA1823: Avoid unused private fields
dotnet_diagnostic.CA1823.severity = suggestion

# CA1825: Avoid zero-length array allocations
dotnet_diagnostic.CA1825.severity = suggestion

# CA1826: Do not use Enumerable methods on indexable collections. Instead use the collection directly
dotnet_diagnostic.CA1826.severity = suggestion

# CA1827: Do not use Count() or LongCount() when Any() can be used
dotnet_diagnostic.CA1827.severity = suggestion

# CA1828: Do not use CountAsync() or LongCountAsync() when AnyAsync() can be used
dotnet_diagnostic.CA1828.severity = suggestion

# CA1829: Use Length/Count property instead of Count() when available
dotnet_diagnostic.CA1829.severity = suggestion

# CA1830: Prefer strongly-typed Append and Insert method overloads on StringBuilder
dotnet_diagnostic.CA1830.severity = suggestion

# CA1831: Use AsSpan or AsMemory instead of Range-based indexers when appropriate
dotnet_diagnostic.CA1831.severity = suggestion

# CA1832: Use AsSpan or AsMemory instead of Range-based indexers when appropriate
dotnet_diagnostic.CA1832.severity = suggestion

# CA1833: Use AsSpan or AsMemory instead of Range-based indexers when appropriate
dotnet_diagnostic.CA1833.severity = suggestion

# CA1834: Consider using 'StringBuilder.Append(char)' when applicable
dotnet_diagnostic.CA1834.severity = suggestion

# CA1835: Prefer the 'Memory'-based overloads for 'ReadAsync' and 'WriteAsync'
dotnet_diagnostic.CA1835.severity = suggestion

# CA1836: Prefer IsEmpty over Count
dotnet_diagnostic.CA1836.severity = suggestion

# CA1837: Use 'Environment.ProcessId'
dotnet_diagnostic.CA1837.severity = suggestion

# CA1838: Avoid 'StringBuilder' parameters for P/Invokes
dotnet_diagnostic.CA1838.severity = suggestion

# CA1839: Use 'Environment.ProcessPath'
dotnet_diagnostic.CA1839.severity = suggestion

# CA1840: Use 'Environment.CurrentManagedThreadId'
dotnet_diagnostic.CA1840.severity = suggestion

# CA1841: Prefer Dictionary.Contains methods
dotnet_diagnostic.CA1841.severity = suggestion

# CA1842: Do not use 'WhenAll' with a single task
dotnet_diagnostic.CA1842.severity = suggestion

# CA1843: Do not use 'WaitAll' with a single task
dotnet_diagnostic.CA1843.severity = suggestion

# CA1844: Provide memory-based overrides of async methods when subclassing 'Stream'
dotnet_diagnostic.CA1844.severity = suggestion

# CA1845: Use span-based 'string.Concat'
dotnet_diagnostic.CA1845.severity = suggestion

# CA1846: Prefer AsSpan over Substring
dotnet_diagnostic.CA1846.severity = suggestion

# CA1847: Use string.Contains(char) instead of string.Contains(string) with single characters
dotnet_diagnostic.CA1847.severity = suggestion

# CA1852: Seal internal types
dotnet_diagnostic.CA1852.severity = suggestion

# CA1854: Prefer the IDictionary.TryGetValue(TKey, out TValue) method
dotnet_diagnostic.CA1854.severity = suggestion

# CA1855: Prefer 'Clear' over 'Fill'
dotnet_diagnostic.CA1855.severity = suggestion

# CA1856: Incorrect usage of ConstantExpected attribute
dotnet_diagnostic.CA1856.severity = error

# CA1857: A constant is expected for the parameter
dotnet_diagnostic.CA1857.severity = suggestion

# CA1858: Use 'StartsWith' instead of 'IndexOf'
dotnet_diagnostic.CA1858.severity = suggestion

# CA2007: Consider calling ConfigureAwait on the awaited task
dotnet_diagnostic.CA2007.severity = silent

# CA2008: Do not create tasks without passing a TaskScheduler
dotnet_diagnostic.CA2008.severity = suggestion

# CA2009: Do not call ToImmutableCollection on an ImmutableCollection value
dotnet_diagnostic.CA2009.severity = suggestion

# CA2011: Avoid infinite recursion
dotnet_diagnostic.CA2011.severity = suggestion

# CA2012: Use ValueTask correctly
dotnet_diagnostic.CA2012.severity = suggestion

# CA2013: Do not use ReferenceEquals with value types
dotnet_diagnostic.CA2013.severity = suggestion

# CA2014: Do not use stackalloc in loops.
dotnet_diagnostic.CA2014.severity = suggestion

# CA2016: Forward the 'CancellationToken' parameter to methods that take one
dotnet_diagnostic.CA2016.severity = suggestion

# CA2200: Rethrow to preserve stack details
dotnet_diagnostic.CA2200.severity = suggestion

# CA2201: Do not raise reserved exception types
dotnet_diagnostic.CA2201.severity = suggestion

# CA2208: Instantiate argument exceptions correctly
dotnet_diagnostic.CA2208.severity = suggestion

# CA2245: Do not assign a property to itself
dotnet_diagnostic.CA2245.severity = suggestion

# CA2246: Assigning symbol and its member in the same statement
dotnet_diagnostic.CA2246.severity = suggestion

# CA2249: Use string.Contains instead of string.IndexOf to improve readability.
dotnet_diagnostic.CA2249.severity = suggestion

# IDE0005: Remove unnecessary usings
dotnet_diagnostic.IDE0005.severity = suggestion

# IDE0011: Curly braces to surround blocks of code
dotnet_diagnostic.IDE0011.severity = suggestion

# IDE0020: Use pattern matching to avoid is check followed by a cast (with variable)
dotnet_diagnostic.IDE0020.severity = suggestion

# IDE0029: Use coalesce expression (non-nullable types)
dotnet_diagnostic.IDE0029.severity = suggestion

# IDE0030: Use coalesce expression (nullable types)
dotnet_diagnostic.IDE0030.severity = suggestion

# IDE0031: Use null propagation
dotnet_diagnostic.IDE0031.severity = suggestion

# IDE0035: Remove unreachable code
dotnet_diagnostic.IDE0035.severity = suggestion

# IDE0036: Order modifiers
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
dotnet_diagnostic.IDE0036.severity = suggestion

# IDE0038: Use pattern matching to avoid is check followed by a cast (without variable)
dotnet_diagnostic.IDE0038.severity = suggestion

# IDE0043: Format string contains invalid placeholder
dotnet_diagnostic.IDE0043.severity = suggestion

# IDE0044: Make field readonly
dotnet_diagnostic.IDE0044.severity = suggestion

# IDE0051: Remove unused private members
dotnet_diagnostic.IDE0051.severity = suggestion

# IDE0055: All formatting rules
dotnet_diagnostic.IDE0055.severity = suggestion

# IDE0059: Unnecessary assignment to a value
dotnet_diagnostic.IDE0059.severity = suggestion

# IDE0060: Remove unused parameter
dotnet_code_quality_unused_parameters = non_public
dotnet_diagnostic.IDE0060.severity = suggestion

# IDE0062: Make local function static
dotnet_diagnostic.IDE0062.severity = suggestion

# IDE0073: File header
#dotnet_diagnostic.IDE0073.severity = silent
#file_header_template = Licensed to the .NET Foundation under one or more agreements.\nThe .NET Foundation licenses this file to you under the MIT license.

# IDE1006: Required naming style
dotnet_diagnostic.IDE1006.severity = suggestion

# IDE0161: Convert to file-scoped namespace
dotnet_diagnostic.IDE0161.severity = suggestion

# IDE0200: Lambda expression can be removed
dotnet_diagnostic.IDE0200.severity = suggestion

# IDE2000: Disallow multiple blank lines
dotnet_style_allow_multiple_blank_lines_experimental = false
dotnet_diagnostic.IDE2000.severity = suggestion

# CA1018: Mark attributes with AttributeUsageAttribute
dotnet_diagnostic.CA1018.severity = suggestion
# CA1507: Use nameof to express symbol names
dotnet_diagnostic.CA1507.severity = suggestion
# CA1510: Use ArgumentNullException throw helper
dotnet_diagnostic.CA1510.severity = suggestion
# CA1511: Use ArgumentException throw helper
dotnet_diagnostic.CA1511.severity = suggestion
# CA1512: Use ArgumentOutOfRangeException throw helper
dotnet_diagnostic.CA1512.severity = suggestion
# CA1513: Use ObjectDisposedException throw helper
dotnet_diagnostic.CA1513.severity = suggestion
# CA1802: Use literals where appropriate
dotnet_diagnostic.CA1802.severity = suggestion
# CA1805: Do not initialize unnecessarily
dotnet_diagnostic.CA1805.severity = suggestion
# CA1810: Do not initialize unnecessarily
dotnet_diagnostic.CA1810.severity = suggestion
# CA1822: Make member static
dotnet_diagnostic.CA1822.severity = suggestion
# CA1823: Avoid zero-length array allocations
dotnet_diagnostic.CA1825.severity = suggestion
# CA1826: Do not use Enumerable methods on indexable collections. Instead use the collection directly
dotnet_diagnostic.CA1826.severity = suggestion
# CA1827: Do not use Count() or LongCount() when Any() can be used
dotnet_diagnostic.CA1827.severity = suggestion
# CA1829: Use Length/Count property instead of Count() when available
dotnet_diagnostic.CA1829.severity = suggestion
# CA1831: Use AsSpan or AsMemory instead of Range-based indexers when appropriate
dotnet_diagnostic.CA1831.severity = suggestion
# CA1832: Use AsSpan or AsMemory instead of Range-based indexers when appropriate
dotnet_diagnostic.CA1832.severity = suggestion
# CA1833: Use AsSpan or AsMemory instead of Range-based indexers when appropriate
dotnet_diagnostic.CA1833.severity = suggestion
# CA1834: Consider using 'StringBuilder.Append(char)' when applicable
dotnet_diagnostic.CA1834.severity = suggestion
# CA1835: Prefer the 'Memory'-based overloads for 'ReadAsync' and 'WriteAsync'
dotnet_diagnostic.CA1835.severity = suggestion
# CA1837: Use 'Environment.ProcessId'
dotnet_diagnostic.CA1837.severity = suggestion
# CA1838: Avoid 'StringBuilder' parameters for P/Invokes
dotnet_diagnostic.CA1838.severity = suggestion
# CA1841: Prefer Dictionary.Contains methods
dotnet_diagnostic.CA1841.severity = suggestion
# CA1844: Provide memory-based overrides of async methods when subclassing 'Stream'
dotnet_diagnostic.CA1844.severity = suggestion
# CA1845: Use span-based 'string.Concat'
dotnet_diagnostic.CA1845.severity = suggestion
# CA1846: Prefer AsSpan over Substring
dotnet_diagnostic.CA1846.severity = suggestion
# CA1847: Use string.Contains(char) instead of string.Contains(string) with single characters
dotnet_diagnostic.CA1847.severity = suggestion
# CA1852: Seal internal types
dotnet_diagnostic.CA1852.severity = suggestion
# CA1854: Prefer the IDictionary.TryGetValue(TKey, out TValue) method
dotnet_diagnostic.CA1854.severity = suggestion
# CA1855: Prefer 'Clear' over 'Fill'
dotnet_diagnostic.CA1855.severity = suggestion
# CA1856: Incorrect usage of ConstantExpected attribute
dotnet_diagnostic.CA1856.severity = suggestion
# CA1857: A constant is expected for the parameter
dotnet_diagnostic.CA1857.severity = suggestion
# CA1858: Use 'StartsWith' instead of 'IndexOf'
dotnet_diagnostic.CA1858.severity = suggestion
# CA2007: Consider calling ConfigureAwait on the awaited task
dotnet_diagnostic.CA2007.severity = suggestion
# CA2008: Do not create tasks without passing a TaskScheduler
dotnet_diagnostic.CA2008.severity = suggestion
# CA2012: Use ValueTask correctly
dotnet_diagnostic.CA2012.severity = suggestion
# CA2201: Do not raise reserved exception types
dotnet_diagnostic.CA2201.severity = suggestion
# CA2249: Use string.Contains instead of string.IndexOf to improve readability.
dotnet_diagnostic.CA2249.severity = suggestion
# IDE0005: Remove unnecessary usings
dotnet_diagnostic.IDE0005.severity = suggestion
# IDE0020: Use pattern matching to avoid is check followed by a cast (with variable)
dotnet_diagnostic.IDE0020.severity = suggestion
# IDE0029: Use coalesce expression (non-nullable types)
dotnet_diagnostic.IDE0029.severity = suggestion
# IDE0030: Use coalesce expression (nullable types)
dotnet_diagnostic.IDE0030.severity = suggestion
# IDE0031: Use null propagation
dotnet_diagnostic.IDE0031.severity = suggestion
# IDE0038: Use pattern matching to avoid is check followed by a cast (without variable)
dotnet_diagnostic.IDE0038.severity = suggestion
# IDE0044: Make field readonly
dotnet_diagnostic.IDE0044.severity = suggestion
# IDE0051: Remove unused private members
dotnet_diagnostic.IDE0051.severity = suggestion
# IDE0059: Unnecessary assignment to a value
dotnet_diagnostic.IDE0059.severity = suggestion
# IDE0060: Remove unused parameters
dotnet_diagnostic.IDE0060.severity = suggestion
# IDE0062: Make local function static
dotnet_diagnostic.IDE0062.severity = suggestion
# IDE0200: Lambda expression can be removed
dotnet_diagnostic.IDE0200.severity = suggestion
# CA2016: Forward the 'CancellationToken' parameter to methods that take one
dotnet_diagnostic.CA2016.severity = suggestion

# RS0041: Public members should not use oblivious types
dotnet_diagnostic.RS0041.severity = suggestion

# RS0026: Do not add multiple public overloads with optional parameters
dotnet_diagnostic.RS0026.severity = suggestion

# RS0027: API with optional parameter(s) should have the most parameters amongst its public overloads
dotnet_diagnostic.RS0027.severity = suggestion


================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs     diff=csharp

# Standard to msysgit
*.doc	 diff=astextplain
*.DOC	 diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot  diff=astextplain
*.DOT  diff=astextplain
*.pdf  diff=astextplain
*.PDF	 diff=astextplain
*.rtf	 diff=astextplain
*.RTF	 diff=astextplain

# Verify.Xunit
*.verified.cs text eol=lf working-tree-encoding=UTF-8


================================================
FILE: .github/copilot-instructions.md
================================================
## General

* Make only high confidence suggestions when reviewing code changes.
* Always use the latest version C#, currently C# 13 features.
* Never change global.json unless explicitly asked to.
* Orleans is a distributed actor framework for .NET - understand the grain-based programming model when making changes.

## Build and Test

### Building the Project

* Use `dotnet build` to build the solution (Orleans.slnx).
* The solution uses .NET SDK 9.0.306 as specified in global.json.
* Build scripts are available: `Build.cmd` (Windows) or `build.ps1` (PowerShell).
* Debug builds include a date suffix in version numbers.

### Running Tests

* Use `dotnet test` to run tests.
* Test.cmd provides a convenient way to run all tests on Windows.
* Tests are organized by category: BVT, SlowBVT, Functional, and provider-specific categories.
* Some tests require external dependencies (Redis, Cassandra, Azure, AWS, etc.) - check the CI workflow for setup examples.
* Use `--filter` to run specific test categories, e.g., `dotnet test --filter "Category=BVT"`.

## Formatting

* Apply code-formatting style defined in `.editorconfig`.
* Prefer file-scoped namespace declarations and single-line using directives.
* Insert a newline before the opening curly brace of any code block (e.g., after `if`, `for`, `while`, `foreach`, `using`, `try`, etc.).
* Ensure that the final return statement of a method is on its own line.
* Use pattern matching and switch expressions wherever possible.
* Use `nameof` instead of string literals when referring to member names.
* Ensure that XML doc comments are created for any public APIs. When applicable, include `<example>` and `<code>` documentation in the comments.

### Nullable Reference Types

* Declare variables non-nullable, and check for `null` at entry points.
* Always use `is null` or `is not null` instead of `== null` or `!= null`.
* Trust the C# null annotations and don't add null checks when the type system says a value cannot be null.

## Testing

* We use xUnit SDK v3 for tests.
* Do not emit "Act", "Arrange" or "Assert" comments.
* Use NSubstitute for mocking in tests.
* Copy existing style in nearby files for test method names and capitalization.
* Tests are located in the `test/` directory, organized by functionality (e.g., DefaultCluster.Tests, NonSilo.Tests, Extensions/).

## Repository Structure

* **src/** - Core Orleans runtime, serialization, client, hosting, and provider implementations.
  * Orleans.Core - Core runtime abstractions and implementations
  * Orleans.Serialization - High-performance serialization framework
  * Orleans.Client - Client-side grain communication
  * Orleans.Runtime - Server-side runtime implementation
  * Orleans.Hosting.Kubernetes - Kubernetes hosting support
  * Provider subdirectories: AWS/, Azure/, AdoNet/, Cassandra/, Redis/ for various storage and clustering providers
* **test/** - All test projects, mirroring the src/ structure.
* **samples/** - Example applications demonstrating Orleans usage.
* **playground/** - Experimental code and development workspace.

## Common Patterns

* Grains are the fundamental building blocks - they have stable identity, behavior, and state.
* Grain interfaces inherit from IGrain or IGrainWithGuidKey/IGrainWithStringKey/etc.
* Use async/await consistently - Orleans is built on asynchronous patterns.
* Follow the Virtual Actor Model - grains are automatically activated/deactivated by the runtime.


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "dotnet-sdk"
    directory: "/"
    schedule:
      interval: "weekly"
      day: "wednesday"
    ignore:
      - dependency-name: "*"
        update-types:
          - "version-update:semver-major"


================================================
FILE: .github/eventhubs-emulator/Config.json
================================================
{
  "UserConfig": {
    "NamespaceConfig": [
      {
        "Type": "EventHub",
        "Name": "emulatorNs1",
        "Entities": [
          {
            "Name": "ehorleanstest",
            "PartitionCount": "4",
            "ConsumerGroups": [
              {
                "Name": "orleansnightly"
              }
            ]
          },
          {
            "Name": "ehorleanstest2",
            "PartitionCount": "4",
            "ConsumerGroups": [
              {
                "Name": "orleansnightly"
              }
            ]
          },
          {
            "Name": "ehorleanstest3",
            "PartitionCount": "4",
            "ConsumerGroups": [
              {
                "Name": "orleansnightly"
              }
            ]
          },
          {
            "Name": "ehorleanstest4",
            "PartitionCount": "4",
            "ConsumerGroups": [
              {
                "Name": "orleansnightly"
              }
            ]
          },
          {
            "Name": "ehorleanstest5",
            "PartitionCount": "4",
            "ConsumerGroups": [
              {
                "Name": "orleansnightly"
              }
            ]
          },
          {
            "Name": "ehorleanstest6",
            "PartitionCount": "4",
            "ConsumerGroups": [
              {
                "Name": "orleansnightly"
              }
            ]
          },
          {
            "Name": "ehorleanstest7",
            "PartitionCount": "4",
            "ConsumerGroups": [
              {
                "Name": "orleansnightly"
              }
            ]
          },
          {
            "Name": "ehorleanstest8",
            "PartitionCount": "4",
            "ConsumerGroups": [
              {
                "Name": "orleansnightly"
              }
            ]
          },
          {
            "Name": "ehorleanstest9",
            "PartitionCount": "4",
            "ConsumerGroups": [
              {
                "Name": "orleansnightly"
              }
            ]
          }
        ]
      }
    ],
    "LoggingConfig": {
      "Type": "File"
    }
  }
}


================================================
FILE: .github/policies/resourceManagement.yml
================================================
id: 
name: GitOps.PullRequestIssueManagement
description: GitOps.PullRequestIssueManagement primitive
owner: 
resource: repository
disabled: false
where: 
configuration:
  resourceManagementConfiguration:
    scheduledSearches:
    - description: Close stale issues
      frequencies:
      - hourly:
          hour: 6
      filters:
      - isIssue
      - isOpen
      - hasLabel:
          label: 'Needs: author feedback'
      - hasLabel:
          label: 'Status: no recent activity'
      - noActivitySince:
          days: 3
      actions:
      - closeIssue
    - description: Add no recent activity label to issues
      frequencies:
      - hourly:
          hour: 6
      filters:
      - isIssue
      - isOpen
      - hasLabel:
          label: 'Needs: author feedback'
      - noActivitySince:
          days: 4
      - isNotLabeledWith:
          label: 'Status: no recent activity'
      actions:
      - addLabel:
          label: 'Status: no recent activity'
      - addReply:
          reply: This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **4 days**. It will be closed if no further activity occurs **within 3 days of this comment**.
    - description: Close duplicate issues
      frequencies:
      - hourly:
          hour: 6
      filters:
      - isIssue
      - isOpen
      - hasLabel:
          label: duplicate
      actions:
      - addReply:
          reply: This issue has been marked as duplicate. It will be closed for housekeeping purposes.
      - closeIssue
    - description: Close stale pull requests
      frequencies:
      - hourly:
          hour: 6
      filters:
      - isPullRequest
      - isOpen
      - hasLabel:
          label: 'Needs: author feedback'
      - hasLabel:
          label: 'Status: no recent activity'
      - noActivitySince:
          days: 7
      actions:
      - closeIssue
    - description: Add no recent activity label to pull requests
      frequencies:
      - hourly:
          hour: 6
      filters:
      - isPullRequest
      - isOpen
      - hasLabel:
          label: 'Needs: author feedback'
      - noActivitySince:
          days: 7
      - isNotLabeledWith:
          label: 'Status: no recent activity'
      actions:
      - addLabel:
          label: 'Status: no recent activity'
      - addReply:
          reply: This pull request has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **7 days**. It will be closed if no further activity occurs **within 7 days of this comment**.
    - description: Close Answered questions
      frequencies:
      - hourly:
          hour: 6
      filters:
      - isIssue
      - isOpen
      - hasLabel:
          label: ':heavy_check_mark: Resolution: Answered'
      actions:
      - addReply:
          reply: Thanks for contacting us. We believe that the question you've raised has been answered. If you still feel a need to continue the discussion, feel free to reopen the issue and add your comments.
      - addLabel:
          label: 'Status: Resolved'
      - closeIssue
    - description: Close by Design
      frequencies:
      - hourly:
          hour: 6
      filters:
      - isOpen
      - isIssue
      - hasLabel:
          label: ':heavy_check_mark: Resolution: By Design'
      actions:
      - addReply:
          reply: Thank you for your feedback. We're closing this issue as the behavior discussed is by design.
      - addLabel:
          label: 'Status: Resolved'
      - closeIssue
    - description: Close duplicates
      frequencies:
      - hourly:
          hour: 6
      filters:
      - isOpen
      - isIssue
      - hasLabel:
          label: ':heavy_check_mark: Resolution: Duplicate'
      actions:
      - addReply:
          reply: >+
            This issue has been marked as duplicate and has not had any activity for **1 day**. It will be closed for housekeeping purposes.

      - addLabel:
          label: 'Status: Resolved'
      - closeIssue
    - description: 'Label issues as Stale '
      frequencies:
      - daily:
          time: 16:0
      filters:
      - isIssue
      - isOpen
      - hasNoLabel
      - isNotAssigned
      - isPartOfMilestone:
          milestone: Triage
      - created:
          before: 365
      actions:
      - addLabel:
          label: stale
      - addReply:
          reply: 'We are marking this issue as stale due to the lack of activity in the past six months. If there is no further activity within two weeks, this issue will be closed. You can always create a new issue based on the guidelines provided in our pinned announcement. '
    - description: Mark old issues in the backlog as stale
      frequencies:
      - daily:
          time: 17:0
      filters:
      - isOpen
      - hasNoLabel
      - isNotAssigned
      - isPartOfMilestone:
          milestone: Backlog
      - created:
          before: 365
      - isIssue
      actions:
      - addLabel:
          label: stale
      - addReply:
          reply: 'We are marking this issue as stale due to the lack of activity in the past six months. If there is no further activity within two weeks, this issue will be closed. You can always create a new issue based on the guidelines provided in our pinned announcement. '
    - description: Close Stale Issues
      frequencies:
      - daily:
          time: 15:0
      - daily:
          time: 18:0
      filters:
      - isIssue
      - isOpen
      - hasLabel:
          label: stale
      - noActivitySince:
          days: 10
      actions:
      - addReply:
          reply: 'This issue has been marked stale for the past 30 and is being closed due to lack of activity. '
      - closeIssue
    eventResponderTasks:
    - if:
      - payloadType: Pull_Request
      - isAction:
          action: Opened
      then:
      - addCodeFlowLink
      description: Add a CodeFlow link to new pull requests
onFailure: 
onSuccess: 


================================================
FILE: .github/workflows/ci.yml
================================================
name: .NET CI
on:
  workflow_dispatch:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  merge_group:
    types:
      - checks_requested
env:
  DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
  DOTNET_NOLOGO: true
jobs:
  build:
    name: Build
    runs-on: ${{ matrix.os }}
    continue-on-error: true
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
    steps:
    - uses: actions/checkout@v4
    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '20.x'
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Build
      run: dotnet build -bl
    - uses: actions/upload-artifact@v4
      with:
        name: build_log_${{ matrix.os }}
        retention-days: 1
        path: |
          **/*.binlog
  test-redis:
    name: Redis provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        provider: ["Redis"]
        framework: ["net8.0", "net10.0"]
    services:
      redis:
        image: redis
        ports:
        - 6379:6379
        options: >-
          --health-cmd "redis-cli ping"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional)"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
      env:
        ORLEANSREDISCONNECTIONSTRING: "localhost:6379,ssl=False,abortConnect=False"
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-cassandra:
    name: Cassandra provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        provider: ["Cassandra"]
        dbversion: ["4.0", "4.1", "5.0"]
        framework: ["net8.0", "net10.0"]
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Clustering)"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.dbversion }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
      env:
        CASSANDRAVERSION: ${{ matrix.dbversion }}
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.dbversion }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-postgres:
    name: PostgreSQL provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        provider: ["PostgreSql"]
        framework: ["net8.0", "net10.0"]
    services:
      postgres:
        image: postgres
        env:
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="False positive")]
          POSTGRES_PASSWORD: postgres
        ports:
        - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional)"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
      env:
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="False positive")]
        ORLEANSPOSTGRESCONNECTIONSTRING: "Server=127.0.0.1;Port=5432;Pooling=false;User Id=postgres;Password=postgres;SSL Mode=Disable"
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-mariadb:
    name: MariaDB/MySQL provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        provider: ["MySql"]
        framework: ["net8.0", "net10.0"]
    services:
      mariadb:
        image: mariadb:10.6
        ports:
          - 3306:3306
        env:
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="False positive")]
          MARIADB_ROOT_PASSWORD: "mariadb"
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional)"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
      env:
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
        ORLEANSMYSQLCONNECTIONSTRING: "Server=127.0.0.1;Port=3306;UId=root;Pwd=mariadb;"
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-sqlserver:
    name: Microsoft SQL Server provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        provider: ["SqlServer"]
        framework: ["net8.0", "net10.0"]
    services:
      mssql:
        image: mcr.microsoft.com/mssql/server:latest
        ports:
          - 1433:1433
        env:
          ACCEPT_EULA: "Y"
          MSSQL_PID: "Developer"
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="False positive")]
          SA_PASSWORD: "yourWeak(!)Password"
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional)"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
      env:
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
        ORLEANSMSSQLCONNECTIONSTRING: "Server=127.0.0.1,1433;User Id=SA;Password=yourWeak(!)Password;TrustServerCertificate=True;"
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-azure-storage:
    name: Azure Storage provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        framework: ["net8.0", "net10.0"]
        provider: ["AzureStorage"]
    steps:
    - uses: actions/checkout@v4
    - name: Start Azurite
      run: |
        docker run -d --name azurite \
          -p 10000:10000 \
          -p 10001:10001 \
          -p 10002:10002 \
          mcr.microsoft.com/azure-storage/azurite:latest \
          azurite --blobHost 0.0.0.0 --queueHost 0.0.0.0 --tableHost 0.0.0.0 --skipApiVersionCheck
    - name: Wait for Azurite
      run: |
        echo "Waiting for Azurite to be ready..."
        timeout 60 bash -c 'until nc -z localhost 10000 && nc -z localhost 10001 && nc -z localhost 10002; do sleep 1; done'
        echo "Azurite is ready"
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional)"
        --framework ${{ matrix.framework }}
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
      env:
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
# [SuppressMessage("Microsoft.Security", "CSCAN0090:ConfigFile", Justification="Not a secret")]
# [SuppressMessage("Microsoft.Security", "CSCAN0220:DefaultPasswordContexts", Justification="Not a secret")]
        ORLEANSDATACONNECTIONSTRING: "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;"
    - name: Clean up Azurite
      if: always()
      run: docker rm -f azurite
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-azure-eventhubs:
    name: Azure Event Hubs provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        framework: ["net8.0", "net10.0"]
        provider: ["EventHub"]
    steps:
    - uses: actions/checkout@v4
    - name: Start Azurite
      run: |
        docker run -d --name azurite \
          -p 10000:10000 \
          -p 10001:10001 \
          -p 10002:10002 \
          mcr.microsoft.com/azure-storage/azurite:latest \
          azurite --blobHost 0.0.0.0 --queueHost 0.0.0.0 --tableHost 0.0.0.0 --skipApiVersionCheck
    - name: Wait for Azurite
      run: |
        echo "Waiting for Azurite to be ready..."
        timeout 60 bash -c 'until nc -z localhost 10000 && nc -z localhost 10001 && nc -z localhost 10002; do sleep 1; done'
        echo "Azurite is ready"
    - name: Start Event Hubs emulator
      run: |
        docker run -d --name eventhubs-emulator \
          -v ${{ github.workspace }}/.github/eventhubs-emulator/Config.json:/Eventhubs_Emulator/ConfigFiles/Config.json \
          -p 5672:5672 \
          -e BLOB_SERVER=host.docker.internal \
          -e METADATA_SERVER=host.docker.internal \
          -e ACCEPT_EULA=Y \
          --add-host=host.docker.internal:host-gateway \
          mcr.microsoft.com/azure-messaging/eventhubs-emulator:latest
    - name: Wait for Event Hubs emulator
      run: |
        echo "Waiting for Event Hubs emulator to be ready..."
        timeout 60 bash -c 'until nc -z localhost 5672; do sleep 1; done'
        echo "Event Hubs emulator is ready"
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional|Category=Streaming)"
        --framework ${{ matrix.framework }}
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
      env:
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
# [SuppressMessage("Microsoft.Security", "CSCAN0090:ConfigFile", Justification="Not a secret")]
# [SuppressMessage("Microsoft.Security", "CSCAN0220:DefaultPasswordContexts", Justification="Not a secret")]
        ORLEANSEVENTHUBCONNECTIONSTRING: "Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
        ORLEANSDATACONNECTIONSTRING: "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;"
    - name: Clean up Event Hubs emulator
      if: always()
      run: docker rm -f eventhubs-emulator
    - name: Clean up Azurite
      if: always()
      run: docker rm -f azurite
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-azure-cosmosdb:
    if: ${{ false }}
    name: Azure Cosmos DB provider tests
    runs-on: windows-latest
    continue-on-error: true
    strategy:
      matrix:
        framework: ["net8.0", "net10.0"]
        provider: ["Cosmos"]
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    # - name: Install emulator certificate
    #   run: |
    #     sleep 90s
    #     mkdir /tmp/emulatorcerts
    #     sudo sh -c "curl -k https://127.0.0.1:${{ job.services.cosmosdb-emulator.ports[8081] }}/_explorer/emulator.pem > /tmp/emulatorcert.crt"
    #     cat /tmp/emulatorcert.crt
    #     awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "emulatorcert." c ".crt"}' < /tmp/emulatorcert.crt
    #     sudo cp emulatorcert.*.crt /usr/local/share/ca-certificates/
    #     sudo update-ca-certificates
    - name: Start Azure Cosmos DB emulator
      run: |
        Write-Host "Launching Azure Cosmos DB Emulator"
        Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
        Start-CosmosDbEmulator -NoUI -Consistency Strong -PartitionCount 2 -DefaultPartitionCount 2
        $IPAddress = "127.0.0.1" #(Get-NetIPAddress -AddressFamily IPV4 -AddressState Preferred -PrefixOrigin Manual | Select-Object IPAddress -First 1).IPAddress ?? "127.0.0.1"
        Add-Content -Path $env:GITHUB_ENV -Value "ORLEANSCOSMOSDBACCOUNTENDPOINT=https://$($IPAddress):8081/"
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional)"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
      env:
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
        #ORLEANSCOSMOSDBACCOUNTENDPOINT: "https://127.0.0.1:8081/"
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
        ORLEANSCOSMOSDBACCOUNTKEY: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-consul:
    name: Consul provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        provider: ["Consul"]
        framework: ["net8.0", "net10.0"]
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional)"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-zookeeper:
    name: ZooKeeper provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        provider: ["ZooKeeper"]
        framework: ["net8.0", "net10.0"]
    services:
      zookeeper:
        image: zookeeper:3.9
        ports:
          - 2181:2181
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional)"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
      env:
        ORLEANSZOOKEEPERCONNECTIONSTRING: "localhost:2181"
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-dynamodb:
    name: AWS DynamoDB provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        provider: ["DynamoDB"]
        framework: ["net8.0", "net10.0"]
    services:
      dynamodb:
        image: amazon/dynamodb-local:latest
        ports:
        - 8000:8000
        env:
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
          AWS_ACCESS_KEY_ID: root
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
          AWS_SECRET_ACCESS_KEY: pass
          AWS_REGION: us-east-1
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional)"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
      env:
        ORLEANSDYNAMODBSERVICE: "http://127.0.0.1:8000"
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
        ORLEANSDYNAMODBACCESSKEY: "root"
# [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Not a secret")]
        ORLEANSDYNAMODBSECRETKEY: "pass"
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-nats:
    name: NATS stream provider tests
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        provider: ["NATS"]
        framework: ["net8.0", "net10.0"]
#    services:
#      nats:
#        image: nats:latest
#        ports:
#        - 4222:4222
#        - 8222:8222
#        env:
#          HTTP_PORT: 8222
    steps:
    - name: Start NATS
      run: docker run -d --name nats -p 4222:4222 -p 8222:8222 nats:latest --js --http-port=8222
    - name: Wait for NATS
      run: sleep 5
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.provider }}&(Category=BVT|Category=SlowBVT|Category=Functional)"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.provider }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
    - name: Clean up container
      if: always()
      run: docker rm -f nats
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test:
    name: Test
    runs-on: ${{ matrix.os }}
    continue-on-error: true
    strategy:
      matrix:
        suite: [BVT, SlowBVT, Functional]
        os: [ubuntu-latest, windows-latest, macos-latest]
        framework: ["net8.0", "net10.0"]
    steps:
    - uses: actions/checkout@v4
    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '20.x'
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Build
      run: dotnet build
    - name: Test
      run: dotnet test
        --framework ${{ matrix.framework }}
        --filter "Category=${{ matrix.suite }}&Category!=Consul"
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.suite }}_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.suite }}_${{ matrix.os }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*
  test-codegenerator:
    name: Test Code Generator
    runs-on: ${{ matrix.os }}
    continue-on-error: true
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        framework: ["net8.0", "net10.0"]
    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        global-json-file: global.json
    - name: Test Code Generator
      run: dotnet test
        test/Orleans.CodeGenerator.Tests/Orleans.CodeGenerator.Tests.csproj
        --framework ${{ matrix.framework }}
        --blame-hang-timeout 10m
        --blame-crash-dump-type full
        --blame-hang-dump-type full
        --logger "trx;LogFileName=test_results_${{ matrix.framework }}.trx"
        --
        -parallel none -noshadow
    - name: Archive Test Results
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test_output_${{ github.job }}_${{ matrix.os }}_${{ matrix.framework }}
        retention-days: 1
        path: |
          **/TestResults/*
          **/logs/*


================================================
FILE: .github/workflows/codeql.yml
================================================
name: CodeQL

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  merge_group:
    types:
      - checks_requested
  schedule:
    - cron: '0 6 * * 1'  # Run weekly on Monday at 6:00 UTC

jobs:
  analyze:
    name: Analyze (${{ matrix.language }})
    runs-on: ubuntu-latest
    timeout-minutes: 360
    permissions:
      security-events: write
      packages: read
      actions: read
      contents: read

    strategy:
      fail-fast: false
      matrix:
        include:
          - language: csharp
            build-mode: none
          - language: javascript-typescript
            build-mode: none
          - language: actions
            build-mode: none

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v3
        with:
          languages: ${{ matrix.language }}
          build-mode: ${{ matrix.build-mode }}

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v3
        with:
          category: "/language:${{ matrix.language }}"


================================================
FILE: .github/workflows/generate-api-diffs.yml
================================================
name: Generate API Diffs

on:
  workflow_dispatch:
  schedule:
    - cron: '0 16 * * *' # 8am PST (16:00 UTC)

permissions:
  contents: write
  pull-requests: write

jobs:
  generate-and-pr:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup .NET
        uses: actions/setup-dotnet@v4
        with:
          global-json-file: global.json

      - name: Restore and build
        run: |
          set +e

          # Find all csproj files excluding specific paths
          find src -name '*.csproj' | egrep -v 'Orleans.Analyzers|Orleans.CodeGenerator' | while read proj; do
            export CI=false && dotnet build "$proj" -f net8.0 --configuration Release --no-incremental /t:"Build;GenAPIGenerateReferenceAssemblySource"
          done
        continue-on-error: true

      - name: Create or update pull request
        uses: dotnet/actions-create-pull-request@e8d799aa1f8b17f324f9513832811b0a62f1e0b1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          branch: update-api-diffs
          base: main
          title: "[Automated] Update API Surface Area"
          body: "Auto-generated update to the API surface to compare current surface vs latest release. This should only be merged once this surface area ships in a new release."


================================================
FILE: .github/workflows/locker.yml
================================================
name: Locker - Lock stale issues and PRs
on:
  schedule:
    - cron: '0 9 * * *' # Once per day, early morning PT

  workflow_dispatch:
    # Manual triggering through the GitHub UI, API, or CLI
    inputs:
      daysSinceClose:
        required: true
        default: "30"
      daysSinceUpdate:
        required: true
        default: "30"

permissions:
  issues: write
  pull-requests: write

jobs:
  main:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Actions
        uses: actions/checkout@v4
        with:
          repository: "microsoft/vscode-github-triage-actions"
          path: ./actions
          ref: cd16cd2aad6ba2da74bb6c6f7293adddd579a90e # locker action commit sha
      - name: Install Actions
        run: npm install --production --prefix ./actions
      - name: Run Locker
        uses: ./actions/locker
        with:
          daysSinceClose:  ${{ fromJson(inputs.daysSinceClose  || 30) }}
          daysSinceUpdate: ${{ fromJson(inputs.daysSinceUpdate || 30) }}


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# Tool Runtime Dir
/[Tt]ools/
/src/[Bb]ootstrap/

# Orleans code-gen files
orleans.codegen.cs
orleans.codegen.fs
orleans.codegen.vb
src/SDK/VSIX/

# User-specific files
*.suo
*.user
*.sln.docstates
.vscode/
.vs/
.idea/

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
Binaries/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
Artifacts/

# Roslyn cache directories
*.ide/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

#NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding addin-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
_NCrunch_*
.*crunch*.local.xml

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# If using the old MSBuild-Integrated Package Restore, uncomment this:
#!**/packages/repositories.config
# Auto-downloaded nuget.exe
**/[Nn]u[Gg]et.exe
*.lock.json
*.nuget.props
*.nuget.targets

# Windows Azure Build Output
csx/
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
patch.diff

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/

# Temporary working files
**/pingme.txt
.vs/
src/SetupTestScriptOutput.txt

\.DS_Store

# Binary MSBuild Log files
*.binlog

# VS Code
.ionide/

# Verify.Xunit
*.received.*

# code coverage
*.cobertura.xml


================================================
FILE: Build.cmd
================================================
powershell -NoProfile -ExecutionPolicy unrestricted -Command "./build.ps1 %1"


================================================
FILE: CODE-OF-CONDUCT.md
================================================
# Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant
to clarify expected behavior in our community.

For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Orleans

Some notes and guidelines for developers who want to contribute to Orleans.

## Contributing to this project

Here are some pointers for anyone looking for mini-features and work items that would make a positive contribution to Orleans.

These are just a few ideas, so if you think of something else that would be useful, then spin up a [discussion thread](https://github.com/dotnet/orleans/issues) on GitHub to discuss the proposal, and go for it.

* **[Orleans GitHub Repository](https://github.com/dotnet/orleans)**

Pull requests are always welcome.

* **[Intern and Student Projects](https://docs.microsoft.com/dotnet/orleans/resources/student-projects)**

Some suggestions for possible intern / student projects.

* **[Documentation Guidelines](https://docs.microsoft.com/contribute/dotnet/dotnet-contribute)**

A style guide for writing documentation for this site.

## Code contributions

This project uses the same contribution process as the other **[.NET projects](https://github.com/dotnet)** on GitHub.

* **[.NET Project Contribution Guidelines](https://github.com/dotnet/runtime/blob/main/CONTRIBUTING.md)**

Guidelines and workflow for contributing to .NET projects on GitHub.

* **[.NET CLA](https://cla.dotnetfoundation.org/)**

Contribution License Agreement for .NET projects on GitHub.

* **[.NET Framework Design Guidelines](https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/framework-design-guidelines-digest.md)**

Some basic API design rules, coding standards, and style guide for .NET Framework APIs.

## Coding Standards and Conventions

We try not to be too OCD about coding style wars, but in case of disputes we do fall back to the core principles in the two ".NET Coding Standards" books used by the other .NET OSS projects on GitHub:

* [C# Coding Style Guide](https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/coding-style.md)

* [.NET Framework Design Guidelines](https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/framework-design-guidelines-digest.md)

There are lots of other useful documents on the [.NET](https://github.com/dotnet/runtime/tree/main/docs#coding-guidelines) documentation sites which are worth reading, although most experienced C# developers will probably have picked up many of those best-practices by osmosis, particularly around performance and memory management.

## Source code organization

Orleans has not religiously followed a "One Class Per File" rule, but instead we have tried to use pragmatic judgment to maximize the change of "code understand-ability" for developers on the team. If lots of small-ish classes share a "common theme" and/or are always dealt with together, then it is OK to place those into one source code file in most cases. See for example the various "log consumer" classes were originally placed in single source file, as they represented a single unit of code comprehension.

As a corollary, it is much easier to find the source code for a class if it is in a file with the same name as the class [similar to Java file naming rules], so there is a tension and value judgment here between code find-ability and minimizing / constraining the number of projects in a solution and files within a project [which both have direct impact on the Visual Studio "Opening" and "Building" times for large projects].

Code search tools in VS and ReSharper definitely help here.

## Dependencies and Inter-Project References

One topic that we are very strict about is around dependency references between components and sub-systems.

### Component / Project References

References between projects in a solution must always use "**Project References**" rather than "_DLL References_" to ensure that component build relationships are known to the build tools.

**Right**:

```xml
<ProjectReference Include="..\Orleans\Orleans.csproj">
    <Project>{BC1BD60C-E7D8-4452-A21C-290AEC8E2E74}</Project>
    <Name>Orleans</Name>
</ProjectReference>
```

_Wrong_:

```xml
<Reference Include="Orleans" >
    <HintPath>..\Orleans\bin\Debug\Orleans.dll</HintPath>
</Reference>
```

In order to help ensure we keep inter-project references clean, then on the build servers [and local `Build.cmd` script] we deliberately use side-by-side input `.\src` and output `.\Binaries` directories rather than the more normal in-place build directory structure (eg. `[PROJ]\bin\Release`) used by VS on local dev machines.

### Unified component versions

We use the same unified versions of external component throughout the Orleans code base, and so should never need to add `bindingRedirect` entries in `App.config` files.

Also, in general it should almost never be necessary to have `Private=True` elements in Orleans project files, except to override a conflict with a Windows / VS "system" component.
Some package management tools can occasionally get confused when making version changes, and sometimes think that we are using multiple versions of the same assembly within a solution, which of course we never do.

We long for the day when package management tools for .NET can make version changes transactionally. Until then, it is occasionally necessary to "fix" the misguided actions of some .NET package management tools by hand-editing the .csproj files (they are just XML text files) back to sanity and/or using the "Discard Edited Line" functions that most good Git tools such as [Atlassian SourceTree](https://www.sourcetreeapp.com/) provide.

Using "sort" references and unified component versions avoids creating brittle links between Orleans run-time and/or external components, and has proved highly effective in the last several years at reducing stress levels for the Orleans Team during important deployment milestones. :)


================================================
FILE: Directory.Build.props
================================================
<Project>
  <!-- Set the repository root into a variable -->
  <PropertyGroup>
    <SourceRoot>$(MSBuildThisFileDirectory)</SourceRoot>
  </PropertyGroup>

  <!-- Set common properties regarding assembly information and nuget packages -->
  <PropertyGroup>
    <Authors>Microsoft</Authors>
    <Product>Microsoft Orleans</Product>
    <Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
    <PackageLicenseExpression>MIT</PackageLicenseExpression>
    <PackageProjectUrl>https://github.com/dotnet/orleans</PackageProjectUrl>
    <PackageIcon>logo_128.png</PackageIcon>
    <PackageTags>Orleans Cloud-Computing Actor-Model Actors Distributed-Systems C# .NET</PackageTags>
    <PackageReleaseNotes></PackageReleaseNotes>
    <PublicRepositoryUrl>https://github.com/dotnet/orleans</PublicRepositoryUrl>
    <PrivateRepositoryUrl>$(RepositoryUrl)</PrivateRepositoryUrl>
    <RepositoryUrl>$(RepositoryUrl)</RepositoryUrl>
    <RepositoryType>git</RepositoryType>
    <LangVersion>preview</LangVersion>
    <Features>strict</Features>
    <WarningLevel>3</WarningLevel>
    <AnalysisLevel>preview</AnalysisLevel>
    <!-- TODO: Uncomment this and fix errors -->
    <!-- <AnalysisMode>All</AnalysisMode> -->
    <!-- TODO: Uncomment this and fix errors -->
    <!-- <Nullable>enable</Nullable> -->
    <EmbedUntrackedSources>true</EmbedUntrackedSources>
    <SymbolPackageFormat>snupkg</SymbolPackageFormat>
    <DebugType>embedded</DebugType>
    <IncludePackageReferencesDuringMarkupCompilation>true</IncludePackageReferencesDuringMarkupCompilation>
    <IncludeSymbols>false</IncludeSymbols>
    <IncludeSource>false</IncludeSource>
    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <ImplicitUsings>enable</ImplicitUsings>
    <!--<NoWarn>$(NoWarn);2003</NoWarn>-->
    <!-- TODO: Disable and ensure all public members are documented: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs1591 -->
    <NoWarn>$(NoWarn);1591</NoWarn>
  </PropertyGroup>

  <PropertyGroup Condition="'$(TF_BUILD)' == 'true' or '$(GITHUB_ACTIONS)' == 'true'">
    <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
  </PropertyGroup>

  <ItemGroup>
    <None Include="$(SourceRoot)assets/logo_128.png" Pack="true" Visible="false" PackagePath="/" />
  </ItemGroup>

  <!-- FSharp SDK overrides -->
  <PropertyGroup>
    <DisableImplicitSystemValueTupleReference>true</DisableImplicitSystemValueTupleReference>
    <DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
  </PropertyGroup>

  <!-- Versioning properties -->
  <PropertyGroup>
    <AssemblyVersion>10.0.0.0</AssemblyVersion>
    <VersionPrefix Condition=" '$(VersionPrefix)'=='' ">10.0.0</VersionPrefix>
  </PropertyGroup>

  <!-- For Debug builds generated a date/time dependent version suffix -->
  <PropertyGroup Condition=" '$(Configuration)'=='Debug' ">
    <VersionSuffix Condition=" '$(VersionSuffix)'=='' ">dev</VersionSuffix>
    <VersionSuffix Condition=" '$(VersionDateSuffix)'!='' ">$(VersionSuffix)-$(VersionDateSuffix)</VersionSuffix>
  </PropertyGroup>

  <Import Condition=" '$(OrleansBuildTimeCodeGen)' == 'true' " Project="$(MSBuildThisFileDirectory)src/Orleans.CodeGenerator/build/Microsoft.Orleans.CodeGenerator.props" />

  <!-- Set output folder for created NuGet packages -->
  <PropertyGroup>
    <PackageOutputPath Condition=" '$(PackageOutputPath)'=='' ">$(SourceRoot)/Artifacts/$(Configuration)</PackageOutputPath>
  </PropertyGroup>

  <!-- Set output folder for distributed test apps -->
  <PropertyGroup>
    <DistributedTestsOutputPath Condition=" '$(DistributedODistributedTestsOutputPathutputPath)'=='' ">$(SourceRoot)/Artifacts/DistributedTests</DistributedTestsOutputPath>
  </PropertyGroup>

  <Choose>
    <When Condition="'$(OfficialBuild)' != 'true'">
      <!-- On non-official builds we don't burn in a git sha.  In large part because it
           hurts our determinism efforts as binaries which should be the same between
           builds will not (due to developers building against different HEAD
           values -->
      <PropertyGroup>
        <GitHeadSha>&lt;developer build&gt;</GitHeadSha>
      </PropertyGroup>
    </When>
    <When Condition="'$(BUILD_SOURCEVERSION)' != ''">
      <PropertyGroup>
        <GitHeadSha>$(BUILD_SOURCEVERSION)</GitHeadSha>
      </PropertyGroup>
    </When>
    <When Condition="'$(BUILD_SOURCEVERSION)' == '' AND '$(GIT_COMMIT)' != ''">
      <PropertyGroup>
        <GitHeadSha>$(GIT_COMMIT)</GitHeadSha>
      </PropertyGroup>
    </When>
    <Otherwise>
      <PropertyGroup>
        <GitHeadSha>Not found</GitHeadSha>
        <DotGitDir>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory).git'))</DotGitDir>
        <HeadFileContent Condition="Exists('$(DotGitDir)/HEAD')">$([System.IO.File]::ReadAllText('$(DotGitDir)/HEAD').Trim())</HeadFileContent>
        <RefPath Condition="$(HeadFileContent.StartsWith('ref: '))">$(DotGitDir)/$(HeadFileContent.Substring(5))</RefPath>
        <GitHeadSha Condition="'$(RefPath)' != '' AND Exists('$(RefPath)')">$([System.IO.File]::ReadAllText('$(RefPath)').Trim())</GitHeadSha>
        <GitHeadSha Condition="'$(HeadFileContent)' != '' AND '$(RefPath)' == ''">$(HeadFileContent)</GitHeadSha>
      </PropertyGroup>
    </Otherwise>
  </Choose>
</Project>


================================================
FILE: Directory.Build.targets
================================================
<Project>
  <!-- Set InformationVersion here, since $(Version) is already set at this point. -->
  <PropertyGroup>
    <InformationalVersion>$(Version). Commit Hash: $(GitHeadSha)</InformationalVersion>
  </PropertyGroup>

  <Import Condition=" '$(OrleansBuildTimeCodeGen)' == 'true' " Project="$(MSBuildThisFileDirectory)src/Orleans.CodeGenerator/build/Microsoft.Orleans.CodeGenerator.props" />
  <Import
    Condition=" '$(OrleansBuildTimeCodeGen)' == 'true' and '$(IsOrleansFrameworkPart)' != 'false' and '$(PackageId)' != 'Microsoft.Orleans.Core.Abstractions' "
    Project="$(MSBuildThisFileDirectory)src/Orleans.Core/build/Microsoft.Orleans.Core.targets" />

  <ItemGroup>
    <!-- Enable code generator -->
    <ProjectReference
      Include="$(SourceRoot)src/Orleans.CodeGenerator/Orleans.CodeGenerator.csproj"
      OutputItemType="Analyzer"
      PrivateAssets="None"
      Condition=" '$(OrleansBuildTimeCodeGen)' == 'true' "/>
    <ProjectReference
      Include="$(SourceRoot)src/Orleans.Analyzers/Orleans.Analyzers.csproj"
      AssetTargetFallback="netstandard2.0"
      UndefineProperties="TargetFramework"
      SkipGetTargetFrameworkProperties="true"
      OutputItemType="Analyzer"
      PrivateAssets="None"
      Condition=" '$(OrleansBuildTimeCodeGen)' == 'true' "/>
  </ItemGroup>

</Project>


================================================
FILE: Directory.Packages.props
================================================
<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
    <CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
  </PropertyGroup>
  <ItemGroup>
    <PackageVersion Include="Aspire.Azure.Storage.Queues" Version="13.0.0" />
    <PackageVersion Include="Aspire.Hosting.AppHost" Version="13.1.1" />
    <PackageVersion Include="Aspire.Hosting.Orleans" Version="13.1.1" />
    <PackageVersion Include="Aspire.Hosting.Redis" Version="13.1.1" />
    <PackageVersion Include="Aspire.StackExchange.Redis" Version="13.1.1" />
    <PackageVersion Include="Autofac.Extensions.DependencyInjection" Version="10.0.0" />
    <PackageVersion Include="AwesomeAssertions" Version="9.3.0" />
    <PackageVersion Include="AWSSDK.DynamoDBv2" Version="4.0.14" />
    <PackageVersion Include="AWSSDK.SQS" Version="4.0.2.14" />
    <PackageVersion Include="Azure.Core" Version="1.50.0" />
    <PackageVersion Include="Azure.Data.Tables" Version="12.11.0" />
    <PackageVersion Include="Azure.Identity" Version="1.17.1" />
    <PackageVersion Include="Azure.Messaging.EventHubs" Version="5.12.2" />
    <PackageVersion Include="Azure.Security.KeyVault.Secrets" Version="4.5.0" />
    <PackageVersion Include="Azure.Storage.Blobs" Version="12.27.0" />
    <PackageVersion Include="Azure.Storage.Queues" Version="12.25.0" />
    <PackageVersion Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.13.12" />
    <PackageVersion Include="BenchmarkDotNet" Version="0.13.12" />
    <PackageVersion Include="CassandraCSharpDriver" Version="3.22.0" />
    <PackageVersion Include="Consul" Version="1.7.14.10" />
    <PackageVersion Include="coverlet.collector" Version="6.0.4" />
    <PackageVersion Include="coverlet.msbuild" Version="8.0.0" />
    <PackageVersion Include="CsCheck" Version="4.5.0" />
    <PackageVersion Include="FSharp.Core" Version="9.0.303" />
    <PackageVersion Include="Google.Cloud.PubSub.V1" Version="1.0.0-beta13" />
    <PackageVersion Include="Google.Protobuf" Version="3.33.5" />
    <PackageVersion Include="Grpc.Tools" Version="2.78.0" />
    <PackageVersion Include="Hyperion" Version="0.12.2" />
    <PackageVersion Include="KubernetesClient" Version="18.0.13" />
    <PackageVersion Include="MemoryPack" Version="1.21.4" />
    <PackageVersion Include="MessagePack" Version="3.1.4" />
    <PackageVersion Include="Microsoft.AspNetCore.Connections.Abstractions" Version="8.0.24" />
    <PackageVersion Include="Microsoft.Azure.Cosmos" Version="3.57.0" />
    <PackageVersion Include="Microsoft.Build" Version="17.10.4" />
    <PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0" />
    <PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.5.0" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing" Version="1.1.2" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.5.0" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" />
    <PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="4.5.0" />
    <PackageVersion Include="Microsoft.CodeAnalysis" Version="4.5.0" />
    <PackageVersion Include="Microsoft.Crank.EventSources" Version="0.2.0-alpha.23422.5" />
    <PackageVersion Include="Microsoft.CSharp" Version="4.7.0" />
    <PackageVersion Include="Microsoft.Data.SqlClient" Version="6.1.4" />
    <PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.24" />
    <PackageVersion Include="Microsoft.DotNet.GenAPI.Task" Version="9.0.103-servicing.25065.25" />
    <PackageVersion Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
    <PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
    <PackageVersion Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.24" />
    <PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.2" />
    <PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
    <PackageVersion Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
    <PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
    <PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
    <PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="8.0.2" />
    <PackageVersion Include="Microsoft.Extensions.Diagnostics.Testing" Version="8.10.0" />
    <PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.1" />
    <PackageVersion Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
    <PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="9.0.0" />
    <PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.1" />
    <PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.3" />
    <PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" />
    <PackageVersion Include="Microsoft.Extensions.Logging.Debug" Version="8.0.1" />
    <PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.1" />
    <PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="8.0.24" />
    <PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
    <PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
    <PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="10.3.0" />
    <PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="9.10.0" />
    <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
    <PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" />
    <PackageVersion Include="Microsoft.SourceLink.AzureRepos.Git" Version="8.0.0" />
    <PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
    <PackageVersion Include="MySql.Data" Version="8.0.31" />
    <PackageVersion Include="NATS.Net" Version="2.7.2" />
    <PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
    <PackageVersion Include="NodaTime" Version="3.3.0" />
    <PackageVersion Include="Npgsql" Version="8.0.8" />
    <PackageVersion Include="NSubstitute.Analyzers.CSharp" Version="1.0.17" />
    <PackageVersion Include="NSubstitute" Version="5.3.0" />
    <PackageVersion Include="OpenTelemetry" Version="1.9.0" />
    <PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.9.0" />
    <PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.9.0" />
    <PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.9.0" />
    <PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.9.0" />
    <PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.9.0" />
    <PackageVersion Include="protobuf-net" Version="3.2.56" />
    <PackageVersion Include="SpanJson" Version="4.2.1" />
    <PackageVersion Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.11" />
    <PackageVersion Include="StackExchange.Redis" Version="2.11.0" />
    <PackageVersion Include="StructureMap.Microsoft.DependencyInjection" Version="2.0.0" />
    <PackageVersion Include="System.CodeDom" Version="10.0.3" />
    <PackageVersion Include="System.Collections.Immutable" Version="8.0.0" />
    <PackageVersion Include="System.CommandLine" Version="2.0.0-beta1.21308.1" />
    <PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="8.0.1" />
    <PackageVersion Include="System.Drawing.Common" Version="8.0.24" />
    <PackageVersion Include="System.IO.Hashing" Version="10.0.3" NoWarn="NU5104" />
    <PackageVersion Include="System.IO.Pipelines" Version="8.0.0" />
    <PackageVersion Include="System.Memory.Data" Version="8.0.1" />
    <PackageVersion Include="System.Text.Json" Version="8.0.5" />
    <PackageVersion Include="Testcontainers" Version="4.10.0" />
    <PackageVersion Include="Testcontainers.Consul" Version="4.10.0" />
    <PackageVersion Include="Utf8Json" Version="1.3.7" />
    <PackageVersion Include="Verify.Xunit" Version="29.5.0" />
    <PackageVersion Include="xunit.assert" Version="2.9.3" />
    <PackageVersion Include="xunit.core" Version="2.9.3" />
    <PackageVersion Include="xunit.extensibility.core" Version="2.9.3" />
    <PackageVersion Include="xunit.extensibility.execution" Version="2.9.3" />
    <PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
    <PackageVersion Include="Xunit.SkippableFact" Version="1.5.61" />
    <PackageVersion Include="xunit" Version="2.9.3" />
    <PackageVersion Include="ZeroFormatter" Version="1.6.4" />
    <PackageVersion Include="ZooKeeperNetEx" Version="3.4.12.4" />
  </ItemGroup>
  <!-- Updates for later TFMs -->
  <ItemGroup Condition=" '$(TargetFramework)' == 'net10.0' ">
    <PackageVersion Update="Aspire.Azure.Storage.Queues" Version="13.1.1" />
    <PackageVersion Update="BenchmarkDotNet" Version="0.15.6" />
    <PackageVersion Update="FSharp.Core" Version="10.0.103" />
    <PackageVersion Update="Microsoft.AspNetCore.Connections.Abstractions" Version="10.0.3" />
    <PackageVersion Update="Microsoft.CodeAnalysis.Common" Version="5.0.0" />
    <PackageVersion Update="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="5.0.0" />
    <PackageVersion Update="Microsoft.CodeAnalysis.CSharp" Version="5.0.0" />
    <PackageVersion Update="Microsoft.CodeAnalysis.Workspaces.Common" Version="5.0.0" />
    <PackageVersion Update="Microsoft.CodeAnalysis" Version="5.0.0" />
    <PackageVersion Update="Azure.Core" Version="1.51.1" />
    <PackageVersion Update="Microsoft.Data.Sqlite" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Configuration.Abstractions" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Configuration.Binder" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Configuration.Json" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Configuration" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.DependencyInjection" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.DependencyModel" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Diagnostics.Testing" Version="10.3.0" />
    <PackageVersion Update="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Hosting" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Http" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Http.Resilience" Version="10.3.0" />
    <PackageVersion Update="Microsoft.Extensions.Logging.Abstractions" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Logging.Console" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Logging.Debug" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Logging" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.ObjectPool" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.Options" Version="10.0.3" />
    <PackageVersion Update="Microsoft.Extensions.TimeProvider.Testing" Version="10.3.0" />
    <PackageVersion Update="OpenTelemetry" Version="1.15.0" />
    <PackageVersion Update="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.0" />
    <PackageVersion Update="OpenTelemetry.Extensions.Hosting" Version="1.15.0" />
    <PackageVersion Update="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.0" />
    <PackageVersion Update="OpenTelemetry.Instrumentation.Http" Version="1.15.0" />
    <PackageVersion Update="OpenTelemetry.Instrumentation.Runtime" Version="1.15.0" />
    <PackageVersion Update="System.Collections.Immutable" Version="10.0.0" />
    <PackageVersion Update="System.CommandLine" Version="2.0.0-beta1.21308.1" />
    <PackageVersion Update="System.Diagnostics.PerformanceCounter" Version="10.0.3" />
    <PackageVersion Update="System.Drawing.Common" Version="10.0.3" />
    <PackageVersion Update="System.IO.Pipelines" Version="10.0.3" />
    <PackageVersion Update="System.Memory.Data" Version="10.0.3" />
    <PackageVersion Update="System.Text.Json" Version="10.0.0" />
  </ItemGroup>
</Project>


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) .NET Foundation

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



================================================
FILE: NuGet.Config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <!-- Feeds to use to restore dependent packages from -->
    <add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
    <add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
    <add key="dotnet9" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet9/nuget/v3/index.json" />
    <add key="dotnet9-transport" value="https://dnceng.pkgs.visualstudio.com/public/_packaging/dotnet9-transport/nuget/v3/index.json" />
  </packageSources>
  <packageSourceMapping>
    <packageSource key="dotnet9-transport">
      <package pattern="*WorkloadBuildTasks*" />
    </packageSource>
    <packageSource key="dotnet-public">
      <package pattern="*" />
    </packageSource>
    <packageSource key="dotnet9">
      <package pattern="*" />
    </packageSource>
    <packageSource key="dotnet-eng">
      <package pattern="*" />
    </packageSource>
  </packageSourceMapping>
  <disabledPackageSources>
    <clear />
  </disabledPackageSources>
</configuration>


================================================
FILE: Orleans.slnx
================================================
<Solution>
  <Folder Name="/playground/">
    <Project Path="playground/ActivationSheddingToy/ActivationSheddingToy.csproj" />
  </Folder>
  <Folder Name="/playground/ActivationRebalancing/">
    <Project Path="playground/ActivationRebalancing/ActivationRebalancing.AppHost/ActivationRebalancing.AppHost.csproj" />
    <Project Path="playground/ActivationRebalancing/ActivationRebalancing.Cluster/ActivationRebalancing.Cluster.csproj" />
    <Project Path="playground/ActivationRebalancing/ActivationRebalancing.Frontend/ActivationRebalancing.Frontend.csproj" />
  </Folder>
  <Folder Name="/playground/ActivationRepartitioning/">
    <Project Path="playground/ActivationRepartitioning/ActivationRepartitioning.AppHost/ActivationRepartitioning.AppHost.csproj" />
    <Project Path="playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/ActivationRepartitioning.Frontend.csproj" />
  </Folder>
  <Folder Name="/playground/ChaoticCluster/">
    <Project Path="playground/ChaoticCluster/ChaoticCluster.AppHost/ChaoticCluster.AppHost.csproj" />
    <Project Path="playground/ChaoticCluster/ChaoticCluster.ServiceDefaults/ChaoticCluster.ServiceDefaults.csproj" />
    <Project Path="playground/ChaoticCluster/ChaoticCluster.Silo/ChaoticCluster.Silo.csproj" />
  </Folder>
  <Folder Name="/playground/Dashboard/">
    <Project Path="playground/DashboardCohosted/DashboardCohosted.csproj" />
    <Project Path="playground/DashboardSeparateHost/DashboardSeparateHost.csproj" />
  </Folder>
  <Folder Name="/Solution Items/">
    <File Path=".editorconfig" />
    <File Path="Directory.Build.props" />
    <File Path="Directory.Build.targets" />
    <File Path="Directory.Packages.props" />
  </Folder>
  <Folder Name="/src/">
    <Project Path="src/Orleans.Analyzers/Orleans.Analyzers.csproj" />
    <Project Path="src/Orleans.BroadcastChannel/Orleans.BroadcastChannel.csproj" />
    <Project Path="src/Orleans.Client/Orleans.Client.csproj" />
    <Project Path="src/Orleans.CodeGenerator/Orleans.CodeGenerator.csproj" />
    <Project Path="src/Orleans.Core.Abstractions/Orleans.Core.Abstractions.csproj" />
    <Project Path="src/Orleans.Core/Orleans.Core.csproj" />
    <Project Path="src/Orleans.EventSourcing/Orleans.EventSourcing.csproj" />
    <Project Path="src/Orleans.Journaling/Orleans.Journaling.csproj" />
    <Project Path="src/Orleans.Persistence.Memory/Orleans.Persistence.Memory.csproj" />
    <Project Path="src/Orleans.Reminders/Orleans.Reminders.csproj" />
    <Project Path="src/Orleans.Runtime/Orleans.Runtime.csproj" />
    <Project Path="src/Orleans.DurableJobs/Orleans.DurableJobs.csproj" Id="ab4cc723-b3cf-4c32-be4c-1a180a49797c" />
    <Project Path="src/Orleans.Sdk/Orleans.Sdk.csproj" />
    <Project Path="src/Orleans.Serialization.Abstractions/Orleans.Serialization.Abstractions.csproj" />
    <Project Path="src/Orleans.Serialization.FSharp/Orleans.Serialization.FSharp.csproj" />
    <Project Path="src/Orleans.Serialization.MemoryPack/Orleans.Serialization.MemoryPack.csproj" />
    <Project Path="src/Orleans.Serialization.MessagePack/Orleans.Serialization.MessagePack.csproj" />
    <Project Path="src/Orleans.Serialization.NewtonsoftJson/Orleans.Serialization.NewtonsoftJson.csproj" />
    <Project Path="src/Orleans.Serialization.SystemTextJson/Orleans.Serialization.SystemTextJson.csproj" />
    <Project Path="src/Orleans.Serialization.TestKit/Orleans.Serialization.TestKit.csproj" />
    <Project Path="src/Orleans.Serialization/Orleans.Serialization.csproj" />
    <Project Path="src/Orleans.Server/Orleans.Server.csproj" />
    <Project Path="src/Orleans.Streaming/Orleans.Streaming.csproj" />
    <Project Path="src/Orleans.TestingHost/Orleans.TestingHost.csproj" />
    <Project Path="src/Serializers/Orleans.Serialization.Protobuf/Orleans.Serialization.Protobuf.csproj" />
  </Folder>
  <Folder Name="/src/Dashboard/">
    <Project Path="src/Dashboard/Orleans.Dashboard.Abstractions/Orleans.Dashboard.Abstractions.csproj" />
    <Project Path="src/Dashboard/Orleans.Dashboard/Orleans.Dashboard.csproj" />
  </Folder>
  <Folder Name="/src/Extensions/">
    <Project Path="src/Orleans.Clustering.Consul/Orleans.Clustering.Consul.csproj" />
    <Project Path="src/Orleans.Clustering.ZooKeeper/Orleans.Clustering.ZooKeeper.csproj" />
    <Project Path="src/Orleans.Connections.Security/Orleans.Connections.Security.csproj" />
    <Project Path="src/Orleans.Hosting.Kubernetes/Orleans.Hosting.Kubernetes.csproj" />
  </Folder>
  <Folder Name="/src/Extensions/AdoNet/">
    <Project Path="src/AdoNet/Orleans.Clustering.AdoNet/Orleans.Clustering.AdoNet.csproj" />
    <Project Path="src/AdoNet/Orleans.GrainDirectory.AdoNet/Orleans.GrainDirectory.AdoNet.csproj" />
    <Project Path="src/AdoNet/Orleans.Persistence.AdoNet/Orleans.Persistence.AdoNet.csproj" />
    <Project Path="src/AdoNet/Orleans.Reminders.AdoNet/Orleans.Reminders.AdoNet.csproj" />
    <Project Path="src/AdoNet/Orleans.Streaming.AdoNet/Orleans.Streaming.AdoNet.csproj" />
  </Folder>
  <Folder Name="/src/Extensions/AWS/">
    <Project Path="src/AWS/Orleans.Clustering.DynamoDB/Orleans.Clustering.DynamoDB.csproj" />
    <Project Path="src/AWS/Orleans.Persistence.DynamoDB/Orleans.Persistence.DynamoDB.csproj" />
    <Project Path="src/AWS/Orleans.Reminders.DynamoDB/Orleans.Reminders.DynamoDB.csproj" />
    <Project Path="src/AWS/Orleans.Streaming.SQS/Orleans.Streaming.SQS.csproj" />
  </Folder>
  <Folder Name="/src/Extensions/Azure/">
    <Project Path="src/Azure/Orleans.Clustering.AzureStorage/Orleans.Clustering.AzureStorage.csproj" />
    <Project Path="src/Azure/Orleans.Clustering.Cosmos/Orleans.Clustering.Cosmos.csproj" />
    <Project Path="src/Azure/Orleans.GrainDirectory.AzureStorage/Orleans.GrainDirectory.AzureStorage.csproj" />
    <Project Path="src/Azure/Orleans.Journaling.AzureStorage/Orleans.Journaling.AzureStorage.csproj" />
    <Project Path="src/Azure/Orleans.Persistence.AzureStorage/Orleans.Persistence.AzureStorage.csproj" />
    <Project Path="src/Azure/Orleans.Persistence.Cosmos/Orleans.Persistence.Cosmos.csproj" />
    <Project Path="src/Azure/Orleans.Reminders.AzureStorage/Orleans.Reminders.AzureStorage.csproj" />
    <Project Path="src/Azure/Orleans.Reminders.Cosmos/Orleans.Reminders.Cosmos.csproj" />
    <Project Path="src/Azure/Orleans.DurableJobs.AzureStorage/Orleans.DurableJobs.AzureStorage.csproj" Id="5bbb1058-9ab2-44e9-b237-49f5b6bee151" />
    <Project Path="src/Azure/Orleans.Streaming.AzureStorage/Orleans.Streaming.AzureStorage.csproj" />
    <Project Path="src/Azure/Orleans.Streaming.EventHubs/Orleans.Streaming.EventHubs.csproj" />
    <Project Path="src/Azure/Orleans.Transactions.AzureStorage/Orleans.Transactions.AzureStorage.csproj" />
  </Folder>
  <Folder Name="/src/Extensions/Cassandra/">
    <Project Path="src/Cassandra/Orleans.Clustering.Cassandra/Orleans.Clustering.Cassandra.csproj" />
  </Folder>
  <Folder Name="/src/Extensions/NATS/">
    <Project Path="src\Orleans.Streaming.NATS\Orleans.Streaming.NATS.csproj" />
  </Folder>
  <Folder Name="/src/Extensions/Redis/">
    <Project Path="src/Redis/Orleans.Clustering.Redis/Orleans.Clustering.Redis.csproj" />
    <Project Path="src/Redis/Orleans.GrainDirectory.Redis/Orleans.GrainDirectory.Redis.csproj" />
    <Project Path="src/Redis/Orleans.Persistence.Redis/Orleans.Persistence.Redis.csproj" />
    <Project Path="src/Redis/Orleans.Reminders.Redis/Orleans.Reminders.Redis.csproj" />
  </Folder>
  <Folder Name="/src/Transactions/">
    <Project Path="src/Orleans.Transactions.TestKit.Base/Orleans.Transactions.TestKit.Base.csproj" />
    <Project Path="src/Orleans.Transactions.TestKit.xUnit/Orleans.Transactions.TestKit.xUnit.csproj" />
    <Project Path="src/Orleans.Transactions/Orleans.Transactions.csproj" />
  </Folder>
  <Folder Name="/test/">
    <Project Path="test/Orleans.Analyzers.Tests/Orleans.Analyzers.Tests.csproj" />
    <Project Path="test/Orleans.DefaultCluster.Tests/Orleans.DefaultCluster.Tests.csproj" />
    <Project Path="test/Orleans.DependencyInjection.Tests/Orleans.DependencyInjection.Tests.csproj" />
    <Project Path="test/Orleans.Core.Tests/Orleans.Core.Tests.csproj" />
    <Project Path="test/Orleans.CodeGenerator.Tests/Orleans.CodeGenerator.Tests.csproj" />
    <Project Path="test/Orleans.Connections.Security.Tests/Orleans.Connections.Security.Tests.csproj" />
    <Project Path="test/Orleans.Journaling.Tests/Orleans.Journaling.Tests.csproj" />
    <Project Path="test/Orleans.Serialization.FSharp.Tests/Orleans.Serialization.FSharp.Tests.fsproj" />
    <Project Path="test/Orleans.Serialization.UnitTests/Orleans.Serialization.UnitTests.csproj" />
    <Project Path="test/Orleans.Runtime.Tests/Orleans.Runtime.Tests.csproj" />
    <Project Path="test/Orleans.Runtime.Internal.Tests/Orleans.Runtime.Internal.Tests.csproj" />
    <Project Path="test/Orleans.Placement.Tests/Orleans.Placement.Tests.csproj" />
    <Project Path="test/Orleans.GrainDirectory.Tests/Orleans.GrainDirectory.Tests.csproj" />
    <Project Path="test/Orleans.Streaming.Tests/Orleans.Streaming.Tests.csproj" />
    <Project Path="test/Orleans.EventSourcing.Tests/Orleans.EventSourcing.Tests.csproj" />
    <Project Path="test/Orleans.DurableJobs.Tests/Orleans.DurableJobs.Tests.csproj" />
  </Folder>
  <Folder Name="/test/Dashboard/">
    <Project Path="test/Orleans.Dashboard.Tests/Orleans.Dashboard.TestGrains/Orleans.Dashboard.TestGrains.csproj" />
    <Project Path="test/Orleans.Dashboard.Tests/Orleans.Dashboard.UnitTests/Orleans.Dashboard.UnitTests.csproj" />
  </Folder>
  <Folder Name="/test/Benchmarks/">
    <Project Path="test/Benchmarks.AdoNet/Benchmarks.AdoNet.csproj" />
    <Project Path="test/Benchmarks/Benchmarks.csproj" />
    <Project Path="test/Grains/BenchmarkGrainInterfaces/BenchmarkGrainInterfaces.csproj" />
    <Project Path="test/Grains/BenchmarkGrains/BenchmarkGrains.csproj" />
  </Folder>
  <Folder Name="/test/DistributedTests/">
    <File Path="test/DistributedTests/README.md" />
    <Project Path="test/DistributedTests/DistributedTests.Client/DistributedTests.Client.csproj" />
    <Project Path="test/DistributedTests/DistributedTests.Common/DistributedTests.Common.csproj" />
    <Project Path="test/DistributedTests/DistributedTests.Grains/DistributedTests.Grains.csproj" />
    <Project Path="test/DistributedTests/DistributedTests.Server/DistributedTests.Server.csproj" />
  </Folder>
  <Folder Name="/test/Extensions/">
    <Project Path="test/Extensions/Orleans.AWS.Tests/Orleans.AWS.Tests.csproj" />
    <Project Path="test/Extensions/Orleans.Clustering.Consul.Tests/Orleans.Clustering.Consul.Tests.csproj" />
    <Project Path="test/Extensions/Orleans.Streaming.EventHubs.Tests/Orleans.Streaming.EventHubs.Tests.csproj" />
    <Project Path="test/Extensions/Orleans.Clustering.Cassandra.Tests/Orleans.Clustering.Cassandra.Tests.csproj" />
    <Project Path="test/Extensions/Orleans.Cosmos.Tests/Orleans.Cosmos.Tests.csproj" />
    <Project Path="test/Extensions/Orleans.Redis.Tests/Orleans.Redis.Tests.csproj" />
    <Project Path="test/Extensions/Orleans.AdoNet.Tests/Orleans.AdoNet.Tests.csproj" />
    <Project Path="test/Extensions/Orleans.Azure.Tests/Orleans.Azure.Tests.csproj" />
    <Project Path="test/Extensions/Orleans.Clustering.ZooKeeper.Tests/Orleans.Clustering.ZooKeeper.Tests.csproj" />
    <Project Path="test/Extensions/Orleans.Streaming.NATS.Tests/Orleans.Streaming.NATS.Tests.csproj" />
  </Folder>
  <Folder Name="/test/Grains/">
    <Project Path="test/Grains/TestFSharp/TestFSharp.fsproj" />
    <Project Path="test/Grains/TestFSharpGrainInterfaces/TestFSharpGrainInterfaces.csproj" />
    <Project Path="test/Grains/TestFSharpGrainInterfaces/FSharpInterfaces/TestFSharpInterfaces.fsproj" />
    <Project Path="test/Grains/TestGrainInterfaces/TestGrainInterfaces.csproj" />
    <Project Path="test/Grains/TestGrains/TestGrains.csproj" />
    <Project Path="test/Grains/TestInternalGrainInterfaces/TestInternalGrainInterfaces.csproj" />
    <Project Path="test/Grains/TestInternalGrains/TestInternalGrains.csproj" />
    <Project Path="test/Grains/TestVersionGrains/TestVersionGrains.csproj" />
    <Project Path="test/Grains/TestVersionGrains2/TestVersionGrains2.csproj" />
  </Folder>
  <Folder Name="/test/Misc/">
    <Project Path="test/Misc/TestSerializerExternalModels/TestSerializerExternalModels.csproj" />
  </Folder>
  <Folder Name="/test/TestInfrastructure/">
    <Project Path="test/TestInfrastructure/Orleans.TestingHost.Tests/Orleans.TestingHost.Tests.csproj" />
    <Project Path="test/TestInfrastructure/TestExtensions/TestExtensions.csproj" />
  </Folder>
  <Folder Name="/test/Transactions/">
    <Project Path="test/Transactions/Orleans.Transactions.Azure.Test/Orleans.Transactions.Azure.Test.csproj" />
    <Project Path="test/Transactions/Orleans.Transactions.Tests/Orleans.Transactions.Tests.csproj" />
  </Folder>
</Solution>


================================================
FILE: Parallel-Tests.ps1
================================================
param(
    [string[]] $directories,
    [string] $testFilter = $null)

. .\common.ps1

Install-Dotnet

$maxDegreeOfParallelism = [math]::min($env:NUMBER_OF_PROCESSORS, 4)
Write-Host "Max Job Parallelism = $maxDegreeOfParallelism"

$failed = $false

if(
    [Console]::InputEncoding -is [Text.UTF8Encoding] -and
    [Console]::InputEncoding.GetPreamble().Length -ne 0
) {
    Write-Host Setting [Console]::InputEncoding
    [Console]::InputEncoding = New-Object Text.UTF8Encoding $false
}
else
{
    Write-Host Not changing [Console]::InputEncoding
}

if ([string]::IsNullOrWhiteSpace($testFilter)) {
    $testFilter = $env:TEST_FILTERS;
}

if ([string]::IsNullOrWhiteSpace($testFilter)) {
    $testFilter = "Category=BVT|Category=SlowBVT";
}

Write-Host "Test filters: `"$testFilter`"";

function Receive-CompletedJobs {
    $succeeded = $true
    foreach($job in (Get-Job | Where-Object { $_.State -ne 'Running' }))
    {
        Receive-Job $job -AutoRemoveJob -Wait | Write-Host

        if ($job.State -eq 'Failed') {
            $succeeded = $false
            Write-Host -ForegroundColor Red 'Failed: ' $job.Name '('$job.State')'
        }
        Write-Host ''
    }
    return $succeeded
}

$ExecuteCmd =
{
    param([string] $args1, [string] $path)

    Set-Location -Path "$path"

    $cmdline = "& dotnet " + $args1

    Invoke-Expression $cmdline;
    $cmdExitCode = $LASTEXITCODE;
    if ($cmdExitCode -ne 0)
    {
        Throw "Error when running tests. Command: `"$cmdline`". Exit Code: $cmdExitCode"
    }
    else
    {
        Write-Host "Tests completed. Command: `"$cmdline`""
    }
}

foreach ($d in $directories)
{
    $running = @(Get-Job | Where-Object { $_.State -eq 'Running' })
    if ($running.Count -ge $maxDegreeOfParallelism) {
        $running | Wait-Job -Any | Out-Null
    }

    if (-not (Receive-CompletedJobs)) { $failed = $true }

    if (-not $testFilter.StartsWith('"')) { $testFilter = "`"$testFilter"; }
    if (-not $testFilter.EndsWith('"')) { $testFilter = "$testFilter`""; }

    $jobName = $([System.IO.Path]::GetFileName($d))
    $cmdLine = 'test --blame-hang-timeout 10m --no-build --configuration "' + $env:BuildConfiguration + '" --filter ' + $testFilter + ' --logger "trx" -- -parallel none -noshadow'
    Write-Host $jobName dotnet $cmdLine
    Start-Job $ExecuteCmd -ArgumentList @($cmdLine, "$d") -Name $jobName | Out-Null
    Write-Host ''
}

# Wait for all jobs to complete and results ready to be received
Wait-Job * | Out-Null

if (-not (Receive-CompletedJobs)) { $failed = $true }

if ($failed)
{
    Write-Host 'Test run failed'
    Exit 1
}


================================================
FILE: README.md
================================================
<p align="center">
  <image src="https://raw.githubusercontent.com/dotnet/orleans/gh-pages/assets/logo_full.png" alt="Orleans logo" width="600px">
</p>

[![NuGet](https://img.shields.io/nuget/v/Microsoft.Orleans.Core.svg?style=flat)](http://www.nuget.org/profiles/Orleans)
[![Follow on Twitter](https://img.shields.io/twitter/follow/msftorleans.svg?style=social&logo=twitter)](https://twitter.com/intent/follow?screen_name=msftorleans)

[![Discord](https://discordapp.com/api/guilds/333727978460676096/widget.png?style=banner2)](https://aka.ms/orleans-discord)

### Orleans is a cross-platform framework for building robust, scalable distributed applications

Orleans builds on the developer productivity of .NET and brings it to the world of distributed applications, such as cloud services. Orleans scales from a single on-premises server to globally distributed, highly-available applications in the cloud.

Orleans takes familiar concepts like objects, interfaces, async/await, and try/catch and extends them to multi-server environments. As such, it helps developers experienced with single-server applications transition to building resilient, scalable cloud services and other distributed applications. For this reason, Orleans has often been referred to as "Distributed .NET".

It was created by [Microsoft Research](http://research.microsoft.com/projects/orleans/) and introduced the [Virtual Actor Model](https://www.microsoft.com/en-us/research/publication/orleans-distributed-virtual-actors-for-programmability-and-scalability/) as a novel approach to building a new generation of distributed systems for the Cloud era. The core contribution of Orleans is its programming model which tames the complexity inherent to highly-parallel distributed systems without restricting capabilities or imposing onerous constraints on the developer.

## Grains

![A grain is composed of a stable identity, behavior, and state](assets/grain_formulation.svg)

The fundamental building block in any Orleans application is a *grain*. Grains are entities comprising user-defined identity, behavior, and state. Grain identities are user-defined keys which make Grains always available for invocation. Grains can be invoked by other grains or by external clients such as Web frontends, via strongly-typed communication interfaces (contracts). Each grain is an instance of a class which implements one or more of these interfaces.

Grains can have volatile and/or persistent state that can be stored in any storage system. As such, grains implicitly partition application state, enabling automatic scalability and simplifying recovery from failures. Grain state is kept in memory while the grain is active, leading to lower latency and less load on data stores.

<p align="center">
  <image src="assets/managed_lifecycle.svg" alt="A diagram showing the managed lifecycle of a grain">
</p>

Instantiation of grains is automatically performed on demand by the Orleans runtime. Grains which are not used for a while are automatically removed from memory to free up resources. This is possible because of their stable identity, which allows invoking grains whether they are already loaded into memory or not. This also allows for transparent recovery from failure because the caller does not need to know on which server a grain is instantiated on at any point in time. Grains have a managed lifecycle, with the Orleans runtime responsible for activating/deactivating, and placing/locating grains as needed. This allows the developer to write code as if all grains were always in-memory.

Taken together, the stable identity, statefulness, and managed lifecycle of Grains are core factors that make systems built on Orleans scalable, performant, &amp; reliable without forcing developers to write complex distributed systems code.

### Example: IoT cloud backend

Consider a cloud backend for an [Internet of Things](https://en.wikipedia.org/wiki/Internet_of_things) system. This application needs to process incoming device data, filter, aggregate, and process this information, and enable sending commands to devices. In Orleans, it is natural to model each device with a grain which becomes a *digital twin* of the physical device it corresponds to. These grains keep the latest device data in memory, so that they can be quickly queried and processed without the need to communicate with the physical device directly. By observing streams of time-series data from the device, the grain can detect changes in conditions, such as measurements exceeding a threshold, and trigger an action.

A simple thermostat could be modeled as follows:

```csharp
public interface IThermostat : IGrainWithStringKey
{
    Task<List<Command>> OnUpdate(ThermostatStatus update);
}
```

Events arriving from the thermostat from a Web frontend can be sent to its grain by invoking the `OnUpdate` method which optionally returns a command back to the device.

```csharp
var thermostat = client.GetGrain<IThermostat>(id);
return await thermostat.OnUpdate(update);
```

The same thermostat grain can implement a separate interface for control systems to interact with:

```csharp
public interface IThermostatControl : IGrainWithStringKey
{
    Task<ThermostatStatus> GetStatus();

    Task UpdateConfiguration(ThermostatConfiguration config);
}
```

These two interfaces (`IThermostat` and `IThermostatControl`) are implemented by a single implementation class:

```csharp
public class ThermostatGrain : Grain, IThermostat, IThermostatControl
{
    private ThermostatStatus _status;
    private List<Command> _commands;

    public Task<List<Command>> OnUpdate(ThermostatStatus status)
    {
        _status = status;
        var result = _commands;
        _commands = new List<Command>();
        return Task.FromResult(result);
    }
    
    public Task<ThermostatStatus> GetStatus() => Task.FromResult(_status);
    
    public Task UpdateConfiguration(ThermostatConfiguration config)
    {
        _commands.Add(new ConfigUpdateCommand(config));
        return Task.CompletedTask;
    }
}
```

The `Grain` class above does not persist its state. A more thorough example demonstrating state persistence is available in the docs, for more information see [Microsoft Orleans: Grain Persistence](https://docs.microsoft.com/dotnet/orleans/grains/grain-persistence).

## Orleans runtime

The Orleans runtime is what implements the programming model for applications. The main component of the runtime is the *silo*, which is responsible for hosting grains. Typically, a group of silos run as a cluster for scalability and fault-tolerance. When run as a cluster, silos coordinate with each other to distribute work, detect and recover from failures. The runtime enables grains hosted in the cluster to communicate with each other as if they are within a single process.

In addition to the core programming model, the silo provides grains with a set of runtime services, such as timers, reminders (persistent timers), persistence, transactions, streams, and more. See the [features section](#features) below for more detail.

Web frontends and other external clients call grains in the cluster using the client library which automatically manages network communication. Clients can also be co-hosted in the same process with silos for simplicity.

Orleans is compatible with .NET Standard 2.0 and above, running on Windows, Linux, and macOS, in full .NET Framework or .NET Core.

## Features

Orleans is a feature-rich framework. It provides a set of services that enable the development of distributed systems. The following sections describe the features of Orleans.

### Persistence

Orleans provides a simple persistence model which ensures that state is available to a grain before requests are processed and that consistency is maintained. Grains can have multiple named persistent data objects, for example, one called "profile" for a user's profile and one called "inventory" for their inventory. This state can be stored in any storage system. For example, profile data may be stored in one database and inventory in another. While a grain is running, this state is kept in memory so that read requests can be served without accessing storage. When the grain updates its state, a `state.WriteStateAsync()` call ensures that the backing store is updated for durability and consistency. For more information see [Microsoft Orleans: Grain Persistence](https://docs.microsoft.com/dotnet/orleans/grains/grain-persistence).

### Distributed ACID transactions

In addition to the simple persistence model described above, grains can have *transactional state*. Multiple grains can participate in [ACID](https://en.wikipedia.org/wiki/ACID) transactions together regardless of where their state is ultimately stored. Transactions in Orleans are distributed and decentralized (there is no central transaction manager or transaction coordinator) and have [serializable isolation](https://en.wikipedia.org/wiki/Isolation_(database_systems)#Isolation_levels). For more information, see the [Microsoft Orleans: Transactions](https://docs.microsoft.com/dotnet/orleans/grains/transactions).

### Streams

Streams help developers to process series of data items in near-real time. Streams in Orleans are *managed*: streams do not need to be created or registered before a grain or client publishes to a stream or subscribes to a stream. This allows for greater decoupling of stream producers and consumers from each other and from the infrastructure. Stream processing is reliable: grains can store checkpoints (cursors) and reset to a stored checkpoint during activation or at any point afterwards.

Streams supports batch delivery of messages to consumers to improve efficiency and recovery performance.
Streams are backed by queueing services such as Azure Event Hubs, Amazon Kinesis, and others. An arbitrary number of streams can be multiplexed onto a smaller number of queues and the responsibility for processing these queues is balanced evenly across the cluster.

### Timers &amp; reminders

Reminders are a durable scheduling mechanism for grains. They can be used to ensure that some action is completed at a future point even if the grain is not currently activated at that time. Timers are the non-durable counterpart to reminders and can be used for high-frequency events which do not require reliability. For more information, see [Microsoft Orleans: Timers and reminders](https://docs.microsoft.com/dotnet/orleans/grains/timers-and-reminders).

### Flexible grain placement

When a grain is activated in Orleans, the runtime decides which server (silo) to activate that grain on. This is called grain placement. The placement process in Orleans is fully configurable: developers can choose from a set of out-of-the-box placement policies such as random, prefer-local, and load-based, or custom logic can be configured. This allows for full flexibility in deciding where grains are created. For example, grains can be placed on a server close to resources which they need to operate on or other grains which they communicate with.

### Grain versioning &amp; heterogeneous clusters

Application code evolves over time and upgrading live, production systems in a manner which safely accounts for these changes can be challenging, particularly in stateful systems. Grain interfaces in Orleans can be optionally versioned. The cluster maintains a mapping of which grain implementations are available on which silos in the cluster and the versions of those implementations. This version information is used by the runtime in conjunction with placement strategies to make placement decisions when routing calls to grains. In addition to safe update of versioned grains, this also enables heterogeneous clusters, where different silos have different sets of grain implementations available. For more information, see [Microsoft Orleans: Grain interface versioning](https://docs.microsoft.com/dotnet/orleans/grains/grain-versioning/grain-versioning).

### Elastic scalability &amp; fault tolerance

Orleans is designed to scale elastically. When a silo joins a cluster it is able to accept new activations and when a silo leaves the cluster (either because of scale down or a machine failure) the grains which were activated on that silo will be re-activated on remaining silos as needed. An Orleans cluster can be scaled down to a single silo. The same properties which enable elastic scalability also enable fault tolerance: the cluster automatically detects and quickly recovers from failures.

### Run anywhere

Orleans runs anywhere that .NET Core or .NET Framework are supported. This includes hosting on Linux, Windows, and macOS and deploying to Kubernetes, virtual or physical machines, on premises or in the cloud, and PaaS services such as Azure Container Apps, Azure App Service, and Azure Kubernetes Service.

### Stateless workers

Stateless workers are specially marked grains which do not have any associated state and can be activated on multiple silos simultaneously. This enables increased parallelism for stateless functions. For more information, see [Microsoft Orleans: Stateless worker grains](https://docs.microsoft.com/dotnet/orleans/grains/stateless-worker-grains) documentation.

### Grain call filters

Logic which is common to many grains can be expressed as [an interceptor, or Grain call filter](https://docs.microsoft.com/dotnet/orleans/grains/interceptors). Orleans supports filters for both incoming and outgoing calls. Some common use-cases of filters are: authorization, logging and telemetry, and error handling.

### Request context

Metadata and other information can be passed along a series of requests using [request context](https://docs.microsoft.com/dotnet/orleans/grains/request-context). Request context can be used for holding distributed tracing information or any other user-defined values.

## Documentation

The official documentation for Microsoft Orleans is available at <https://docs.microsoft.com/dotnet/orleans>.

## [Samples](./samples/#readme)

A variety of samples are available in the official [.NET Samples Browser](https://docs.microsoft.com/samples/browse/?terms=orleans).

## Get started

Please see the [getting started tutorial](https://docs.microsoft.com/dotnet/orleans/tutorials-and-samples/tutorial-1).

### Building

On Windows, run the `build.cmd` script to build the NuGet packages locally, then reference the required NuGet packages from `/Artifacts/Release/*`.
You can run `Test.cmd` to run all BVT tests, and `TestAll.cmd` to also run Functional tests.

On Linux and macOS, run `dotnet build` to build Orleans.

## Official builds

The latest stable, production-quality release is located [here](https://github.com/dotnet/orleans/releases/latest).

Nightly builds are published to [a NuGet feed](https://pkgs.dev.azure.com/dnceng/public/_packaging/orleans-nightly/nuget/v3/index.json). These builds pass all functional tests, but are not thoroughly tested as the stable builds or pre-release builds published to NuGet.

<details>
<summary>
Using the nightly build packages in your project
</summary>

To use nightly builds in your project, add the MyGet feed using either of the following methods:

1. Changing the .csproj file to include this section:

```xml
<ItemGroup>
  <RestoreSources>
    $(RestoreSources);
    https://pkgs.dev.azure.com/dnceng/public/_packaging/orleans-nightly/nuget/v3/index.json
  </RestoreSources>
</ItemGroup>
```

or

1. Creating a `NuGet.config` file in the solution directory with the following contents:

```xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear /> 
    <add key="orleans-nightly" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/orleans-nightly/nuget/v3/index.json" />
    <add key="nuget" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>
```

</details>

## Community

[![Discord](https://discordapp.com/api/guilds/333727978460676096/widget.png?style=banner4)](https://aka.ms/orleans-discord)
    
* Ask questions by [opening an issue on GitHub](https://github.com/dotnet/orleans/issues) or on [Stack Overflow](https://stackoverflow.com/questions/ask?tags=orleans)
* [Chat on Discord](https://aka.ms/orleans-discord)
* Follow the [@msftorleans](https://twitter.com/msftorleans) Twitter account for Orleans announcements.
* [OrleansContrib - GitHub organization for community add-ons to Orleans](https://github.com/OrleansContrib/) Various community projects, including Monitoring, Design Patterns, Storage Providers, etc.
* Guidelines for developers wanting to [contribute code changes to Orleans](CONTRIBUTING.md).
* You are also encouraged to report bugs or start a technical discussion by starting a new [thread](https://github.com/dotnet/orleans/issues) on GitHub.

## License

This project is licensed under the [MIT license](LICENSE).

## Quick links

* [Microsoft Research project home](http://research.microsoft.com/projects/orleans/)
* Technical Report: [Distributed Virtual Actors for Programmability and Scalability](http://research.microsoft.com/apps/pubs/default.aspx?id=210931)
* [Microsoft Orleans: Documentation](https://docs.microsoft.com/dotnet/orleans/)
* [Contributing](CONTRIBUTING.md)


================================================
FILE: SUPPORT.md
================================================
# Support

## How to file issues and get help  

This project uses GitHub [Issues](https://github.com/dotnet/orleans/issues) to track bugs and feature requests. Please search the existing 
issues before filing new issues to avoid duplicates. For new issues, file your bug or feature request as a [new Issue](https://github.com/dotnet/orleans/issues/new).

## Community

The Orleans community enjoys a lively discussion on our [Discord server](https://aka.ms/orleans-discord), and in the Issues customers file here on GitHub. If you would like to engage with our active, friendly community, use one of the links below to find someone who can help. 

[![Discord](https://discordapp.com/api/guilds/333727978460676096/widget.png?style=banner4)](https://aka.ms/orleans-discord)
    
* Ask questions by [opening an issue on GitHub](https://github.com/dotnet/orleans/issues) or on [Stack Overflow](https://stackoverflow.com/questions/ask?tags=orleans)
* [Chat on Discord](https://aka.ms/orleans-discord)
* Follow the [@msftorleans](https://twitter.com/msftorleans) Twitter account for Orleans announcements.
* [OrleansContrib - GitHub organization for community add-ons to Orleans](https://github.com/OrleansContrib/) Various community projects, including Monitoring, Design Patterns, Storage Providers, etc.
* Guidelines for developers wanting to [contribute code changes to Orleans](CONTRIBUTING.md).
* You are also encouraged to report bugs or start a technical discussion by starting a new [thread](https://github.com/dotnet/orleans/issues) on GitHub.

## Microsoft Support Policy  

Orleans is officially supported by Microsoft. Customers with support contracts can create support tickets via https://aka.ms/orleanssupport. Orleans is listed under ASP.NET Core:
![image](https://github.com/dotnet/orleans/assets/203839/30b02291-06a1-4364-9e1c-9a06209c386d)


================================================
FILE: Test.cmd
================================================
@if not defined _echo @echo off
setlocal

if not defined BuildConfiguration SET BuildConfiguration=Debug

SET CMDHOME=%~dp0
@REM Remove trailing backslash \
set CMDHOME=%CMDHOME:~0,-1%

:: Clear the 'Platform' env variable for this session, as it's a per-project setting within the build, and
:: misleading value (such as 'MCD' in HP PCs) may lead to build breakage (issue: #69).
set Platform=

:: Disable multilevel lookup https://github.com/dotnet/core-setup/blob/main/Documentation/design-docs/multilevel-sharedfx-lookup.md
set DOTNET_MULTILEVEL_LOOKUP=0

pushd "%CMDHOME%"
@cd

SET TestResultDir=%CMDHOME%\Binaries\%BuildConfiguration%\TestResults

if not exist %TestResultDir% md %TestResultDir%

SET _Directory=bin\%BuildConfiguration%\net461\win10-x64

set TESTS=^
'%CMDHOME%\test\Extensions\TesterAzureUtils',^
'%CMDHOME%\test\TesterInternal',^
'%CMDHOME%\test\Tester',^
'%CMDHOME%\test\DefaultCluster.Tests',^
'%CMDHOME%\test\NonSilo.Tests',^
'%CMDHOME%\test\Extensions\AWSUtils.Tests',^
'%CMDHOME%\test\Extensions\Consul.Tests',^
'%CMDHOME%\test\Extensions\ServiceBus.Tests',^
'%CMDHOME%\test\Extensions\TesterAdoNet',^
'%CMDHOME%\test\Extensions\TesterZooKeeperUtils',^
'%CMDHOME%\test\Transactions\Orleans.Transactions.Tests',^
'%CMDHOME%\test\Transactions\Orleans.Transactions.Azure.Test',^
'%CMDHOME%\test\TestInfrastructure\Orleans.TestingHost.Tests',^
'%CMDHOME%\test\DependencyInjection.Tests',^
'%CMDHOME%\test\Orleans.Connections.Security.Tests',^
'%CMDHOME%\test\Analyzers.Tests'"

@Echo Test assemblies = %TESTS%

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& ./Parallel-Tests.ps1 -directories %TESTS% -dotnet '%_dotnet%'"
set testresult=%errorlevel%
popd
endlocal&set testresult=%testresult%
exit /B %testresult%


================================================
FILE: TestAll.cmd
================================================
@setlocal
@ECHO off

SET CMDHOME=%~dp0
@REM Remove trailing backslash \
set CMDHOME=%CMDHOME:~0,-1%

@REM Due to more of Windows .cmd script parameter passing quirks, we can't pass this value as cmdline argument, 
@REM  so we need to pass it in through the back door as environment variable, scoped by setlocal
set TEST_FILTERS=Category=BVT^|Category=SlowBVT^|Category=Functional

@REM Note: We transfer _complete_ control to the Test.cmd script here because we don't use CALL.

"%CMDHOME%\Test.cmd" %1

@REM Note: Execution will NOT return here, and the exit code returned to the caller will be whatever the other script returned.


================================================
FILE: build.ps1
================================================
# --------------------
# Orleans build script
# --------------------

. ./common.ps1

$scriptDir = Split-Path $script:MyInvocation.MyCommand.Path
$solution = Join-Path $scriptDir "Orleans.slnx"

# Define build flags & config
if ($null -eq $env:BUILD_FLAGS)
{
    $env:BUILD_FLAGS = "/m /v:m"
}
if ($null -eq $env:BuildConfiguration)
{
    $env:BuildConfiguration = "Debug"
}

# Clear the 'Platform' env variable for this session, as it's a per-project setting within the build, and
# misleading value (such as 'MCD' in HP PCs) may lead to build breakage (issue: #69).
$Platform = $null

# Disable multilevel lookup https://github.com/dotnet/core-setup/blob/main/Documentation/design-docs/multilevel-sharedfx-lookup.md
 $DOTNET_MULTILEVEL_LOOKUP = 0

$BuildProperties = "/p:Configuration=$env:BuildConfiguration";

 # Set DateTime suffix for debug builds
 if ($env:BuildConfiguration -eq "Debug")
 {
    $dateSuffix = Get-Date -Format "yyyyMMddHHmm"
    $BuildProperties = $BuildProperties + " /p:VersionDateSuffix=$dateSuffix"
 }

Write-Output "===== Building $solution ====="

Install-Dotnet

if ($args[0] -ne "Pack")
{
    Write-Output "Build $env:BuildConfiguration =============================="
    Invoke-Dotnet -Command "restore" -Arguments "$env:BUILD_FLAGS /bl:${env:BuildConfiguration}-Restore.binlog ${BuildProperties} `"$solution`""
    Invoke-Dotnet -Command "build" -Arguments "$env:BUILD_FLAGS /bl:${env:BuildConfiguration}-Build.binlog ${BuildProperties} `"$solution`""
}

Write-Output "Package $env:BuildConfiguration ============================"
Invoke-Dotnet -Command "pack" -Arguments "--no-build --no-restore $BUILD_FLAGS /bl:${env:BuildConfiguration}-Pack.binlog ${BuildProperties} `"$solution`""

Write-Output "===== Build succeeded for $solution ====="


================================================
FILE: common.ps1
================================================
function Install-Dotnet 
{
   $installDotnet = $true
   try 
   {
       # Check that the dotnet.exe command exists
       Get-Command dotnet.exe 2>&1 | Out-Null
       # Read the version from global.json
       $globalJson = Get-Content .\global.json | ConvertFrom-Json
       $requiredVersion = $globalJson.sdk.version
       # Check versions already installed
       $localVersions = dotnet --list-sdks |% {  $_.Split(" ")[0] }
       Write-Output "Required SDK: $requiredVersion"
       Write-Output "Installed SDKs: $localversions"
       # If the required version is not installed, we will call the installation script
       $installDotnet = !$localVersions.Contains($globalJson.sdk.version)
   }
   catch
   {
       Write-Output "dotnet not found"
       # do nothing, we will install dotnet
   }

   if ($installDotnet)
   {
       Write-Output "Installing dotnet ${requiredVersion}"

       New-Item -ItemType Directory -Force -Path .\Tools | Out-Null

       [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
       Invoke-WebRequest `
           -Uri "https://dot.net/v1/dotnet-install.ps1" `
           -OutFile ".\Tools\dotnet-install.ps1"

       & .\Tools\dotnet-install.ps1 -InstallDir Tools\dotnetcli\ -JSonFile .\global.json
   }
}

function Invoke-Dotnet 
{
   param 
   (
       $Command,
       $Arguments
   )
   $cmdArgs = @()
   $cmdArgs = $cmdArgs + $Command
   $cmdArgs = $cmdArgs + ($Arguments -split "\s+")
   Write-Output "dotnet $cmdArgs"
   & dotnet $cmdArgs
   if ($LASTEXITCODE -ne 0)
   {
       Write-Error "===== Build FAILED -- $Command with error $LASTEXITCODE - CANNOT CONTINUE ====="
       Exit $LASTEXITCODE
   }
}

================================================
FILE: distributed-tests.yml
================================================
variables:
  clusterId: '{{ "now" | date: "%s" }}'
  serviceId: '{{ "now" | date: "%s" }}'
  framework: net8.0

jobs:
  server:
    source:
      localFolder: Artifacts/DistributedTests/DistributedTests.Server/{{framework}}
    executable: DistributedTests.Server.exe
    readyStateText: Orleans Silo started.
    framework: net8.0
    arguments: "{{configurator}} --clusterId {{clusterId}} --serviceId {{serviceId}} --azureQueueUri {{azureQueueUri}} --azureTableUri {{azureTableUri}} {{configuratorOptions}}"
    onConfigure:
      - if (job.endpoints.Count > 0) {
          job.endpoints.RemoveRange(job.variables.instances, job.endpoints.Count - job.variables.instances);
        }
  client:
    source:
      localFolder: Artifacts/DistributedTests/DistributedTests.Client/{{framework}}
    executable: DistributedTests.Client.exe
    waitForExit: true
    framework: net8.0
    arguments: "{{command}} --clusterId {{clusterId}} --serviceId {{serviceId}} --azureQueueUri {{azureQueueUri}} --azureTableUri {{azureTableUri}} {{commandOptions}}"
    onConfigure:
      - if (job.endpoints.Count > 0) {
          job.endpoints.Reverse();
          job.endpoints.RemoveRange(job.variables.instances, job.endpoints.Count - job.variables.instances);
        }

scenarios:
  ping:
    server:
      job: server
      variables:
        instances: 10
        configurator: SimpleSilo
    client:
      job: client
      variables:
        command: ping
        instances: 1
        numWorkers: 250
        blocksPerWorker: 0
        requestsPerBlock: 500
        duration: 120
        commandOptions: "--numWorkers {{numWorkers}} --blocksPerWorker {{blocksPerWorker}} --requestsPerBlock {{requestsPerBlock}} --duration {{duration}}"
  fanout:
    server:
      job: server
      variables:
        instances: 10
        configurator: SimpleSilo
    client:
      job: client
      variables:
        command: fan-out
        instances: 1
        numWorkers: 1
        blocksPerWorker: 0
        requestsPerBlock: 50
        duration: 240
        commandOptions: "--numWorkers {{numWorkers}} --blocksPerWorker {{blocksPerWorker}} --requestsPerBlock {{requestsPerBlock}} --duration {{duration}}"
  streaming:
    server:
      job: server
      variables:
        instances: 10
        configurator: EventGeneratorStreamingSilo
        duration: 300
        type: ExplicitGrainBasedAndImplicit
        streamsPerQueue: 1000
        queueCount: 8
        wait: 20
        configuratorOptions: "--type {{type}} --streamsPerQueue {{streamsPerQueue}} --queueCount {{queueCount}} --wait {{wait}} --duration {{duration}}"
    client:
      job: client
      variables:
        command: counter
        instances: 1
        commandOptions: "requests errors"
  reliability:
    server:
      job: server
      variables:
        instances: 10
        configurator: SimpleSilo
    chaosagent:
      job: client
      waitForExit: false
      variables:
        command: chaosagent
        instances: 1
        wait: 30
        serversPerRound: 1
        rounds: 4
        roundDelay: 30
        graceful: false
        restart: true
        commandOptions: "--wait {{wait}} --serversPerRound {{serversPerRound}} --rounds {{rounds}} --roundDelay {{roundDelay}} --graceful {{graceful}} --restart {{restart}}"
    client:
      job: client
      waitForExit: true
      variables:
        command: ping
        instances: 1
        numWorkers: 250
        blocksPerWorker: 0
        requestsPerBlock: 500
        duration: 180
        commandOptions: "--numWorkers {{numWorkers}} --blocksPerWorker {{blocksPerWorker}} --requestsPerBlock {{requestsPerBlock}} --duration {{duration}}"
  rolling:
    server:
      job: server
      variables:
        instances: 10
        configurator: SimpleSilo
    chaosagent:
      job: client
      waitForExit: false
      variables:
        command: chaosagent
        instances: 1
        wait: 30
        serversPerRound: 1
        rounds: 4
        roundDelay: 30
        graceful: true
        restart: true
        commandOptions: "--wait {{wait}} --serversPerRound {{serversPerRound}} --rounds {{rounds}} --roundDelay {{roundDelay}} --graceful {{graceful}} --restart {{restart}}"
    client:
      job: client
      waitForExit: true
      variables:
        command: ping
        instances: 1
        numWorkers: 250
        blocksPerWorker: 0
        requestsPerBlock: 500
        duration: 180
        commandOptions: "--numWorkers {{numWorkers}} --blocksPerWorker {{blocksPerWorker}} --requestsPerBlock {{requestsPerBlock}} --duration {{duration}}"

counters:
- provider: Microsoft.Orleans
  values:
  - name: app-requests
    measurement: orleans-counter/requests-per-second
    description: Request rate

  - name: activation-count
    measurement: orleans-counter/grain-activation-count
    description: Total number of grains

results:
# Microsoft.Orleans counters
- name: orleans-counter/requests-per-second
  measurement: orleans-counter/requests-per-second
  description: Request rate
  format: "n0"
  aggregate: max
  reduce: max
- name: orleans-counter/requests-per-second/95
  measurement: orleans-counter/requests-per-second
  description: Request rate
  format: "n0"
  aggregate: percentile95
  reduce: max
- name: activation-count
  measurement: orleans-counter/grain-activation-count
  description: Active grains

profiles:
  local:
    variables:
      azureQueueUri: "http://127.0.0.1:10001"
      azureTableUri: "http://127.0.0.1:10002"
    jobs:
      server:
        endpoints:
          - http://localhost:5010
        variables:
          instances: 1
      client:
        endpoints:
          - http://localhost:5010
      chaosagent:
        endpoints:
          - http://localhost:5010

================================================
FILE: es-metadata.yml
================================================
schemaVersion: 0.0.1
isProduction: true
accountableOwners:
  service: 29f743e3-3a8f-4955-89e1-dcd58905919a
routing:
  defaultAreaPath:
    org: devdiv
    path: DevDiv\ASP.NET Core


================================================
FILE: global.json
================================================
{
  "sdk": {
    "rollForward": "major",
    "version": "10.0.103"
  }
}


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.AppHost/ActivationRebalancing.AppHost.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <Sdk Name="Aspire.AppHost.Sdk" Version="13.0.0" />

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsAspireHost>true</IsAspireHost>
    <UserSecretsId>6e52d7b6-4f1f-4e1c-abef-df2fe839e7f2</UserSecretsId>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Aspire.Hosting.AppHost" />
    <PackageReference Include="Aspire.Hosting.Orleans" />
    <PackageReference Include="Aspire.Hosting.Redis" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\ActivationRebalancing.Cluster\ActivationRebalancing.Cluster.csproj" />
    <ProjectReference Include="..\ActivationRebalancing.Frontend\ActivationRebalancing.Frontend.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.AppHost/Program.cs
================================================
using Aspire.Hosting;

var builder = DistributedApplication.CreateBuilder(args);

var redis = builder.AddRedis("orleans-redis");

var orleans = builder.AddOrleans("cluster")
    .WithClustering(redis);

var backend = builder.AddProject<Projects.ActivationRebalancing_Cluster>("backend")
    .WithReference(orleans)
    .WaitFor(redis)
    .WithReplicas(5);

builder.AddProject<Projects.ActivationRebalancing_Frontend>("frontend")
    .WithReference(orleans.AsClient())
    .WaitFor(backend)
    .WithReplicas(1);

builder.Build().Run();


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.AppHost/Properties/launchSettings.json
================================================
{
  "$schema": "https://json.schemastore.org/launchsettings.json",
  "profiles": {
    "https": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:17267;http://localhost:15094",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "DOTNET_ENVIRONMENT": "Development",
        "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21125",
        "DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22078"
      }
    },
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "http://localhost:15094",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "DOTNET_ENVIRONMENT": "Development",
        "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19108",
        "DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20187"
      }
    }
  }
}


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.AppHost/appsettings.Development.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  }
}


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.AppHost/appsettings.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Aspire.Hosting.Dcp": "Warning"
    }
  }
}


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.Cluster/ActivationRebalancing.Cluster.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <OrleansBuildTimeCodeGen>true</OrleansBuildTimeCodeGen>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Aspire.StackExchange.Redis" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\..\..\src\Orleans.Server\Orleans.Server.csproj" />
    <ProjectReference Include="..\..\..\src\Redis\Orleans.Clustering.Redis\Orleans.Clustering.Redis.csproj" />
  </ItemGroup>

</Project>

================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.Cluster/Program.cs
================================================
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Orleans.Configuration;

var builder = Host.CreateApplicationBuilder(args);
builder.AddKeyedRedisClient("orleans-redis");
builder.Logging.AddFilter("Orleans.Runtime.Placement.Rebalancing", LogLevel.Trace);
#pragma warning disable ORLEANSEXP002
builder.UseOrleans(builder => builder
    .Configure<GrainCollectionOptions>(o =>
    {
        o.CollectionQuantum = TimeSpan.FromSeconds(15);
    })
    .Configure<ResourceOptimizedPlacementOptions>(o =>
    {
        o.LocalSiloPreferenceMargin = 0;
    })
    .Configure<ActivationRebalancerOptions>(o =>
    {
        o.RebalancerDueTime = TimeSpan.FromSeconds(5);
        o.SessionCyclePeriod = TimeSpan.FromSeconds(5);
        // uncomment these below, if you want higher migration rate
        //o.CycleNumberWeight = 1;
        //o.SiloNumberWeight = 0; 
    })
    .AddActivationRebalancer());
#pragma warning restore ORLEANSEXP002

builder.Services.AddHostedService<LoadDriverBackgroundService>();
var app = builder.Build();

await app.RunAsync();

internal class LoadDriverBackgroundService(IGrainFactory client) : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            for (var i = 0; i < 5 * Random.Shared.Next(1, 1000); i++)
            {
                await client.GetGrain<IRebalancingTestGrain>(Guid.NewGuid()).Ping();
            }

            await Task.Delay(Random.Shared.Next(500, 1_000), stoppingToken);
        }
    }
}

public interface IRebalancingTestGrain : IGrainWithGuidKey
{
    Task Ping();
}

[CollectionAgeLimit(Minutes = 0.5)]
public class RebalancingTestGrain : Grain, IRebalancingTestGrain
{
    public Task Ping() => Task.CompletedTask;
}


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.Frontend/ActivationRebalancing.Frontend.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <OrleansBuildTimeCodeGen>true</OrleansBuildTimeCodeGen>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Aspire.StackExchange.Redis" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\..\..\src\Orleans.Server\Orleans.Server.csproj" />
    <ProjectReference Include="..\ActivationRebalancing.Cluster\ActivationRebalancing.Cluster.csproj" />
    <ProjectReference Include="..\..\..\src\Redis\Orleans.Clustering.Redis\Orleans.Clustering.Redis.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.Frontend/Controllers/StatsController.cs
================================================
using Microsoft.AspNetCore.Mvc;
using Orleans.Runtime;
using Orleans;

namespace ActivationRebalancing.Frontend.Controllers;

[ApiController]
[Route("api/[controller]")]
public class StatsController(IClusterClient clusterClient) : ControllerBase
{
    [HttpGet("silos")]
    public async Task<IActionResult> GetStats()
    {
        var grainStats = await clusterClient
            .GetGrain<IManagementGrain>(0)
            .GetDetailedGrainStatistics();

        var siloData = grainStats.GroupBy(stat => stat.SiloAddress)
            .Select(g => new SiloData(g.Key.ToString(), g.Count()))
            .ToList();

        if (siloData.Count == 4)
        {
            siloData = [.. siloData, new SiloData("x", 0)];
        }

        if (siloData.Count > 5)
        {
            throw new NotSupportedException("The frontend cant support more than 6 silos");
        }

        return Ok(siloData);
    }
}

public record SiloData(string Host, int Activations);

================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.Frontend/Program.cs
================================================
using Orleans.Hosting;

var builder = WebApplication.CreateBuilder(args);

builder.AddKeyedRedisClient("orleans-redis");
builder.UseOrleansClient();
builder.Services.AddControllers();

var app = builder.Build();

var options = new DefaultFilesOptions();
options.DefaultFileNames.Clear();
options.DefaultFileNames.Add("index.html");

app.UseDefaultFiles(options);
app.UseStaticFiles();
app.MapControllers();
app.Run();


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.Frontend/Properties/launchSettings.json
================================================
{
  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "index.html",
      "applicationUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.Frontend/appsettings.Development.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  }
}


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.Frontend/appsettings.json
================================================
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}


================================================
FILE: playground/ActivationRebalancing/ActivationRebalancing.Frontend/wwwroot/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Orleans Activation Load Balancing</title>
  <script src="https://d3js.org/d3.v7.min.js"></script>
  <style>
    :root {
      --primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
      --secondary-gradient: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
      --card-bg: rgba(255, 255, 255, 0.95);
      --card-dark-bg: rgba(44, 62, 80, 0.95);
      --text-primary: #2c3e50;
      --text-secondary: #7f8c8d;
      --text-light: #ecf0f1;
      --border-radius: 16px;
      --shadow-soft: 0 10px 40px rgba(0, 0, 0, 0.1);
      --shadow-strong: 0 20px 60px rgba(0, 0, 0, 0.15);
      --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    }

    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    body {
      font-family: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;
      background: var(--primary-gradient);
      height: 100vh;
      color: var(--text-primary);
      padding: 12px;
      line-height: 1.6;
      overflow: hidden;
      display: flex;
      flex-direction: column;
    }

    .container {
      height: 100%;
      display: flex;
      flex-direction: column;
    }

    .header {
      text-align: center;
      margin-bottom: 16px;
      flex-shrink: 0;
    }

    h1 {
      color: white;
      font-size: clamp(1.5rem, 3vw, 2.5rem);
      font-weight: 700;
      margin-bottom: 6px;
      text-shadow: 0 4px 8px rgba(0,0,0,0.2);
      letter-spacing: -0.02em;
    }

    .subtitle {
      color: rgba(255, 255, 255, 0.9);
      font-size: clamp(0.9rem, 1.5vw, 1.1rem);
      font-weight: 400;
      margin-bottom: 12px;
    }

    .dashboard-grid {
      display: flex;
      flex-direction: column;
      gap: 16px;
      flex: 1;
      min-height: 0;
    }

    .unified-chart-section {
      background: var(--card-dark-bg);
      border-radius: 12px;
      padding: 20px;
      -webkit-backdrop-filter: blur(10px);
      backdrop-filter: blur(10px);
      display: flex;
      flex-direction: column;
      flex: 1;
      min-height: 0;
    }

    .charts-container {
      display: grid;
      grid-template-columns: 4fr 1fr;
      gap: 20px;
      flex: 1;
      min-height: 0;
    }

    .line-chart-area {
      grid-column: 1;
      display: flex;
      flex-direction: column;
      min-height: 0;
    }

    .bar-chart-area {
      grid-column: 2;
      display: flex;
      flex-direction: column;
      min-height: 0;
    }

    .chart-subtitle {
      font-size: 0.9rem;
      font-weight: 500;
      color: rgba(236, 240, 241, 0.8);
      margin-bottom: 12px;
      display: flex;
      align-items: center;
      gap: 6px;
      flex-shrink: 0;
    }

    .bar {
      fill-opacity: 0.9;
      transition: var(--transition);
      filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.2));
    }

    .bar:hover {
      fill-opacity: 1;
      transform: scaleY(1.02);
    }

    .bar-label {
      text-anchor: middle;
      font-size: 13px;
      fill: var(--text-light);
      font-weight: 600;
      text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
    }

    .max-scale-label {
      font-weight: 500;
      fill: #bdc3c7;
      font-size: 11px;
    }

    .bar-chart {
      display: flex;
      justify-content: space-between;
      align-items: flex-end;
      flex: 1;
      gap: 8px;
      min-height: 0;
    }

    .line-chart {
      flex: 1;
      min-height: 0;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .line {
      filter: drop-shadow(0 3px 6px rgba(0,0,0,0.15));
      stroke-width: 3;
      transition: var(--transition);
    }

    .line:hover {
      stroke-width: 4;
      filter: drop-shadow(0 4px 12px rgba(0,0,0,0.25));
    }

    .legend {
      display: flex;
      justify-content: center;
      gap: 16px;
      margin-top: 12px;
      flex-wrap: wrap;
      flex-shrink: 0;
    }

    .legend-item {
      display: flex;
      align-items: center;
      gap: 6px;
      padding: 6px 10px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 20px;
      font-size: 0.8rem;
      color: var(--text-light);
      -webkit-backdrop-filter: blur(10px);
      backdrop-filter: blur(10px);
    }

    .legend-color {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      border: 2px solid rgba(255, 255, 255, 0.3);
    }

    .legend-color-1 { background-color: #ff6b6b; }
    .legend-color-2 { background-color: #4ecdc4; }
    .legend-color-3 { background-color: #45b7d1; }
    .legend-color-4 { background-color: #f9ca24; }
    .legend-color-5 { background-color: #dda0dd; }
    /* Grid styling for the density matrix */
    rect {
      transition: var(--transition);
      stroke: rgba(255, 255, 255, 0.1);
      stroke-width: 0.5;
    }

    rect:hover {
      stroke-width: 2;
      stroke: rgba(255, 255, 255, 0.6);
      filter: brightness(1.1);
    }

    /* Axis styling */
    .axis text {
      font-size: 12px;
      fill: var(--text-light);
      font-family: 'Inter', sans-serif;
    }

    .axis path,
    .axis line {
      fill: none;
      stroke: rgba(236, 240, 241, 0.3);
      shape-rendering: crispEdges;
      stroke-width: 1;
    }

    .axis-title {
      font-size: 14px;
      font-weight: 500;
      fill: var(--text-light);
    }

    /* Modern scrollbar */
    ::-webkit-scrollbar {
      width: 8px;
      height: 8px;
    }

    ::-webkit-scrollbar-track {
      background: rgba(255, 255, 255, 0.1);
      border-radius: 4px;
    }

    ::-webkit-scrollbar-thumb {
      background: rgba(255, 255, 255, 0.3);
      border-radius: 4px;
      transition: var(--transition);
    }

    ::-webkit-scrollbar-thumb:hover {
      background: rgba(255, 255, 255, 0.5);
    }

    /* Loading animation */
    @keyframes pulse {
      0%, 100% { opacity: 1; transform: scale(1); }
      50% { opacity: 0.7; transform: scale(1.1); }
    }

    @keyframes fadeIn {
      from { opacity: 0; transform: translateY(20px); }
      to { opacity: 1; transform: translateY(0); }
    }

    .loading {
      animation: pulse 2s infinite;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="header">
      <h1>Orleans Activation Load Balancing</h1>
      <p class="subtitle">Real-time monitoring and visualization of grain activation distribution across silos</p>
    </div>

    <div class="dashboard-grid">
      <div class="unified-chart-section">
        <div class="charts-container">
          <div class="line-chart-area">
            <div class="chart-subtitle">Timeline</div>
            <div id="line-chart" class="line-chart"></div>
          </div>

          <div class="bar-chart-area">
            <div class="chart-subtitle">Current Distribution</div>
            <div id="bar-charts" class="bar-chart"></div>
          </div>
        </div>

        <div class="legend">
          <div class="legend-item">
            <div class="legend-color legend-color-1"></div>
            <span>Silo 1</span>
          </div>
          <div class="legend-item">
            <div class="legend-color legend-color-2"></div>
            <span>Silo 2</span>
          </div>
          <div class="legend-item">
            <div class="legend-color legend-color-3"></div>
            <span>Silo 3</span>
          </div>
          <div class="legend-item">
            <div class="legend-color legend-color-4"></div>
            <span>Silo 4</span>
          </div>
          <div class="legend-item">
            <div class="legend-color legend-color-5"></div>
            <span>Silo 5</span>
          </div>
        </div>
      </div>
    </div>
  </div>

  <script>
    // Calculate dimensions based on available space
    const headerHeight = document.querySelector('.header').offsetHeight;
    const availableHeight = window.innerHeight - headerHeight - 60; // Account for padding and margins
    const availableWidth = window.innerWidth - 60; // Account for padding

    // For the line chart (takes up 80% of width)
    const lineChartWidth = availableWidth * 0.75; // Accounting for grid gap
    const lineChartHeight = availableHeight * 0.85;

    // For the bar charts (20% of width)
    const barChartWidth = 50;
    const barChartContainerHeight = availableHeight * 0.85;

    const colors = ['#ff6b6b', '#4ecdc4', '#45b7d1', '#f9ca24', '#dda0dd'];
    const numColors = colors.length;
    const maxDataPoints = 100;

    const svgBarCharts = d3.select("#bar-charts")
      .selectAll("svg")
      .data(colors)
      .enter()
      .append("svg")
      .attr("width", barChartWidth)
      .attr("height", barChartContainerHeight)
      .append("g")
      .attr("transform", `translate(${barChartWidth / 2}, 0)`);

    svgBarCharts.append("line")
      .attr("x1", 0)
      .attr("y1", barChartContainerHeight)
      .attr("x2", 0)
      .attr("y2", 0)
      .attr("stroke", "#ecf0f1")
      .attr("stroke-width", 1);

    svgBarCharts.append("line")
      .attr("x1", -barChartWidth / 2)
      .attr("y1", barChartContainerHeight)
      .attr("x2", barChartWidth / 2)
      .attr("y2", barChartContainerHeight)
      .attr("stroke", "#ecf0f1")
      .attr("stroke-width", 1);

    svgBarCharts.append("text")
      .attr("class", "bar-label")
      .attr("x", 0)
      .attr("y", barChartContainerHeight + 20)
      .text(d => "0");

    // Add max scale label at the top
    svgBarCharts.append("text")
      .attr("class", "max-scale-label")
      .attr("x", 0)
      .attr("y", -5)
      .attr("text-anchor", "middle")
      .attr("font-size", "10px")
      .attr("fill", "#666")
      .text("0");

    const svgLineChart = d3.select("#line-chart")
      .append("svg")
      .attr("width", lineChartWidth)
      .attr("height", lineChartHeight)
      .style("border-radius", "8px");

    const xScale = d3.scaleLinear()
      .domain([0, maxDataPoints - 1])
      .range([0, lineChartWidth - 50]);

    let yScale = d3.scaleLinear()
      .domain([0, 750])
      .
Download .txt
gitextract_hngr272l/

├── .azure/
│   └── pipelines/
│       ├── build.yaml
│       ├── github-mirror.yaml
│       ├── nightly-main.yaml
│       └── templates/
│           ├── build.yaml
│           └── vars.yaml
├── .azuredevops/
│   └── dependabot.yml
├── .config/
│   ├── 1espt/
│   │   └── PipelineAutobaseliningConfig.yml
│   ├── guardian/
│   │   └── .gdnbaselines
│   └── tsaoptions.json
├── .devcontainer/
│   └── devcontainer.json
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── copilot-instructions.md
│   ├── dependabot.yml
│   ├── eventhubs-emulator/
│   │   └── Config.json
│   ├── policies/
│   │   └── resourceManagement.yml
│   └── workflows/
│       ├── ci.yml
│       ├── codeql.yml
│       ├── generate-api-diffs.yml
│       └── locker.yml
├── .gitignore
├── Build.cmd
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE
├── NuGet.Config
├── Orleans.slnx
├── Parallel-Tests.ps1
├── README.md
├── SUPPORT.md
├── Test.cmd
├── TestAll.cmd
├── build.ps1
├── common.ps1
├── distributed-tests.yml
├── es-metadata.yml
├── global.json
├── playground/
│   ├── ActivationRebalancing/
│   │   ├── ActivationRebalancing.AppHost/
│   │   │   ├── ActivationRebalancing.AppHost.csproj
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   ├── appsettings.Development.json
│   │   │   └── appsettings.json
│   │   ├── ActivationRebalancing.Cluster/
│   │   │   ├── ActivationRebalancing.Cluster.csproj
│   │   │   └── Program.cs
│   │   └── ActivationRebalancing.Frontend/
│   │       ├── ActivationRebalancing.Frontend.csproj
│   │       ├── Controllers/
│   │       │   └── StatsController.cs
│   │       ├── Program.cs
│   │       ├── Properties/
│   │       │   └── launchSettings.json
│   │       ├── appsettings.Development.json
│   │       ├── appsettings.json
│   │       └── wwwroot/
│   │           ├── index.html
│   │           └── worker.js
│   ├── ActivationRepartitioning/
│   │   ├── ActivationRepartitioning.AppHost/
│   │   │   ├── ActivationRepartitioning.AppHost.csproj
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   ├── appsettings.Development.json
│   │   │   └── appsettings.json
│   │   └── ActivationRepartitioning.Frontend/
│   │       ├── ActivationRepartitioning.Frontend.csproj
│   │       ├── Data/
│   │       │   └── ClusterDiagnosticsService.cs
│   │       ├── Program.cs
│   │       ├── Properties/
│   │       │   └── launchSettings.json
│   │       ├── appsettings.Development.json
│   │       ├── appsettings.json
│   │       └── wwwroot/
│   │           ├── css/
│   │           │   ├── open-iconic/
│   │           │   │   ├── FONT-LICENSE
│   │           │   │   ├── ICON-LICENSE
│   │           │   │   ├── README.md
│   │           │   │   └── font/
│   │           │   │       └── fonts/
│   │           │   │           └── open-iconic.otf
│   │           │   └── site.css
│   │           └── index.html
│   ├── ActivationSheddingToy/
│   │   ├── ActivationSheddingToy.csproj
│   │   ├── ActivationSheddingToyHostedService.cs
│   │   └── Program.cs
│   ├── ChaoticCluster/
│   │   ├── ChaoticCluster.AppHost/
│   │   │   ├── ChaoticCluster.AppHost.csproj
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   ├── appsettings.Development.json
│   │   │   └── appsettings.json
│   │   ├── ChaoticCluster.ServiceDefaults/
│   │   │   ├── ChaoticCluster.ServiceDefaults.csproj
│   │   │   └── Extensions.cs
│   │   └── ChaoticCluster.Silo/
│   │       ├── ChaoticCluster.Silo.csproj
│   │       ├── Program.cs
│   │       └── SiloBuilderConfigurator.cs
│   ├── DashboardCohosted/
│   │   ├── DashboardCohosted.csproj
│   │   ├── Program.cs
│   │   ├── Properties/
│   │   │   └── launchSettings.json
│   │   └── README.md
│   ├── DashboardSeparateHost/
│   │   ├── DashboardSeparateHost.csproj
│   │   ├── Program.cs
│   │   ├── Properties/
│   │   │   └── launchSettings.json
│   │   └── README.md
│   └── Directory.Build.props
├── samples/
│   └── README.md
├── sign/
│   ├── NuGet.Config
│   ├── Sign.proj
│   ├── Sign.props
│   ├── packages.config
│   └── snk/
│       ├── 35MSSharedLib1024.snk
│       ├── AspNetCore.snk
│       ├── ECMA.snk
│       ├── MSFT.snk
│       ├── Open.snk
│       └── SilverlightPlatformPublicKey.snk
├── spelling.dic
├── src/
│   ├── AWS/
│   │   ├── Orleans.Clustering.DynamoDB/
│   │   │   ├── AWSUtilsHostingExtensions.cs
│   │   │   ├── DynamoDBClusteringProviderBuilder.cs
│   │   │   ├── Membership/
│   │   │   │   ├── DynamoDBGatewayListProvider.cs
│   │   │   │   ├── DynamoDBGatewayListProviderHelper.cs
│   │   │   │   ├── DynamoDBMembershipHelper.cs
│   │   │   │   ├── DynamoDBMembershipTable.cs
│   │   │   │   └── SiloInstanceRecord.cs
│   │   │   ├── Options/
│   │   │   │   ├── DynamoDBClusteringOptions.cs
│   │   │   │   ├── DynamoDBClusteringSiloOptions.cs
│   │   │   │   └── DynamoDBGatewayOptions.cs
│   │   │   ├── Orleans.Clustering.DynamoDB.csproj
│   │   │   └── README.md
│   │   ├── Orleans.Persistence.DynamoDB/
│   │   │   ├── Hosting/
│   │   │   │   ├── DynamoDBGrainStorageProviderBuilder.cs
│   │   │   │   ├── DynamoDBGrainStorageServiceCollectionExtensions.cs
│   │   │   │   └── DynamoDBGrainStorageSiloBuilderExtensions.cs
│   │   │   ├── Options/
│   │   │   │   └── DynamoDBStorageOptions.cs
│   │   │   ├── Orleans.Persistence.DynamoDB.csproj
│   │   │   ├── Provider/
│   │   │   │   └── DynamoDBGrainStorage.cs
│   │   │   └── README.md
│   │   ├── Orleans.Reminders.DynamoDB/
│   │   │   ├── DynamoDBRemindersProviderBuilder.cs
│   │   │   ├── DynamoDBServiceCollectionReminderExtensions.cs
│   │   │   ├── DynamoDBSiloBuilderReminderExtensions.cs
│   │   │   ├── Orleans.Reminders.DynamoDB.csproj
│   │   │   ├── README.md
│   │   │   └── Reminders/
│   │   │       ├── DynamoDBReminderTable.cs
│   │   │       ├── DynamoDbReminderServiceOptions.cs
│   │   │       ├── DynamoDbReminderStorageOptions.cs
│   │   │       └── DynamoDbReminderStorageOptionsExtensions.cs
│   │   ├── Orleans.Streaming.SQS/
│   │   │   ├── Hosting/
│   │   │   │   ├── ClientBuilderExtensions.cs
│   │   │   │   └── SiloBuilderExtensions.cs
│   │   │   ├── Orleans.Streaming.SQS.csproj
│   │   │   ├── README.md
│   │   │   ├── Storage/
│   │   │   │   └── SQSStorage.cs
│   │   │   └── Streams/
│   │   │       ├── SQSAdapter.cs
│   │   │       ├── SQSAdapterFactory.cs
│   │   │       ├── SQSAdapterReceiver.cs
│   │   │       ├── SQSBatchContainer.cs
│   │   │       ├── SQSStreamBuilder.cs
│   │   │       ├── SQSStreamProviderUtils.cs
│   │   │       └── SqsStreamOptions.cs
│   │   └── Shared/
│   │       ├── AWSUtils.cs
│   │       └── Storage/
│   │           ├── DynamoDBClientOptions.cs
│   │           └── DynamoDBStorage.cs
│   ├── AdoNet/
│   │   ├── Orleans.Clustering.AdoNet/
│   │   │   ├── AdoNetClusteringProviderBuilder.cs
│   │   │   ├── AdoNetHostingExtensions.cs
│   │   │   ├── Messaging/
│   │   │   │   ├── AdoNetClusteringTable.cs
│   │   │   │   └── AdoNetGatewayListProvider.cs
│   │   │   ├── Migrations/
│   │   │   │   ├── MySQL-Clustering-3.7.0.sql
│   │   │   │   ├── Oracle-Clustering-3.7.0.sql
│   │   │   │   ├── PostgreSQL-Clustering-3.6.0.sql
│   │   │   │   ├── PostgreSQL-Clustering-3.7.0.sql
│   │   │   │   └── SQLServer-Clustering-3.7.0.sql
│   │   │   ├── MySQL-Clustering.sql
│   │   │   ├── Options/
│   │   │   │   ├── AdoNetClusteringClientOptions.cs
│   │   │   │   ├── AdoNetClusteringClientOptionsValidator.cs
│   │   │   │   ├── AdoNetClusteringSiloOptions.cs
│   │   │   │   └── AdoNetReminderTableOptionsValidator.cs
│   │   │   ├── Oracle-Clustering.sql
│   │   │   ├── Orleans.Clustering.AdoNet.csproj
│   │   │   ├── PostgreSQL-Clustering.sql
│   │   │   ├── README.md
│   │   │   └── SQLServer-Clustering.sql
│   │   ├── Orleans.GrainDirectory.AdoNet/
│   │   │   ├── AdoNetGrainDirectory.cs
│   │   │   ├── AdoNetGrainDirectoryEntry.cs
│   │   │   ├── AdoNetGrainDirectoryOptions.cs
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── Hosting/
│   │   │   │   ├── AdoNetGrainDirectoryProviderBuilder.cs
│   │   │   │   ├── AdoNetGrainDirectoryServiceCollectionExtensions.cs
│   │   │   │   └── AdoNetGrainDirectorySiloBuilderExtensions.cs
│   │   │   ├── MySQL-GrainDirectory.sql
│   │   │   ├── Options/
│   │   │   │   └── AdoNetGrainDirectoryOptionsValidator.cs
│   │   │   ├── Orleans.GrainDirectory.AdoNet.csproj
│   │   │   ├── PostgreSQL-GrainDirectory.sql
│   │   │   ├── Properties/
│   │   │   │   └── Usings.cs
│   │   │   └── SQLServer-GrainDirectory.sql
│   │   ├── Orleans.Persistence.AdoNet/
│   │   │   ├── AdoNetGrainStorageProviderBuilder.cs
│   │   │   ├── Migrations/
│   │   │   │   └── PostgreSQL-Persistence-3.6.0.sql
│   │   │   ├── MySQL-Persistence.sql
│   │   │   ├── Options/
│   │   │   │   └── AdoNetGrainStorageOptions.cs
│   │   │   ├── Oracle-Persistence.sql
│   │   │   ├── Orleans.Persistence.AdoNet.csproj
│   │   │   ├── PostgreSQL-Persistence.sql
│   │   │   ├── README.md
│   │   │   ├── SQLServer-Persistence.sql
│   │   │   ├── Sqlite-Persistence.sql
│   │   │   └── Storage/
│   │   │       └── Provider/
│   │   │           ├── AdoGrainKey.cs
│   │   │           ├── AdoNetGrainStorage.cs
│   │   │           ├── AdoNetGrainStorageServiceCollectionExtensions.cs
│   │   │           ├── AdoNetGrainStorageSiloBuilderExtensions.cs
│   │   │           ├── IHasher.cs
│   │   │           ├── IStorageHashPicker.cs
│   │   │           ├── JenkinsHash.cs
│   │   │           ├── Orleans3CompatibleHasher.cs
│   │   │           ├── Orleans3CompatibleStorageHashPicker.cs
│   │   │           ├── Orleans3CompatibleStringKeyHasher.cs
│   │   │           ├── OrleansDefaultHasher.cs
│   │   │           ├── RelationalStorageProviderQueries.cs
│   │   │           └── StorageHasherPicker.cs
│   │   ├── Orleans.Reminders.AdoNet/
│   │   │   ├── AdoNetRemindersProviderBuilder.cs
│   │   │   ├── Migrations/
│   │   │   │   └── PostgreSQL-Reminders-3.6.0.sql
│   │   │   ├── MySQL-Reminders.sql
│   │   │   ├── Oracle-Reminders.sql
│   │   │   ├── Orleans.Reminders.AdoNet.csproj
│   │   │   ├── PostgreSQL-Reminders.sql
│   │   │   ├── README.md
│   │   │   ├── ReminderService/
│   │   │   │   ├── AdoNetReminderTable.cs
│   │   │   │   ├── AdoNetReminderTableOptions.cs
│   │   │   │   └── AdoNetReminderTableOptionsValidator.cs
│   │   │   ├── SQLServer-Reminders.sql
│   │   │   └── SiloBuilderReminderExtensions.cs
│   │   ├── Orleans.Streaming.AdoNet/
│   │   │   ├── AdoNetBatchContainer.cs
│   │   │   ├── AdoNetQueueAdapter.cs
│   │   │   ├── AdoNetQueueAdapterFactory.cs
│   │   │   ├── AdoNetQueueAdapterReceiver.cs
│   │   │   ├── AdoNetStreamConfirmation.cs
│   │   │   ├── AdoNetStreamConfirmationAck.cs
│   │   │   ├── AdoNetStreamDeadLetter.cs
│   │   │   ├── AdoNetStreamFailureHandler.cs
│   │   │   ├── AdoNetStreamMessage.cs
│   │   │   ├── AdoNetStreamMessageAck.cs
│   │   │   ├── AdoNetStreamOptions.cs
│   │   │   ├── AdoNetStreamOptionsValidator.cs
│   │   │   ├── AdoNetStreamQueueMapper.cs
│   │   │   ├── Extensions.cs
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── Hosting/
│   │   │   │   ├── ClusterClientAdoNetStreamConfigurator.cs
│   │   │   │   ├── ClusterClientAdoNetStreamExtensions.cs
│   │   │   │   ├── SiloAdoNetStreamConfigurator.cs
│   │   │   │   └── SiloBuilderAdoNetStreamExtensions.cs
│   │   │   ├── MySQL-Streaming.sql
│   │   │   ├── Orleans.Streaming.AdoNet.csproj
│   │   │   ├── PostgreSQL-Streaming.sql
│   │   │   ├── Properties/
│   │   │   │   └── Usings.cs
│   │   │   ├── README.md
│   │   │   └── SQLServer-Streaming.sql
│   │   └── Shared/
│   │       ├── MySQL-Main.sql
│   │       ├── Oracle-Main.sql
│   │       ├── PostgreSQL-Main.sql
│   │       ├── SQLServer-Main.sql
│   │       ├── Sqlite-Main.sql
│   │       └── Storage/
│   │           ├── AdoNetFormatProvider.cs
│   │           ├── AdoNetInvariants.cs
│   │           ├── DbConnectionFactory.cs
│   │           ├── DbConstantsStore.cs
│   │           ├── DbExtensions.cs
│   │           ├── DbStoredQueries.cs
│   │           ├── ICommandInterceptor.cs
│   │           ├── IRelationalStorage.cs
│   │           ├── NoOpDatabaseCommandInterceptor.cs
│   │           ├── OracleDatabaseCommandInterceptor.cs
│   │           ├── OrleansRelationalDownloadStream.cs
│   │           ├── RelationalOrleansQueries.cs
│   │           ├── RelationalStorage.cs
│   │           └── RelationalStorageExtensions.cs
│   ├── Azure/
│   │   ├── Orleans.Clustering.AzureStorage/
│   │   │   ├── AzureBasedMembershipTable.cs
│   │   │   ├── AzureGatewayListProvider.cs
│   │   │   ├── AzureTableClusteringExtensions.cs
│   │   │   ├── AzureTableStorageClusteringProviderBuilder.cs
│   │   │   ├── Options/
│   │   │   │   ├── AzureStorageClusteringOptions.cs
│   │   │   │   └── AzureStorageGatewayOptions.cs
│   │   │   ├── Orleans.Clustering.AzureStorage.csproj
│   │   │   ├── OrleansSiloInstanceManager.cs
│   │   │   ├── README.md
│   │   │   ├── SiloInstanceTableEntry.cs
│   │   │   └── Utilities/
│   │   │       └── TableStorageErrorCode.cs
│   │   ├── Orleans.Clustering.Cosmos/
│   │   │   ├── CosmosClusteringProviderBuilder.cs
│   │   │   ├── HostingExtensions.cs
│   │   │   ├── Membership/
│   │   │   │   ├── CosmosGatewayListProvider.cs
│   │   │   │   └── CosmosMembershipTable.cs
│   │   │   ├── Models/
│   │   │   │   ├── BaseClusterEntity.cs
│   │   │   │   ├── ClusterVersionEntity.cs
│   │   │   │   └── SiloEntity.cs
│   │   │   ├── Options/
│   │   │   │   └── CosmosClusteringOptions.cs
│   │   │   ├── Orleans.Clustering.Cosmos.csproj
│   │   │   └── README.md
│   │   ├── Orleans.DurableJobs.AzureStorage/
│   │   │   ├── AzureStorageJobShard.Log.cs
│   │   │   ├── AzureStorageJobShard.cs
│   │   │   ├── AzureStorageJobShardManager.cs
│   │   │   ├── Hosting/
│   │   │   │   ├── AzureStorageDurableJobsExtensions.cs
│   │   │   │   ├── AzureStorageJobShardOptions.cs
│   │   │   │   └── AzureStorageJobShardOptionsValidator.cs
│   │   │   ├── JobOperation.cs
│   │   │   ├── NetstringJsonSerializer.cs
│   │   │   ├── Orleans.DurableJobs.AzureStorage.csproj
│   │   │   └── README.md
│   │   ├── Orleans.GrainDirectory.AzureStorage/
│   │   │   ├── AzureTableGrainDirectory.cs
│   │   │   ├── Hosting/
│   │   │   │   ├── AzureTableGrainDirectoryExtensions.cs
│   │   │   │   ├── AzureTableGrainDirectoryServiceCollectionExtensions.cs
│   │   │   │   └── AzureTableStorageGrainDirectoryProviderBuilder.cs
│   │   │   ├── Options/
│   │   │   │   └── AzureTableGrainDirectoryOptions.cs
│   │   │   ├── Orleans.GrainDirectory.AzureStorage.csproj
│   │   │   └── README.md
│   │   ├── Orleans.Journaling.AzureStorage/
│   │   │   ├── AzureAppendBlobLogStorage.cs
│   │   │   ├── AzureAppendBlobStateMachineStorageOptions.cs
│   │   │   ├── AzureAppendBlobStateMachineStorageProvider.cs
│   │   │   ├── AzureBlobStorageGrainJournalingProviderBuilder.cs
│   │   │   ├── AzureBlobStorageHostingExtensions.cs
│   │   │   ├── DefaultBlobContainerFactory.cs
│   │   │   ├── IBlobContainerFactory.cs
│   │   │   ├── Orleans.Journaling.AzureStorage.csproj
│   │   │   ├── Properties/
│   │   │   │   └── AssemblyInfo.cs
│   │   │   └── README.md
│   │   ├── Orleans.Persistence.AzureStorage/
│   │   │   ├── Hosting/
│   │   │   │   ├── AzureBlobGrainStorageServiceCollectionExtensions.cs
│   │   │   │   ├── AzureBlobSiloBuilderExtensions.cs
│   │   │   │   ├── AzureBlobStorageGrainStorageProviderBuilder.cs
│   │   │   │   ├── AzureTableSiloBuilderExtensions.cs
│   │   │   │   └── AzureTableStorageGrainStorageProviderBuilder.cs
│   │   │   ├── Orleans.Persistence.AzureStorage.csproj
│   │   │   ├── Providers/
│   │   │   │   ├── AzureProviderErrorCode.cs
│   │   │   │   └── Storage/
│   │   │   │       ├── AzureBlobStorage.cs
│   │   │   │       ├── AzureBlobStorageOptions.cs
│   │   │   │       ├── AzureTableStorage.cs
│   │   │   │       ├── AzureTableStorageOptions.cs
│   │   │   │       └── IBlobContainerFactory.cs
│   │   │   ├── README.md
│   │   │   └── Storage/
│   │   │       ├── StorageExceptionExtensions.cs
│   │   │       └── TableStorageUpdateConditionNotSatisfiedException.cs
│   │   ├── Orleans.Persistence.Cosmos/
│   │   │   ├── CosmosConditionNotSatisfiedException.cs
│   │   │   ├── CosmosGrainStorage.cs
│   │   │   ├── CosmosStorageOptions.cs
│   │   │   ├── HostingExtensions.cs
│   │   │   ├── IPartitionKeyProvider.cs
│   │   │   ├── Models/
│   │   │   │   └── GrainStateEntity.cs
│   │   │   ├── Orleans.Persistence.Cosmos.csproj
│   │   │   └── README.md
│   │   ├── Orleans.Reminders.AzureStorage/
│   │   │   ├── AzureStorageReminderServiceCollectionExtensions.cs
│   │   │   ├── AzureStorageReminderSiloBuilderReminderExtensions.cs
│   │   │   ├── AzureTableStorageRemindersProviderBuilder.cs
│   │   │   ├── Orleans.Reminders.AzureStorage.csproj
│   │   │   ├── README.md
│   │   │   ├── Storage/
│   │   │   │   ├── AzureBasedReminderTable.cs
│   │   │   │   ├── AzureTableReminderStorageOptions.cs
│   │   │   │   └── RemindersTableManager.cs
│   │   │   └── Utilities/
│   │   │       └── AzureReminderErrorCode.cs
│   │   ├── Orleans.Reminders.Cosmos/
│   │   │   ├── CosmosReminderTable.cs
│   │   │   ├── CosmosReminderTableOptions.cs
│   │   │   ├── HostingExtensions.cs
│   │   │   ├── Models/
│   │   │   │   └── ReminderEntity.cs
│   │   │   ├── Orleans.Reminders.Cosmos.csproj
│   │   │   └── README.md
│   │   ├── Orleans.Streaming.AzureStorage/
│   │   │   ├── Hosting/
│   │   │   │   ├── AzureQueueStreamProviderBuilder.cs
│   │   │   │   ├── ClientBuilderExtensions.cs
│   │   │   │   └── SiloBuilderExtensions.cs
│   │   │   ├── Options/
│   │   │   │   └── AzureBlobLeaseProviderOptions.cs
│   │   │   ├── Orleans.Streaming.AzureStorage.csproj
│   │   │   ├── Providers/
│   │   │   │   ├── Lease/
│   │   │   │   │   └── AzureBlobLeaseProvider.cs
│   │   │   │   └── Streams/
│   │   │   │       ├── AzureQueue/
│   │   │   │       │   ├── AzureQueueAdapter.cs
│   │   │   │       │   ├── AzureQueueAdapterFactory.cs
│   │   │   │       │   ├── AzureQueueAdapterReceiver.cs
│   │   │   │       │   ├── AzureQueueBatchContainer.cs
│   │   │   │       │   ├── AzureQueueBatchContainerV2.cs
│   │   │   │       │   ├── AzureQueueStreamBuilder.cs
│   │   │   │       │   ├── AzureQueueStreamOptions.cs
│   │   │   │       │   ├── AzureQueueStreamProviderUtils.cs
│   │   │   │       │   └── IAzureQueueDataAdapter.cs
│   │   │   │       └── PersistentStreams/
│   │   │   │           ├── AzureTableStorageStreamFailureHandler.cs
│   │   │   │           └── StreamDeliveryFailureEntity.cs
│   │   │   ├── README.md
│   │   │   ├── Storage/
│   │   │   │   └── AzureQueueDataManager.cs
│   │   │   └── Utilities/
│   │   │       └── AzureQueueErrorCode.cs
│   │   ├── Orleans.Streaming.EventHubs/
│   │   │   ├── Hosting/
│   │   │   │   ├── ClientBuilderExtensions.cs
│   │   │   │   ├── DeveloperExtensions.cs
│   │   │   │   └── SiloBuilderExtensions.cs
│   │   │   ├── Orleans.Streaming.EventHubs.csproj
│   │   │   ├── OrleansServiceBusErrorCode.cs
│   │   │   ├── Providers/
│   │   │   │   ├── EventDataGeneratorStreamProvider/
│   │   │   │   │   ├── EventDataGeneratorAdapterFactory.cs
│   │   │   │   │   ├── EventDataGeneratorStreamOptions.cs
│   │   │   │   │   ├── EventHubPartitionDataGenerator.cs
│   │   │   │   │   ├── EventHubPartitionGeneratorReceiver.cs
│   │   │   │   │   ├── IEventDataGenerator.cs
│   │   │   │   │   └── NoOpCheckpointer.cs
│   │   │   │   └── Streams/
│   │   │   │       └── EventHub/
│   │   │   │           ├── CachePressureMonitors/
│   │   │   │           │   ├── AggregatedCachePressureMonitor.cs
│   │   │   │           │   ├── AveragingCachePressureMonitor.cs
│   │   │   │           │   ├── ICachePressureMonitor.cs
│   │   │   │           │   └── SlowConsumingPressureMonitor.cs
│   │   │   │           ├── EventDataExtensions.cs
│   │   │   │           ├── EventDataGeneratorStreamConfigurator.cs
│   │   │   │           ├── EventHubAdapterFactory.cs
│   │   │   │           ├── EventHubAdapterReceiver.cs
│   │   │   │           ├── EventHubBatchContainer.cs
│   │   │   │           ├── EventHubCheckpointer.cs
│   │   │   │           ├── EventHubCheckpointerOptions.cs
│   │   │   │           ├── EventHubConstants.cs
│   │   │   │           ├── EventHubDataAdapter.cs
│   │   │   │           ├── EventHubMessage.cs
│   │   │   │           ├── EventHubPartitionCheckpointEntity.cs
│   │   │   │           ├── EventHubQueueCache.cs
│   │   │   │           ├── EventHubQueueCacheFactory.cs
│   │   │   │           ├── EventHubSequenceToken.cs
│   │   │   │           ├── EventHubSequenceTokenV2.cs
│   │   │   │           ├── EventHubStreamBuilder.cs
│   │   │   │           ├── EventHubStreamOptions.cs
│   │   │   │           ├── IEventHubDataAdapter.cs
│   │   │   │           ├── IEventHubQueueCache.cs
│   │   │   │           ├── IEventHubQueueCacheFactory.cs
│   │   │   │           ├── IEventHubReceiver.cs
│   │   │   │           └── StatisticMonitors/
│   │   │   │               ├── DefaultEventHubBlockPoolMonitor.cs
│   │   │   │               ├── DefaultEventHubCacheMonitor.cs
│   │   │   │               ├── DefaultEventHubReceiverMonitor.cs
│   │   │   │               └── MonitorAggregationDimentions.cs
│   │   │   └── README.md
│   │   ├── Orleans.Transactions.AzureStorage/
│   │   │   ├── Hosting/
│   │   │   │   ├── AzureTableTransactionServicecollectionExtensions.cs
│   │   │   │   └── AzureTableTransactionsSiloBuilderExtensions.cs
│   │   │   ├── Orleans.Transactions.AzureStorage.csproj
│   │   │   ├── README.md
│   │   │   └── TransactionalState/
│   │   │       ├── AzureTableTransactionalStateOptions.cs
│   │   │       ├── AzureTableTransactionalStateStorage.cs
│   │   │       ├── AzureTableTransactionalStateStorageFactory.cs
│   │   │       ├── KeyEntity.cs
│   │   │       └── StateEntity.cs
│   │   └── Shared/
│   │       ├── Cosmos/
│   │       │   ├── BaseEntity.cs
│   │       │   ├── CosmosIdSanitizer.cs
│   │       │   ├── CosmosOptions.cs
│   │       │   ├── CosmosOptionsValidator.cs
│   │       │   └── Usings.cs
│   │       ├── Storage/
│   │       │   ├── AzureBlobUtils.cs
│   │       │   ├── AzureStorageOperationOptions.cs
│   │       │   ├── AzureStoragePolicyOptions.cs
│   │       │   ├── AzureTableDataManager.cs
│   │       │   ├── AzureTableDefaultPolicies.cs
│   │       │   └── AzureTableUtils.cs
│   │       └── Utilities/
│   │           └── ErrorCode.cs
│   ├── Cassandra/
│   │   └── Orleans.Clustering.Cassandra/
│   │       ├── CassandraClusteringTable.cs
│   │       ├── CassandraGatewayListProvider.cs
│   │       ├── Hosting/
│   │       │   ├── CassandraClusteringOptions.cs
│   │       │   └── CassandraMembershipHostingExtensions.cs
│   │       ├── Orleans.Clustering.Cassandra.csproj
│   │       └── OrleansQueries.cs
│   ├── Dashboard/
│   │   ├── Orleans.Dashboard/
│   │   │   ├── .azdo/
│   │   │   │   └── .npmrc
│   │   │   ├── Core/
│   │   │   │   ├── DashboardClient.cs
│   │   │   │   ├── Extensions.cs
│   │   │   │   ├── IDashboardClient.cs
│   │   │   │   ├── IDashboardGrain.cs
│   │   │   │   ├── IDashboardRemindersGrain.cs
│   │   │   │   ├── ISiloGrainClient.cs
│   │   │   │   ├── ISiloGrainProxy.cs
│   │   │   │   └── ISiloGrainService.cs
│   │   │   ├── DashboardHost.cs
│   │   │   ├── DashboardOptions.cs
│   │   │   ├── EmbeddedAssetProvider.cs
│   │   │   ├── GrainProfilerOptions.cs
│   │   │   ├── Implementation/
│   │   │   │   ├── DashboardLogger.cs
│   │   │   │   ├── DashboardTelemetryExporter.cs
│   │   │   │   ├── Details/
│   │   │   │   │   ├── MembershipTableSiloDetailsProvider.cs
│   │   │   │   │   └── SiloStatusOracleSiloDetailsProvider.cs
│   │   │   │   ├── GrainProfilerFilter.cs
│   │   │   │   ├── Grains/
│   │   │   │   │   ├── DashboardGrain.cs
│   │   │   │   │   ├── DashboardRemindersGrain.cs
│   │   │   │   │   └── SiloGrainProxy.cs
│   │   │   │   ├── Helpers/
│   │   │   │   │   └── GrainStateHelper.cs
│   │   │   │   ├── SiloGrainClient.cs
│   │   │   │   ├── SiloGrainService.cs
│   │   │   │   └── TraceWriter.cs
│   │   │   ├── Metrics/
│   │   │   │   ├── Details/
│   │   │   │   │   └── ISiloDetailsProvider.cs
│   │   │   │   ├── GrainProfiler.cs
│   │   │   │   ├── GrainProfilerExtensions.cs
│   │   │   │   ├── History/
│   │   │   │   │   ├── GrainTraceEntryEqualityComparer.cs
│   │   │   │   │   ├── HistoryEntry.cs
│   │   │   │   │   ├── HistoryKey.cs
│   │   │   │   │   ├── ITraceHistory.cs
│   │   │   │   │   ├── RingBuffer.cs
│   │   │   │   │   └── TraceHistory.cs
│   │   │   │   ├── IGrainProfiler.cs
│   │   │   │   └── TypeFormatting/
│   │   │   │       ├── ParseState.cs
│   │   │   │       ├── Token.cs
│   │   │   │       ├── TokenType.cs
│   │   │   │       └── TypeFormatter.cs
│   │   │   ├── Model/
│   │   │   │   ├── DashboardCounters.cs
│   │   │   │   ├── GrainTraceEntry.cs
│   │   │   │   ├── History/
│   │   │   │   │   ├── GrainMethodAggregate.cs
│   │   │   │   │   └── TraceAggregate.cs
│   │   │   │   ├── ReminderInfo.cs
│   │   │   │   ├── ReminderResponse.cs
│   │   │   │   ├── SiloDetails.cs
│   │   │   │   ├── SiloGrainTraceEntry.cs
│   │   │   │   ├── SimpleGrainStatisticCounter.cs
│   │   │   │   └── StatCounter.cs
│   │   │   ├── Orleans.Dashboard.Frontend.targets
│   │   │   ├── Orleans.Dashboard.csproj
│   │   │   ├── README.md
│   │   │   ├── ServiceCollectionExtensions.cs
│   │   │   └── TimeSpanConverter.cs
│   │   ├── Orleans.Dashboard.Abstractions/
│   │   │   ├── NoProfilingAttribute.cs
│   │   │   ├── Orleans.Dashboard.Abstractions.csproj
│   │   │   └── README.md
│   │   └── Orleans.Dashboard.App/
│   │       ├── .gitignore
│   │       ├── .npmrc
│   │       ├── README.md
│   │       ├── index.html
│   │       ├── package.json
│   │       ├── src/
│   │       │   ├── components/
│   │       │   │   ├── alert.tsx
│   │       │   │   ├── brand-header.tsx
│   │       │   │   ├── checkbox-filter.tsx
│   │       │   │   ├── counter-widget.tsx
│   │       │   │   ├── display-grain-state.tsx
│   │       │   │   ├── gauge-widget.tsx
│   │       │   │   ├── grain-method-table.tsx
│   │       │   │   ├── grain-table.tsx
│   │       │   │   ├── loading.tsx
│   │       │   │   ├── menu.tsx
│   │       │   │   ├── multi-series-chart-widget.tsx
│   │       │   │   ├── page.tsx
│   │       │   │   ├── panel.tsx
│   │       │   │   ├── preferences.tsx
│   │       │   │   ├── properties-widget.tsx
│   │       │   │   ├── reminder-table.tsx
│   │       │   │   ├── theme-buttons.tsx
│   │       │   │   └── time-series-chart.tsx
│   │       │   ├── custom.css
│   │       │   ├── grains/
│   │       │   │   ├── grain-details.tsx
│   │       │   │   ├── grain.tsx
│   │       │   │   ├── grains.tsx
│   │       │   │   └── silo-table.tsx
│   │       │   ├── index.tsx
│   │       │   ├── lib/
│   │       │   │   ├── http.ts
│   │       │   │   ├── routie.ts
│   │       │   │   ├── storage.ts
│   │       │   │   └── typeName.ts
│   │       │   ├── logstream/
│   │       │   │   └── log-stream.tsx
│   │       │   ├── overview/
│   │       │   │   └── overview.tsx
│   │       │   ├── reminders/
│   │       │   │   └── reminders.tsx
│   │       │   ├── silos/
│   │       │   │   ├── host-table.tsx
│   │       │   │   ├── silo-counters.tsx
│   │       │   │   ├── silo-grid.tsx
│   │       │   │   ├── silo-state-label.tsx
│   │       │   │   ├── silo.tsx
│   │       │   │   └── silos.tsx
│   │       │   ├── skin-purple.css
│   │       │   ├── styles.css
│   │       │   ├── themes.css
│   │       │   └── vite-env.d.ts
│   │       ├── tsconfig.json
│   │       └── vite.config.ts
│   ├── Directory.Build.props
│   ├── Directory.Build.targets
│   ├── Orleans.Analyzers/
│   │   ├── AbstractPropertiesCannotBeSerializedAnalyzer.cs
│   │   ├── AliasClashAttributeAnalyzer.cs
│   │   ├── AliasClashAttributeCodeFix.cs
│   │   ├── AlwaysInterleaveDiagnosticAnalyzer.cs
│   │   ├── AnalyzerReleases.Shipped.md
│   │   ├── AnalyzerReleases.Unshipped.md
│   │   ├── AtMostOneOrleansConstructorAnalyzer.cs
│   │   ├── ConfigureAwaitAnalyzer.cs
│   │   ├── ConfigureAwaitCodeFix.cs
│   │   ├── Constants.cs
│   │   ├── GenerateAliasAttributesAnalyzer.cs
│   │   ├── GenerateAliasAttributesCodeFix.cs
│   │   ├── GenerateGenerateSerializerAttributeAnalyzer.cs
│   │   ├── GenerateSerializationAttributesAnalyzer.cs
│   │   ├── GenerateSerializationAttributesCodeFix.cs
│   │   ├── GrainInterfaceMethodReturnTypeDiagnosticAnalyzer.cs
│   │   ├── GrainInterfacePropertyDiagnosticAnalyzer.cs
│   │   ├── IdClashAttributeAnalyzer.cs
│   │   ├── IdClashAttributeCodeFix.cs
│   │   ├── IncorrectAttributeUseAnalyzer.cs
│   │   ├── IncorrectAttributeUseCodeFix.cs
│   │   ├── NoRefParamsDiagnosticAnalyzer.cs
│   │   ├── Orleans.Analyzers.csproj
│   │   ├── Properties/
│   │   │   └── IsExternalInit.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── SerializationAttributesHelper.cs
│   │   ├── SymbolHelpers.cs
│   │   └── SyntaxHelpers.cs
│   ├── Orleans.BroadcastChannel/
│   │   ├── BroadcastChannelConsumerExtension.cs
│   │   ├── BroadcastChannelOptions.cs
│   │   ├── BroadcastChannelProvider.cs
│   │   ├── BroadcastChannelSubscription.cs
│   │   ├── BroadcastChannelWriter.cs
│   │   ├── ChannelId.cs
│   │   ├── Hosting/
│   │   │   ├── BroadcastChannelProviderBuilder.cs
│   │   │   └── ChannelHostingExtensions.cs
│   │   ├── IdMapping/
│   │   │   ├── DefaultChannelIdMapper.cs
│   │   │   └── IChannelIdMapper.cs
│   │   ├── Orleans.BroadcastChannel.csproj
│   │   └── SubscriberTable/
│   │       ├── ImplicitChannelSubscriberTable.cs
│   │       └── Predicates/
│   │           ├── AllStreamNamespacesPredicate.cs
│   │           ├── DefaultStreamNamespacePredicateProvider.cs
│   │           ├── ExactMatchStreamNamespacePredicate.cs
│   │           ├── IChannelNamespacePredicate.cs
│   │           ├── ImplicitChannelSubscriptionAttribute.cs
│   │           └── RegexChannelNamespacePredicate.cs
│   ├── Orleans.Client/
│   │   ├── Orleans.Client.csproj
│   │   └── README.md
│   ├── Orleans.Clustering.Consul/
│   │   ├── ConsulBasedMembershipTable.cs
│   │   ├── ConsulClusteringProviderBuilder.cs
│   │   ├── ConsulGatewayListProvider.cs
│   │   ├── ConsulUtilsHostingExtensions.cs
│   │   ├── Options/
│   │   │   └── ConsulClusteringOptions.cs
│   │   ├── Orleans.Clustering.Consul.csproj
│   │   └── SerializableMembershipTypes.cs
│   ├── Orleans.Clustering.ZooKeeper/
│   │   ├── MembershipSerializerSettings.cs
│   │   ├── Options/
│   │   │   ├── ZooKeeperClusteringSiloOptions.cs
│   │   │   └── ZooKeeperGatewayListProviderOptions.cs
│   │   ├── Orleans.Clustering.ZooKeeper.csproj
│   │   ├── ZooKeeperBasedMembershipTable.cs
│   │   ├── ZooKeeperClusteringProviderBuilder.cs
│   │   ├── ZooKeeperGatewayListProvider.cs
│   │   └── ZooKeeperHostingExtensions.cs
│   ├── Orleans.CodeGenerator/
│   │   ├── ActivatorGenerator.cs
│   │   ├── AnalyzerReleases.Shipped.md
│   │   ├── AnalyzerReleases.Unshipped.md
│   │   ├── ApplicationPartAttributeGenerator.cs
│   │   ├── CodeGenerator.cs
│   │   ├── CopierGenerator.cs
│   │   ├── Diagnostics/
│   │   │   ├── CanNotGenerateImplicitFieldIdsDiagnostic.cs
│   │   │   ├── DiagnosticRuleId.cs
│   │   │   ├── GenerateCodeForDeclaringAssemblyAttribute_NoDeclaringAssembly_Diagnostic.cs
│   │   │   ├── InaccessibleSerializableTypeDiagnostic.cs
│   │   │   ├── InaccessibleSetterDiagnostic.cs
│   │   │   ├── IncorrectProxyBaseClassSpecificationDiagnostic.cs
│   │   │   ├── InvalidRpcMethodReturnTypeDiagnostic.cs
│   │   │   ├── MultipleCancellationTokenParametersDiagnostic.cs
│   │   │   ├── ReferenceAssemblyWithGenerateSerializerDiagnostic.cs
│   │   │   ├── RpcInterfacePropertyDiagnostic.cs
│   │   │   └── UnhandledCodeGenerationExceptionDiagnostic.cs
│   │   ├── FieldIdAssignmentHelper.cs
│   │   ├── Hashing/
│   │   │   ├── BitOperations.cs
│   │   │   ├── HexConverter.cs
│   │   │   ├── NonCryptographicHashAlgorithm.cs
│   │   │   ├── XxHash32.State.cs
│   │   │   └── XxHash32.cs
│   │   ├── InvokableGenerator.cs
│   │   ├── LibraryTypes.cs
│   │   ├── MetadataGenerator.cs
│   │   ├── Model/
│   │   │   ├── FieldDescription.cs
│   │   │   ├── GenerateFieldIds.cs
│   │   │   ├── GeneratedInvokableDescription.cs
│   │   │   ├── GeneratedProxyDescription.cs
│   │   │   ├── ICodecDescription.cs
│   │   │   ├── IMemberDescription.cs
│   │   │   ├── ISerializableTypeDescription.cs
│   │   │   ├── InvokableMethodDescription.cs
│   │   │   ├── InvokableMethodId.cs
│   │   │   ├── InvokableMethodProxyBase.cs
│   │   │   ├── InvokableMethodProxyBaseId.cs
│   │   │   ├── MetadataModel.cs
│   │   │   ├── MethodSignatureComparer.cs
│   │   │   ├── PropertyDescription.cs
│   │   │   ├── ProxyInterfaceDescription.cs
│   │   │   ├── ProxyMethodDescription.cs
│   │   │   ├── SerializableTypeDescription.cs
│   │   │   └── WellKnownCodecDescription.cs
│   │   ├── Orleans.CodeGenerator.csproj
│   │   ├── OrleansGeneratorDiagnosticAnalysisException.cs
│   │   ├── OrleansSourceGenerator.cs
│   │   ├── Properties/
│   │   │   └── launchSettings.json
│   │   ├── PropertyUtility.cs
│   │   ├── ProxyGenerator.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── SerializerGenerator.cs
│   │   ├── SyntaxGeneration/
│   │   │   ├── FSharpUtils.cs
│   │   │   ├── Identifier.cs
│   │   │   ├── StringExtensions.cs
│   │   │   ├── SymbolExtensions.cs
│   │   │   ├── SymbolSyntaxExtensions.cs
│   │   │   └── SyntaxFactoryUtility.cs
│   │   ├── build/
│   │   │   └── Microsoft.Orleans.CodeGenerator.props
│   │   ├── buildMultiTargeting/
│   │   │   └── Microsoft.Orleans.CodeGenerator.props
│   │   └── buildTransitive/
│   │       └── Microsoft.Orleans.CodeGenerator.props
│   ├── Orleans.Connections.Security/
│   │   ├── Hosting/
│   │   │   ├── HostingExtensions.IClientBuilder.cs
│   │   │   ├── HostingExtensions.ISiloBuilder.cs
│   │   │   └── HostingExtensions.cs
│   │   ├── Orleans.Connections.Security.csproj
│   │   └── Security/
│   │       ├── CertificateLoader.cs
│   │       ├── DuplexPipeStream.cs
│   │       ├── DuplexPipeStreamAdapter.cs
│   │       ├── ITlsApplicationProtocolFeature.cs
│   │       ├── ITlsConnectionFeature.cs
│   │       ├── ITlsHandshakeFeature.cs
│   │       ├── MemoryPoolExtensions.cs
│   │       ├── OrleansApplicationProtocol.cs
│   │       ├── RemoteCertificateMode.cs
│   │       ├── TlsClientAuthenticationOptions.cs
│   │       ├── TlsClientConnectionMiddleware.cs
│   │       ├── TlsConnectionFeature.cs
│   │       ├── TlsDuplexPipe.cs
│   │       ├── TlsOptions.cs
│   │       ├── TlsServerAuthenticationOptions.cs
│   │       └── TlsServerConnectionMiddleware.cs
│   ├── Orleans.Core/
│   │   ├── Async/
│   │   │   ├── AsyncExecutorWithRetries.cs
│   │   │   ├── AsyncLock.cs
│   │   │   ├── AsyncSerialExecutor.cs
│   │   │   ├── BatchWorker.cs
│   │   │   ├── MultiTaskCompletionSource.cs
│   │   │   └── TaskExtensions.cs
│   │   ├── Caching/
│   │   │   ├── ConcurrentLruCache.cs
│   │   │   └── Internal/
│   │   │       ├── CacheDebugView.cs
│   │   │       ├── CapacityPartition.cs
│   │   │       ├── Counter.cs
│   │   │       ├── ICacheMetrics.cs
│   │   │       ├── PaddedLong.cs
│   │   │       ├── PaddedQueueCount.cs
│   │   │       ├── Padding.cs
│   │   │       ├── Striped64.cs
│   │   │       └── TypeProps.cs
│   │   ├── Cancellation/
│   │   │   └── IGrainCallCancellationExtension.cs
│   │   ├── ClientObservers/
│   │   │   ├── ClientGatewayObserver.cs
│   │   │   └── ClientObserver.cs
│   │   ├── CodeGeneration/
│   │   │   ├── GrainInterfaceUtils.cs
│   │   │   └── IGrainState.cs
│   │   ├── Configuration/
│   │   │   ├── CollectionAgeLimitAttribute.cs
│   │   │   ├── ConfigUtilities.cs
│   │   │   ├── GrainTypeOptions.cs
│   │   │   ├── NamedServiceConfigurator.cs
│   │   │   ├── OptionLogger/
│   │   │   │   ├── DefaultOptionsFormatter.cs
│   │   │   │   ├── IOptionFormatter.cs
│   │   │   │   ├── IOptionsLogger.cs
│   │   │   │   ├── OptionFormatterExtensionMethods.cs
│   │   │   │   └── RedactMemberAttribute.cs
│   │   │   ├── Options/
│   │   │   │   ├── ClientMessagingOptions.cs
│   │   │   │   ├── ClusterMembershipOptions.cs
│   │   │   │   ├── ClusterOptions.cs
│   │   │   │   ├── GatewayOptions.cs
│   │   │   │   ├── GrainVersioningOptions.cs
│   │   │   │   ├── LoadSheddingOptions.cs
│   │   │   │   ├── MessagingOptions.cs
│   │   │   │   ├── StaticGatewayListProviderOptions.cs
│   │   │   │   └── TypeManagementOptions.cs
│   │   │   ├── OptionsOverrides.cs
│   │   │   ├── ServiceCollectionExtensions.cs
│   │   │   └── Validators/
│   │   │       ├── ClientClusteringValidator.cs
│   │   │       ├── LoadSheddingValidator.cs
│   │   │       └── SerializerConfigurationValidator.cs
│   │   ├── Core/
│   │   │   ├── ClientBuilder.cs
│   │   │   ├── ClientBuilderExtensions.cs
│   │   │   ├── ClientBuilderGrainCallFilterExtensions.cs
│   │   │   ├── ClusterClient.cs
│   │   │   ├── DefaultClientServices.cs
│   │   │   ├── GatewayCountChangedEventArgs.cs
│   │   │   ├── GrainCallFilterServiceCollectionExtensions.cs
│   │   │   ├── GrainFactory.cs
│   │   │   ├── GrainInterfaceTypeToGrainTypeResolver.cs
│   │   │   ├── GrainMethodInvoker.cs
│   │   │   ├── IClientBuilder.cs
│   │   │   ├── IClientConnectionRetryFilter.cs
│   │   │   ├── IClusterClient.cs
│   │   │   ├── IClusterConnectionStatusListener.cs
│   │   │   ├── IClusterConnectionStatusObserver.cs
│   │   │   ├── IInternalClusterClient.cs
│   │   │   ├── IInternalGrainFactory.cs
│   │   │   ├── InterfaceToImplementationMappingCache.cs
│   │   │   └── InvalidSchedulingContextException.cs
│   │   ├── Diagnostics/
│   │   │   ├── ActivityNames.cs
│   │   │   ├── ActivityPropagationGrainCallFilter.cs
│   │   │   ├── EventSourceEvents.cs
│   │   │   ├── MessagingTrace.cs
│   │   │   └── Metrics/
│   │   │       ├── Aggregators/
│   │   │       │   ├── AggregatorKey.cs
│   │   │       │   ├── CounterAggregator.cs
│   │   │       │   ├── CounterAggregatorGroup.cs
│   │   │       │   ├── HistogramAggregator.cs
│   │   │       │   ├── HistogramBucketAggregator.cs
│   │   │       │   └── TagList.cs
│   │   │       ├── ApplicationRequestInstruments.cs
│   │   │       ├── CatalogInstruments.cs
│   │   │       ├── ClientInstruments.cs
│   │   │       ├── ConsistentRingInstruments.cs
│   │   │       ├── DirectoryInstruments.cs
│   │   │       ├── GatewayInstruments.cs
│   │   │       ├── GrainInstruments.cs
│   │   │       ├── InstrumentNames.cs
│   │   │       ├── Instruments.cs
│   │   │       ├── MessagingInstruments.cs
│   │   │       ├── MessagingProcessingInstruments.cs
│   │   │       ├── NetworkingInstruments.cs
│   │   │       ├── OrleansInstruments.cs
│   │   │       ├── ReminderInstruments.cs
│   │   │       ├── SchedulerInstruments.cs
│   │   │       ├── StorageInstruments.cs
│   │   │       ├── StreamInstruments.cs
│   │   │       └── WatchdogInstruments.cs
│   │   ├── GlobalSuppressions.cs
│   │   ├── GrainDirectory/
│   │   │   ├── IDhtGrainDirectory.cs
│   │   │   └── IGrainLocator.cs
│   │   ├── GrainReferences/
│   │   │   └── GrainReferenceActivator.cs
│   │   ├── Hosting/
│   │   │   └── OrleansClientGenericHostExtensions.cs
│   │   ├── IDs/
│   │   │   ├── GenericGrainInterfaceType.cs
│   │   │   └── GenericGrainType.cs
│   │   ├── Lifecycle/
│   │   │   ├── ClusterClientLifecycle.cs
│   │   │   ├── ClusterClientLifecycleExtensions.cs
│   │   │   ├── IClusterClientLifecycle.cs
│   │   │   ├── LifecycleSubject.cs
│   │   │   ├── MigrationContext.cs
│   │   │   ├── ServiceLifecycle.cs
│   │   │   ├── ServiceLifecycleNotificationStage.cs
│   │   │   └── ServiceLifecycleStage.cs
│   │   ├── Manifest/
│   │   │   ├── ClientClusterManifestProvider.cs
│   │   │   ├── ClientManifestProvider.cs
│   │   │   ├── GrainBindings.cs
│   │   │   ├── GrainInterfaceTypeResolver.cs
│   │   │   ├── GrainPropertiesResolver.cs
│   │   │   ├── GrainTypeResolver.cs
│   │   │   ├── GrainVersionManifest.cs
│   │   │   ├── IClusterManifestProvider.cs
│   │   │   ├── IClusterManifestSystemTarget.cs
│   │   │   ├── ImplementedInterfaceProvider.cs
│   │   │   └── TypeNameGrainPropertiesProvider.cs
│   │   ├── Messaging/
│   │   │   ├── CachingIdSpanCodec.cs
│   │   │   ├── CachingSiloAddressCodec.cs
│   │   │   ├── ClientMessageCenter.cs
│   │   │   ├── CorrelationId.cs
│   │   │   ├── GatewayManager.cs
│   │   │   ├── IGatewayListProvider.cs
│   │   │   ├── IMessageCenter.cs
│   │   │   ├── InvalidMessageFrameException.cs
│   │   │   ├── Message.cs
│   │   │   ├── MessageFactory.cs
│   │   │   ├── MessageSerializer.cs
│   │   │   ├── OverloadDetectionLogic.cs
│   │   │   ├── PrefixingBufferWriter.cs
│   │   │   ├── RejectionResponse.cs
│   │   │   ├── StaticGatewayListProvider.cs
│   │   │   ├── StaticGatewayListProviderBuilder.cs
│   │   │   └── StatusResponse.cs
│   │   ├── Networking/
│   │   │   ├── ClientConnectionOptions.cs
│   │   │   ├── ClientOutboundConnection.cs
│   │   │   ├── ClientOutboundConnectionFactory.cs
│   │   │   ├── Connection.cs
│   │   │   ├── ConnectionBuilderDelegates.cs
│   │   │   ├── ConnectionFactory.cs
│   │   │   ├── ConnectionFailedException.cs
│   │   │   ├── ConnectionLogScope.cs
│   │   │   ├── ConnectionManager.cs
│   │   │   ├── ConnectionManagerLifecycleAdapter.cs
│   │   │   ├── ConnectionOptions.cs
│   │   │   ├── ConnectionPreamble.cs
│   │   │   ├── ConnectionShared.cs
│   │   │   ├── IUnderlyingTransportFeature.cs
│   │   │   ├── NetworkProtocolVersion.cs
│   │   │   ├── NetworkingTrace.cs
│   │   │   ├── Shared/
│   │   │   │   ├── BufferExtensions.cs
│   │   │   │   ├── CorrelationIdGenerator.cs
│   │   │   │   ├── DuplexPipe.cs
│   │   │   │   ├── IOQueue.cs
│   │   │   │   ├── ISocketsTrace.cs
│   │   │   │   ├── KestrelMemoryPool.cs
│   │   │   │   ├── MemoryPoolBlock.cs
│   │   │   │   ├── MemoryPoolSlab.cs
│   │   │   │   ├── SharedMemoryPool.cs
│   │   │   │   ├── SlabMemoryPool.cs
│   │   │   │   ├── SocketAwaitableEventArgs.cs
│   │   │   │   ├── SocketConnection.cs
│   │   │   │   ├── SocketConnectionFactory.cs
│   │   │   │   ├── SocketConnectionListener.cs
│   │   │   │   ├── SocketConnectionListenerFactory.cs
│   │   │   │   ├── SocketConnectionOptions.cs
│   │   │   │   ├── SocketExtensions.cs
│   │   │   │   ├── SocketReceiver.cs
│   │   │   │   ├── SocketSchedulers.cs
│   │   │   │   ├── SocketSender.cs
│   │   │   │   ├── SocketSenderReceiverBase.cs
│   │   │   │   ├── SocketsTrace.cs
│   │   │   │   ├── TransportConnection.Features.cs
│   │   │   │   └── TransportConnection.cs
│   │   │   └── SocketDirection.cs
│   │   ├── Orleans.Core.csproj
│   │   ├── Placement/
│   │   │   ├── IPlacementContext.cs
│   │   │   ├── IPlacementDirector.cs
│   │   │   ├── IPlacementFilterDirector.cs
│   │   │   ├── PlacementFilterExtensions.cs
│   │   │   ├── PlacementTarget.cs
│   │   │   ├── Rebalancing/
│   │   │   │   ├── IActivationRebalancer.cs
│   │   │   │   ├── IActivationRebalancerMonitor.cs
│   │   │   │   ├── IActivationRebalancerReportListener.cs
│   │   │   │   ├── IActivationRebalancerWorker.cs
│   │   │   │   ├── IFailedSessionBackoffProvider.cs
│   │   │   │   └── RebalancingReport.cs
│   │   │   └── Repartitioning/
│   │   │       ├── IActivationRepartitionerSystemTarget.cs
│   │   │       ├── IImbalanceToleranceRule.cs
│   │   │       └── IMessageStatisticsSink.cs
│   │   ├── Providers/
│   │   │   ├── ClientProviderRuntime.cs
│   │   │   ├── GrainStorageHelpers.cs
│   │   │   ├── IControllable.cs
│   │   │   ├── IGrainStorage.cs
│   │   │   ├── IGrainStorageSerializer.cs
│   │   │   ├── ILeaseProvider.cs
│   │   │   ├── IMemoryStorageGrain.cs
│   │   │   ├── IProviderRuntime.cs
│   │   │   ├── IStorageProvider.cs
│   │   │   ├── ProviderInitializationException.cs
│   │   │   ├── ProviderStateManager.cs
│   │   │   └── StorageSerializer/
│   │   │       ├── GrainStorageSerializer.cs
│   │   │       ├── JsonGrainStorageSerializer.cs
│   │   │       └── OrleansGrainStateSerializer.cs
│   │   ├── README.md
│   │   ├── Runtime/
│   │   │   ├── AsyncEnumerableGrainExtension.cs
│   │   │   ├── CallbackData.cs
│   │   │   ├── ClientGrainContext.cs
│   │   │   ├── ClientLocalActivationStatusChecker.cs
│   │   │   ├── ClusterConnectionStatusObserverAdaptor.cs
│   │   │   ├── Constants.cs
│   │   │   ├── GrainCancellationTokenRuntime.cs
│   │   │   ├── GrainReferenceRuntime.cs
│   │   │   ├── IHealthCheckable.cs
│   │   │   ├── ILocalSiloDetails.cs
│   │   │   ├── IRuntimeClient.cs
│   │   │   ├── InvokableObjectManager.cs
│   │   │   ├── LocalClientDetails.cs
│   │   │   ├── MembershipTableSnapshot.cs
│   │   │   ├── OutgoingCallInvoker.cs
│   │   │   ├── OutsideRuntimeClient.cs
│   │   │   ├── RequestContextExtensions.cs
│   │   │   ├── RingRange.cs
│   │   │   ├── RuntimeVersion.cs
│   │   │   ├── SharedCallbackData.cs
│   │   │   └── SiloStatus.cs
│   │   ├── Serialization/
│   │   │   ├── OrleansJsonSerializationBinder.cs
│   │   │   ├── OrleansJsonSerializer.cs
│   │   │   ├── OrleansJsonSerializerOptions.cs
│   │   │   └── OrleansJsonSerializerSettings.cs
│   │   ├── Statistics/
│   │   │   ├── EnvironmentStatisticsProvider.cs
│   │   │   ├── GrainCountStatistics.cs
│   │   │   ├── GrainMetricsListener.cs
│   │   │   ├── OldEnvironmentStatistics.cs
│   │   │   ├── SiloRuntimeMetricsListener.cs
│   │   │   └── SiloRuntimeStatistics.cs
│   │   ├── SystemTargetInterfaces/
│   │   │   ├── IDeploymentLoadPublisher.cs
│   │   │   ├── IManagementGrain.cs
│   │   │   ├── IMembershipService.cs
│   │   │   ├── IMembershipTable.cs
│   │   │   └── ISiloControl.cs
│   │   ├── Threading/
│   │   │   └── RecursiveInterlockedExchangeLock.cs
│   │   ├── Timers/
│   │   │   ├── CoarseStopwatch.cs
│   │   │   ├── NonCapturingTimer.cs
│   │   │   ├── TimerManager.cs
│   │   │   └── ValueStopwatch.cs
│   │   ├── Utils/
│   │   │   ├── AsyncEnumerable.cs
│   │   │   ├── ExecutionContextSuppressor.cs
│   │   │   ├── Factory.cs
│   │   │   ├── NamedOptionExtension.cs
│   │   │   ├── ObserverManager.cs
│   │   │   ├── RandomTimeSpan.cs
│   │   │   ├── ReferenceEqualsComparer.cs
│   │   │   ├── SetExtensions.cs
│   │   │   ├── StandardExtensions.cs
│   │   │   └── TypeConverterExtensions.cs
│   │   ├── build/
│   │   │   └── Microsoft.Orleans.Core.targets
│   │   ├── buildMultiTargeting/
│   │   │   └── Microsoft.Orleans.Core.targets
│   │   └── buildTransitive/
│   │       └── Microsoft.Orleans.Core.targets
│   ├── Orleans.Core.Abstractions/
│   │   ├── Cancellation/
│   │   │   ├── GrainCancellationToken.cs
│   │   │   ├── GrainCancellationTokenSource.cs
│   │   │   └── ICancellationSourcesExtension.cs
│   │   ├── CodeGeneration/
│   │   │   ├── IOnDeserialized.cs
│   │   │   ├── InvokeMethodOptions.cs
│   │   │   └── VersionAttribute.cs
│   │   ├── Concurrency/
│   │   │   └── GrainAttributeConcurrency.cs
│   │   ├── Core/
│   │   │   ├── DeactivationReason.cs
│   │   │   ├── Grain.cs
│   │   │   ├── GrainExtensions.cs
│   │   │   ├── IConfigurationValidator.cs
│   │   │   ├── IGrain.cs
│   │   │   ├── IGrainBase.cs
│   │   │   ├── IGrainCallContext.cs
│   │   │   ├── IGrainCallFilter.cs
│   │   │   ├── IGrainContext.cs
│   │   │   ├── IGrainFactory.cs
│   │   │   ├── IGrainObserver.cs
│   │   │   ├── ILocalActivationStatusChecker.cs
│   │   │   ├── IStorage.cs
│   │   │   ├── Immutable.cs
│   │   │   └── Internal/
│   │   │       ├── ICallChainReentrantGrainContext.cs
│   │   │       └── IGrainManagementExtension.cs
│   │   ├── Diagnostics/
│   │   │   ├── ActivitySources.cs
│   │   │   ├── ActivityTagKeys.cs
│   │   │   └── OpenTelemetryHeaders.cs
│   │   ├── Exceptions/
│   │   │   ├── ClientNotAvailableException.cs
│   │   │   ├── GatewayTooBusyException.cs
│   │   │   ├── GrainExtensionNotInstalledException.cs
│   │   │   ├── LimitExceededException.cs
│   │   │   ├── OrleansConfigurationException.cs
│   │   │   ├── OrleansException.cs
│   │   │   ├── OrleansLifecycleCanceledException.cs
│   │   │   ├── OrleansMessageRejectionException.cs
│   │   │   ├── SiloUnavailableException.cs
│   │   │   └── WrappedException.cs
│   │   ├── GrainDirectory/
│   │   │   ├── GrainDirectoryAttribute.cs
│   │   │   └── IGrainDirectory.cs
│   │   ├── IDs/
│   │   │   ├── ActivationId.cs
│   │   │   ├── ClientGrainId.cs
│   │   │   ├── GrainAddress.cs
│   │   │   ├── GrainAddressCacheUpdate.cs
│   │   │   ├── GrainId.cs
│   │   │   ├── GrainIdKeyExtensions.cs
│   │   │   ├── GrainInterfaceType.cs
│   │   │   ├── GrainType.cs
│   │   │   ├── GrainTypePrefix.cs
│   │   │   ├── GuidId.cs
│   │   │   ├── IdSpan.cs
│   │   │   ├── IdSpanCodec.cs
│   │   │   ├── Legacy/
│   │   │   │   ├── LegacyGrainId.cs
│   │   │   │   └── UniqueKey.cs
│   │   │   ├── ObserverGrainId.cs
│   │   │   ├── SiloAddress.cs
│   │   │   ├── SiloAddressCodec.cs
│   │   │   ├── StableHash.cs
│   │   │   └── SystemTargetGrainId.cs
│   │   ├── Lifecycle/
│   │   │   ├── IGrainLifecycle.cs
│   │   │   ├── ILifecycleObservable.cs
│   │   │   ├── ILifecycleObserver.cs
│   │   │   ├── ILifecycleParticipant.cs
│   │   │   ├── ILifecycleSubject.cs
│   │   │   └── LifecycleExtensions.cs
│   │   ├── Logging/
│   │   │   ├── ErrorCodes.cs
│   │   │   └── LogFormatter.cs
│   │   ├── Manifest/
│   │   │   ├── ClusterManifest.cs
│   │   │   ├── GrainInterfaceProperties.cs
│   │   │   ├── GrainManifest.cs
│   │   │   ├── GrainProperties.cs
│   │   │   ├── IGrainTypeProvider.cs
│   │   │   └── MajorMinorVersion.cs
│   │   ├── Orleans.Core.Abstractions.csproj
│   │   ├── Placement/
│   │   │   ├── ActivationCountBasedPlacement.cs
│   │   │   ├── ClientObserversPlacement.cs
│   │   │   ├── HashBasedPlacement.cs
│   │   │   ├── PlacementAttribute.cs
│   │   │   ├── PlacementFilterAttribute.cs
│   │   │   ├── PlacementFilterStrategy.cs
│   │   │   ├── PlacementStrategy.cs
│   │   │   ├── PreferLocalPlacement.cs
│   │   │   ├── RandomPlacement.cs
│   │   │   ├── ResourceOptimizedPlacement.cs
│   │   │   ├── SiloRoleBasedPlacement.cs
│   │   │   ├── StatelessWorkerPlacement.cs
│   │   │   └── SystemTargetPlacementStrategy.cs
│   │   ├── Properties/
│   │   │   └── IsExternalInit.cs
│   │   ├── Providers/
│   │   │   ├── IProviderBuilder.cs
│   │   │   ├── ProviderConstants.cs
│   │   │   └── ProviderGrainAttributes.cs
│   │   ├── README.md
│   │   ├── Runtime/
│   │   │   ├── AsyncEnumerableRequest.cs
│   │   │   ├── GrainContextComponentExtensions.cs
│   │   │   ├── GrainLifecycleStage.cs
│   │   │   ├── GrainReference.cs
│   │   │   ├── GrainReferenceNotBoundException.cs
│   │   │   ├── IAddressable.cs
│   │   │   ├── IGrainCancellationTokenRuntime.cs
│   │   │   ├── IGrainExtension.cs
│   │   │   ├── IGrainReferenceRuntime.cs
│   │   │   ├── IGrainRuntime.cs
│   │   │   ├── IGrainTimer.cs
│   │   │   ├── MembershipVersion.cs
│   │   │   ├── RequestContext.cs
│   │   │   └── RuntimeContext.cs
│   │   ├── Services/
│   │   │   ├── IGrainService.cs
│   │   │   └── IGrainServiceClient.cs
│   │   ├── Statistics/
│   │   │   ├── EnvironmentStatisticExtensions.cs
│   │   │   ├── IAppEnvironmentStatistics.cs
│   │   │   ├── IEnvironmentStatisticsProvider.cs
│   │   │   └── IHostEnvironmentStatistics.cs
│   │   ├── SystemTargetInterfaces/
│   │   │   ├── ISystemTarget.cs
│   │   │   ├── ISystemTargetBase.cs
│   │   │   └── IVersionManager.cs
│   │   ├── Timers/
│   │   │   ├── GrainTimerCreationOptions.cs
│   │   │   └── ITimerRegistry.cs
│   │   ├── Utils/
│   │   │   ├── Interner.cs
│   │   │   ├── PublicOrleansTaskExtensions.cs
│   │   │   ├── SpanFormattableIPEndPoint.cs
│   │   │   └── Utils.cs
│   │   ├── Versions/
│   │   │   ├── Compatibility/
│   │   │   │   ├── AllVersionsCompatible.cs
│   │   │   │   ├── BackwardCompatible.cs
│   │   │   │   ├── ICompatibilityDirector.cs
│   │   │   │   └── StrictVersionCompatible.cs
│   │   │   ├── IVersionStore.cs
│   │   │   └── Selector/
│   │   │       ├── AllCompatibleVersions.cs
│   │   │       ├── IVersionSelector.cs
│   │   │       ├── LatestVersion.cs
│   │   │       └── MinimumVersion.cs
│   │   ├── build/
│   │   │   └── Microsoft.Orleans.Core.Abstractions.targets
│   │   ├── buildMultiTargeting/
│   │   │   └── Microsoft.Orleans.Core.Abstractions.targets
│   │   └── buildTransitive/
│   │       └── Microsoft.Orleans.Core.Abstractions.targets
│   ├── Orleans.DurableJobs/
│   │   ├── DurableJob.cs
│   │   ├── DurableJobRunResult.cs
│   │   ├── Hosting/
│   │   │   ├── DurableJobsExtensions.cs
│   │   │   └── DurableJobsOptions.cs
│   │   ├── IDurableJobHandler.cs
│   │   ├── IDurableJobReceiverExtension.cs
│   │   ├── ILocalDurableJobManager.cs
│   │   ├── InMemoryJobQueue.cs
│   │   ├── InMemoryJobShard.cs
│   │   ├── JobShard.cs
│   │   ├── JobShardManager.cs
│   │   ├── LocalDurableJobManager.Log.cs
│   │   ├── LocalDurableJobManager.cs
│   │   ├── Orleans.DurableJobs.csproj
│   │   ├── README.md
│   │   ├── ScheduleJobRequest.cs
│   │   ├── ShardExecutor.Log.cs
│   │   └── ShardExecutor.cs
│   ├── Orleans.EventSourcing/
│   │   ├── Common/
│   │   │   ├── ConnectionIssues.cs
│   │   │   ├── NotificationMessage.cs
│   │   │   ├── PrimaryBasedLogViewAdaptor.cs
│   │   │   ├── RecordedConnectionIssue.cs
│   │   │   └── StringEncodedWriteVector.cs
│   │   ├── CustomStorage/
│   │   │   ├── CustomStorageLogConsistencyOptions.cs
│   │   │   ├── ICustomStorageInterface.cs
│   │   │   ├── LogConsistencyProvider.cs
│   │   │   └── LogViewAdaptor.cs
│   │   ├── Hosting/
│   │   │   ├── CustomStorageSiloBuilderExtensions.cs
│   │   │   ├── LogConsistencyProtocolSiloBuilderExtensions.cs
│   │   │   ├── LogStorageSiloBuilderExtensions.cs
│   │   │   └── StateStorageSiloBuilderExtensions.cs
│   │   ├── JournaledGrain.cs
│   │   ├── LogConsistency/
│   │   │   ├── ConnectionIssues.cs
│   │   │   ├── IConnectionIssueListener.cs
│   │   │   ├── ILogConsistencyDiagnostics.cs
│   │   │   ├── ILogConsistencyProtocolGateway.cs
│   │   │   ├── ILogConsistencyProtocolServices.cs
│   │   │   ├── ILogViewAdaptor.cs
│   │   │   ├── ILogViewAdaptorFactory.cs
│   │   │   ├── ILogViewAdaptorHost.cs
│   │   │   ├── IProtocolParticipant.cs
│   │   │   ├── LogConsistentGrain.cs
│   │   │   └── ProtocolServices.cs
│   │   ├── LogStorage/
│   │   │   ├── DefaultAdaptorFactory.cs
│   │   │   ├── LogConsistencyProvider.cs
│   │   │   ├── LogStateWithMetaData.cs
│   │   │   └── LogViewAdaptor.cs
│   │   ├── Orleans.EventSourcing.csproj
│   │   ├── README.md
│   │   └── StateStorage/
│   │       ├── DefaultAdaptorFactory.cs
│   │       ├── GrainStateWithMetaData.cs
│   │       ├── LogConsistencyProvider.cs
│   │       └── LogViewAdaptor.cs
│   ├── Orleans.Hosting.Kubernetes/
│   │   ├── ConfigureKubernetesHostingOptions.cs
│   │   ├── KubernetesClusterAgent.cs
│   │   ├── KubernetesHostingExtensions.cs
│   │   ├── KubernetesHostingOptions.cs
│   │   ├── KubernetesHostingOptionsValidator.cs
│   │   └── Orleans.Hosting.Kubernetes.csproj
│   ├── Orleans.Journaling/
│   │   ├── DurableDictionary.cs
│   │   ├── DurableGrain.cs
│   │   ├── DurableList.cs
│   │   ├── DurableNothing.cs
│   │   ├── DurableQueue.cs
│   │   ├── DurableSet.cs
│   │   ├── DurableState.cs
│   │   ├── DurableTaskCompletionSource.cs
│   │   ├── DurableValue.cs
│   │   ├── HostingExtensions.cs
│   │   ├── IDurableStateMachine.cs
│   │   ├── IStateMachineLogWriter.cs
│   │   ├── IStateMachineManager.cs
│   │   ├── IStateMachineStorage.cs
│   │   ├── IStateMachineStorageProvider.cs
│   │   ├── LogExtent.cs
│   │   ├── LogExtentBuilder.ReadOnlyStream.cs
│   │   ├── LogExtentBuilder.cs
│   │   ├── Orleans.Journaling.csproj
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── StateMachineId.cs
│   │   ├── StateMachineManager.cs
│   │   ├── StateMachineManagerOptions.cs
│   │   ├── StateMachineStorageWriter.cs
│   │   └── VolatileStateMachineStorage.cs
│   ├── Orleans.Persistence.Memory/
│   │   ├── Hosting/
│   │   │   ├── MemoryGrainStorageProviderBuilder.cs
│   │   │   └── MemoryGrainStorageSiloBuilderExtensions.cs
│   │   ├── Options/
│   │   │   └── MemoryGrainStorageOptions.cs
│   │   ├── Orleans.Persistence.Memory.csproj
│   │   └── Storage/
│   │       ├── MemoryStorage.cs
│   │       ├── MemoryStorageEtagMismatchException.cs
│   │       ├── MemoryStorageGrain.cs
│   │       └── MemoryStorageWithLatency.cs
│   ├── Orleans.Reminders/
│   │   ├── Constants/
│   │   │   ├── ReminderOptionsDefaults.cs
│   │   │   └── RemindersConstants.cs
│   │   ├── ErrorCodes.cs
│   │   ├── GrainReminderExtensions.cs
│   │   ├── Hosting/
│   │   │   ├── MemoryReminderTableBuilder.cs
│   │   │   ├── SiloBuilderReminderExtensions.cs
│   │   │   └── SiloBuilderReminderMemoryExtensions.cs
│   │   ├── Options/
│   │   │   └── ReminderOptions.cs
│   │   ├── Orleans.Reminders.csproj
│   │   ├── ReminderService/
│   │   │   ├── GrainBasedReminderTable.cs
│   │   │   ├── InMemoryReminderTable.cs
│   │   │   ├── LocalReminderService.cs
│   │   │   └── ReminderRegistry.cs
│   │   ├── SystemTargetInterfaces/
│   │   │   ├── IReminderService.cs
│   │   │   └── IReminderTable.cs
│   │   └── Timers/
│   │       ├── IRemindable.cs
│   │       └── IReminderRegistry.cs
│   ├── Orleans.Reminders.Abstractions/
│   │   └── Orleans.Reminders.Abstractions.csproj
│   ├── Orleans.Runtime/
│   │   ├── Activation/
│   │   │   ├── ActivationDataActivatorProvider.cs
│   │   │   ├── ConfigureDefaultGrainActivator.cs
│   │   │   ├── DefaultGrainActivator.cs
│   │   │   ├── GrainContextAccessor.cs
│   │   │   ├── IGrainActivator.cs
│   │   │   └── IGrainContextActivator.cs
│   │   ├── Cancellation/
│   │   │   ├── CancellationSourcesExtension.cs
│   │   │   └── GrainCallCancellationManager.cs
│   │   ├── Catalog/
│   │   │   ├── ActivationCollector.cs
│   │   │   ├── ActivationData.cs
│   │   │   ├── ActivationDirectory.cs
│   │   │   ├── ActivationMigrationManager.cs
│   │   │   ├── ActivationState.cs
│   │   │   ├── ActivationWorkingSet.cs
│   │   │   ├── Catalog.cs
│   │   │   ├── GrainLifecycle.cs
│   │   │   ├── GrainTypeSharedContext.cs
│   │   │   ├── IActivationCollector.cs
│   │   │   ├── ICatalog.cs
│   │   │   ├── IncomingRequestMonitor.cs
│   │   │   ├── LocalActivationStatusChecker.cs
│   │   │   ├── StatelessWorkerGrainContext.cs
│   │   │   ├── StreamResourceTestControl.cs
│   │   │   └── SystemTargetShared.cs
│   │   ├── Configuration/
│   │   │   ├── Options/
│   │   │   │   ├── ActivationCountBasedPlacementOptions.cs
│   │   │   │   ├── ActivationRebalancerOptions.cs
│   │   │   │   ├── ActivationRepartitionerOptions.cs
│   │   │   │   ├── ConsistentRingOptions.cs
│   │   │   │   ├── DeploymentLoadPublisherOptions.cs
│   │   │   │   ├── GrainCollectionOptions.cs
│   │   │   │   ├── GrainDirectoryOptions.cs
│   │   │   │   ├── OptionsLogger.cs
│   │   │   │   ├── ResourceOptimizedPlacementOptions.cs
│   │   │   │   ├── SchedulingOptions.cs
│   │   │   │   ├── SiloMessagingOptions.cs
│   │   │   │   ├── SiloMessagingOptionsValidator.cs
│   │   │   │   └── StatelessWorkerOptions.cs
│   │   │   ├── SiloConnectionOptions.cs
│   │   │   └── Validators/
│   │   │       ├── GrainCollectionOptionsValidator.cs
│   │   │       └── SiloClusteringValidator.cs
│   │   ├── ConsistentRing/
│   │   │   ├── ConsistentRingProvider.cs
│   │   │   ├── IConsistentRingProvider.cs
│   │   │   ├── SimpleConsistentRingProvider.cs
│   │   │   └── VirtualBucketsRingProvider.cs
│   │   ├── Core/
│   │   │   ├── FatalErrorHandler.cs
│   │   │   ├── GrainRuntime.cs
│   │   │   ├── HostedClient.cs
│   │   │   ├── IFatalErrorHandler.cs
│   │   │   ├── IHealthCheckParticipant.cs
│   │   │   ├── InsideRuntimeClient.cs
│   │   │   ├── InternalClusterClient.cs
│   │   │   ├── InternalGrainRuntime.cs
│   │   │   ├── ManagementGrain.cs
│   │   │   ├── SystemStatus.cs
│   │   │   └── SystemTarget.cs
│   │   ├── Development/
│   │   │   ├── DevelopmentSiloBuilderExtensions.cs
│   │   │   └── InMemoryLeaseProvider.cs
│   │   ├── Facet/
│   │   │   ├── GrainConstructorArgumentFactory.cs
│   │   │   ├── IAttributeToFactoryMapper.cs
│   │   │   ├── IFacetMetadata.cs
│   │   │   └── Persistent/
│   │   │       ├── IPersistentState.cs
│   │   │       ├── IPersistentStateConfiguration.cs
│   │   │       ├── IPersistentStateFactory.cs
│   │   │       ├── PersistentStateAttribute.cs
│   │   │       ├── PersistentStateAttributeMapper.cs
│   │   │       └── PersistentStateStorageFactory.cs
│   │   ├── GrainDirectory/
│   │   │   ├── CachedGrainLocator.cs
│   │   │   ├── ClientDirectory.cs
│   │   │   ├── ClientGrainLocator.cs
│   │   │   ├── DhtGrainLocator.cs
│   │   │   ├── DirectoryMembershipService.cs
│   │   │   ├── DirectoryMembershipSnapshot.cs
│   │   │   ├── DirectoryResult.cs
│   │   │   ├── DistributedGrainDirectory.cs
│   │   │   ├── GenericGrainDirectoryResolver.cs
│   │   │   ├── GrainDirectoryCacheFactory.cs
│   │   │   ├── GrainDirectoryHandoffManager.cs
│   │   │   ├── GrainDirectoryPartition.Interface.cs
│   │   │   ├── GrainDirectoryPartition.cs
│   │   │   ├── GrainDirectoryPartitionSnapshot.cs
│   │   │   ├── GrainDirectoryResolver.cs
│   │   │   ├── GrainLocator.cs
│   │   │   ├── GrainLocatorResolver.cs
│   │   │   ├── IGrainDirectoryCache.cs
│   │   │   ├── IGrainDirectoryPartition.cs
│   │   │   ├── IGrainDirectoryResolver.cs
│   │   │   ├── ILocalClientDirectory.cs
│   │   │   ├── ILocalGrainDirectory.cs
│   │   │   ├── IRemoteClientDirectory.cs
│   │   │   ├── IRemoteGrainDirectory.cs
│   │   │   ├── LocalGrainDirectory.cs
│   │   │   ├── LocalGrainDirectoryPartition.cs
│   │   │   ├── LruGrainDirectoryCache.cs
│   │   │   ├── RemoteGrainDirectory.cs
│   │   │   ├── RingRange.cs
│   │   │   └── RingRangeCollection.cs
│   │   ├── GrainTypeManager/
│   │   │   ├── ClusterManifestSystemTarget.cs
│   │   │   └── ISiloManifestSystemTarget.cs
│   │   ├── Hosting/
│   │   │   ├── ActivationRebalancerExtensions.cs
│   │   │   ├── ActivationRepartitioningExtensions.cs
│   │   │   ├── CoreHostingExtensions.cs
│   │   │   ├── DefaultSiloServices.cs
│   │   │   ├── DirectorySiloBuilderExtensions.cs
│   │   │   ├── EndpointOptions.cs
│   │   │   ├── EndpointOptionsExtensions.cs
│   │   │   ├── EndpointOptionsProvider.cs
│   │   │   ├── GrainCallFilterExtensions.cs
│   │   │   ├── HostingGrainExtensions.cs
│   │   │   ├── ISiloBuilder.cs
│   │   │   ├── NamedService.cs
│   │   │   ├── OrleansSiloGenericHostExtensions.cs
│   │   │   ├── PlacementStrategyExtensions.cs
│   │   │   ├── ProviderConfiguration/
│   │   │   │   └── DevelopmentClusteringProvider.cs
│   │   │   ├── SiloBuilder.cs
│   │   │   ├── SiloBuilderExtensions.cs
│   │   │   ├── SiloBuilderStartupExtensions.cs
│   │   │   ├── SiloHostedService.cs
│   │   │   └── StorageProviderHostExtensions.cs
│   │   ├── Lifecycle/
│   │   │   ├── ISiloLifecycle.cs
│   │   │   ├── ISiloLifecycleSubject.cs
│   │   │   ├── IStartupTask.cs
│   │   │   └── SiloLifecycleSubject.cs
│   │   ├── Manifest/
│   │   │   ├── ClusterManifestProvider.cs
│   │   │   ├── GrainClassMap.cs
│   │   │   └── SiloManifestProvider.cs
│   │   ├── MembershipService/
│   │   │   ├── ClusterHealthMonitor.cs
│   │   │   ├── ClusterMember.cs
│   │   │   ├── ClusterMembershipService.cs
│   │   │   ├── ClusterMembershipSnapshot.cs
│   │   │   ├── ClusterMembershipUpdate.cs
│   │   │   ├── DevelopmentClusterMembershipOptions.cs
│   │   │   ├── DevelopmentClusterMembershipOptionsValidator.cs
│   │   │   ├── IClusterMembershipService.cs
│   │   │   ├── IMembershipGossiper.cs
│   │   │   ├── IRemoteSiloProber.cs
│   │   │   ├── ISiloStatusListener.cs
│   │   │   ├── ISiloStatusOracle.cs
│   │   │   ├── InMemoryMembershipTable.cs
│   │   │   ├── LocalSiloHealthMonitor.cs
│   │   │   ├── MembershipAgent.cs
│   │   │   ├── MembershipGossiper.cs
│   │   │   ├── MembershipSystemTarget.cs
│   │   │   ├── MembershipTableCleanupAgent.cs
│   │   │   ├── MembershipTableEntryExtensions.cs
│   │   │   ├── MembershipTableManager.cs
│   │   │   ├── MembershipTableSnapshotExtensions.cs
│   │   │   ├── OrleansClusterConnectivityCheckFailedException.cs
│   │   │   ├── OrleansMissingMembershipEntryException.cs
│   │   │   ├── RemoteSiloProber.cs
│   │   │   ├── SiloHealthMonitor.cs
│   │   │   ├── SiloMetadata/
│   │   │   │   ├── ISiloMetadataCache.cs
│   │   │   │   ├── ISiloMetadataClient.cs
│   │   │   │   ├── ISiloMetadataSystemTarget.cs
│   │   │   │   ├── SiloMetadaCache.cs
│   │   │   │   ├── SiloMetadata.cs
│   │   │   │   ├── SiloMetadataClient.cs
│   │   │   │   ├── SiloMetadataHostingExtensions.cs
│   │   │   │   └── SiloMetadataSystemTarget.cs
│   │   │   ├── SiloStatusListenerManager.cs
│   │   │   ├── SiloStatusOracle.cs
│   │   │   └── SystemTargetBasedMembershipTable.cs
│   │   ├── Messaging/
│   │   │   ├── Gateway.cs
│   │   │   ├── IConnectedClientCollection.cs
│   │   │   ├── MessageCenter.cs
│   │   │   ├── OverloadDetector.cs
│   │   │   └── RuntimeMessagingTrace.cs
│   │   ├── Networking/
│   │   │   ├── ConnectionListener.cs
│   │   │   ├── GatewayConnectionListener.cs
│   │   │   ├── GatewayInboundConnection.cs
│   │   │   ├── ProbeRequestMonitor.cs
│   │   │   ├── SiloConnection.cs
│   │   │   ├── SiloConnectionFactory.cs
│   │   │   ├── SiloConnectionListener.cs
│   │   │   └── SiloConnectionMaintainer.cs
│   │   ├── Orleans.Runtime.csproj
│   │   ├── Placement/
│   │   │   ├── ActivationCountPlacementDirector.cs
│   │   │   ├── ClientObserverPlacementStrategyResolver.cs
│   │   │   ├── ClientObserversPlacementDirector.cs
│   │   │   ├── DeploymentLoadPublisher.cs
│   │   │   ├── Filtering/
│   │   │   │   ├── PlacementFilterDirectorResolver.cs
│   │   │   │   ├── PlacementFilterStrategyResolver.cs
│   │   │   │   ├── PreferredMatchSiloMetadataPlacementFilterAttribute.cs
│   │   │   │   ├── PreferredMatchSiloMetadataPlacementFilterDirector.cs
│   │   │   │   ├── PreferredMatchSiloMetadataPlacementFilterStrategy.cs
│   │   │   │   ├── RequiredMatchSiloMetadataPlacementFilterAttribute.cs
│   │   │   │   ├── RequiredMatchSiloMetadataPlacementFilterDirector.cs
│   │   │   │   └── RequiredMatchSiloMetadataPlacementFilterStrategy.cs
│   │   │   ├── GrainMigratabilityChecker.cs
│   │   │   ├── HashBasedPlacementDirector.cs
│   │   │   ├── IPlacementStrategyResolver.cs
│   │   │   ├── ISiloStatisticsChangeListener.cs
│   │   │   ├── PlacementDirectorResolver.cs
│   │   │   ├── PlacementService.cs
│   │   │   ├── PlacementStrategyResolver.cs
│   │   │   ├── PreferLocalPlacementDirector.cs
│   │   │   ├── RandomPlacementDirector.cs
│   │   │   ├── Rebalancing/
│   │   │   │   ├── ActivationRebalancerMonitor.cs
│   │   │   │   ├── ActivationRebalancerWorker.Log.cs
│   │   │   │   ├── ActivationRebalancerWorker.cs
│   │   │   │   └── FailedSessionBackoffProvider.cs
│   │   │   ├── Repartitioning/
│   │   │   │   ├── ActivationRepartitioner.Log.cs
│   │   │   │   ├── ActivationRepartitioner.MessageSink.cs
│   │   │   │   ├── ActivationRepartitioner.cs
│   │   │   │   ├── BlockedBloomFilter.cs
│   │   │   │   ├── FrequentItemCollection.cs
│   │   │   │   ├── MaxHeap.cs
│   │   │   │   ├── RebalancerCompatibleRule.cs
│   │   │   │   └── RepartitionerMessageFilter.cs
│   │   │   ├── ResourceOptimizedPlacementDirector.cs
│   │   │   ├── SiloRoleBasedPlacementDirector.cs
│   │   │   └── StatelessWorkerDirector.cs
│   │   ├── Properties/
│   │   │   └── IsExternalInit.cs
│   │   ├── README.md
│   │   ├── Scheduler/
│   │   │   ├── ActivationTaskScheduler.cs
│   │   │   ├── ClosureWorkItem.cs
│   │   │   ├── IWorkItem.cs
│   │   │   ├── SchedulerExtensions.cs
│   │   │   ├── TaskSchedulerUtils.cs
│   │   │   ├── WorkItemBase.cs
│   │   │   └── WorkItemGroup.cs
│   │   ├── Services/
│   │   │   ├── GrainService.cs
│   │   │   ├── GrainServiceClient.cs
│   │   │   ├── GrainServiceFactory.cs
│   │   │   └── GrainServicesSiloBuilderExtensions.cs
│   │   ├── Silo/
│   │   │   ├── LocalSiloDetails.cs
│   │   │   ├── Silo.cs
│   │   │   ├── SiloControl.cs
│   │   │   ├── SiloOptions.cs
│   │   │   ├── SiloProviderRuntime.cs
│   │   │   ├── TestHooks/
│   │   │   │   ├── ITestHooksSystemTarget.cs
│   │   │   │   └── TestHooksSystemTarget.cs
│   │   │   └── Watchdog.cs
│   │   ├── Storage/
│   │   │   └── StateStorageBridge.cs
│   │   ├── Timers/
│   │   │   ├── AsyncTimer.cs
│   │   │   ├── AsyncTimerFactory.cs
│   │   │   ├── GrainTimer.cs
│   │   │   ├── IAsyncTimer.cs
│   │   │   ├── IAsyncTimerFactory.cs
│   │   │   ├── IGrainTimerRegistry.cs
│   │   │   └── TimerRegistry.cs
│   │   ├── Utilities/
│   │   │   ├── FactoryUtility.cs
│   │   │   ├── OrleansDebuggerHelper.cs
│   │   │   ├── SearchAlgorithms.cs
│   │   │   └── StripedMpscBuffer.cs
│   │   └── Versions/
│   │       ├── CachedVersionSelectorManager.cs
│   │       ├── Compatibility/
│   │       │   ├── AllVersionsCompatibilityDirector.cs
│   │       │   ├── BackwardCompatilityDirector.cs
│   │       │   ├── CompatibilityDirectorManager.cs
│   │       │   └── StrictVersionCompatibilityDirector.cs
│   │       ├── GrainVersionStore.cs
│   │       ├── Selector/
│   │       │   ├── AllCompatibleVersionsSelector.cs
│   │       │   ├── LatestVersionDirector.cs
│   │       │   ├── MinimumVersionSelector.cs
│   │       │   └── VersionDirectorManager.cs
│   │       ├── SingleWaiterAutoResetEvent.cs
│   │       └── VersionStoreGrain.cs
│   ├── Orleans.Sdk/
│   │   ├── Orleans.Sdk.csproj
│   │   ├── README.md
│   │   ├── build/
│   │   │   └── Microsoft.Orleans.Sdk.targets
│   │   ├── buildMultiTargeting/
│   │   │   └── Microsoft.Orleans.Sdk.targets
│   │   └── buildTransitive/
│   │       └── Microsoft.Orleans.Sdk.targets
│   ├── Orleans.Serialization/
│   │   ├── Activators/
│   │   │   ├── DefaultActivator.cs
│   │   │   └── IActivator.cs
│   │   ├── Buffers/
│   │   │   ├── Adaptors/
│   │   │   │   ├── ArrayStreamBufferWriter.cs
│   │   │   │   ├── BufferSliceReaderInput.cs
│   │   │   │   ├── BufferWriterBox.cs
│   │   │   │   ├── BufferWriterExtensions.cs
│   │   │   │   ├── MemoryBufferWriter.cs
│   │   │   │   ├── MemoryStreamBufferWriter.cs
│   │   │   │   ├── PooledBufferStream.cs
│   │   │   │   ├── PoolingStreamBufferWriter.cs
│   │   │   │   └── SpanBufferWriter.cs
│   │   │   ├── ArcBufferWriter.cs
│   │   │   ├── BufferWriterExtensions.cs
│   │   │   ├── PooledBuffer.cs
│   │   │   ├── Reader.cs
│   │   │   ├── Writer.FieldHeader.cs
│   │   │   ├── Writer.TagDelimitedField.cs
│   │   │   ├── Writer.VarInt.cs
│   │   │   └── Writer.cs
│   │   ├── Cloning/
│   │   │   └── IDeepCopier.cs
│   │   ├── Codecs/
│   │   │   ├── ArrayCodec.cs
│   │   │   ├── ArrayListCodec.cs
│   │   │   ├── BigIntegerCodec.cs
│   │   │   ├── BitVector32Codec.cs
│   │   │   ├── ByteArrayCodec.cs
│   │   │   ├── CollectionCodec.cs
│   │   │   ├── CommonCodecTypeFilter.cs
│   │   │   ├── CompareInfoCodec.cs
│   │   │   ├── ConcurrentDictionaryCodec.cs
│   │   │   ├── ConcurrentQueueCodec.cs
│   │   │   ├── ConsumeFieldExtension.cs
│   │   │   ├── CultureInfoCodec.cs
│   │   │   ├── DateOnlyCodec.cs
│   │   │   ├── DateTimeCodec.cs
│   │   │   ├── DateTimeOffsetCodec.cs
│   │   │   ├── DictionaryCodec.cs
│   │   │   ├── Enum32BaseCodec.cs
│   │   │   ├── FloatCodec.cs
│   │   │   ├── GeneralizedReferenceTypeSurrogateCodec.cs
│   │   │   ├── GeneralizedValueTypeSurrogateCodec.cs
│   │   │   ├── GuidCodec.cs
│   │   │   ├── HashSetCodec.cs
│   │   │   ├── IFieldCodec.cs
│   │   │   ├── IPAddressCodec.cs
│   │   │   ├── IPEndPointCodec.cs
│   │   │   ├── ImmutableArrayCodec.cs
│   │   │   ├── ImmutableDictionaryCodec.cs
│   │   │   ├── ImmutableHashSetCodec.cs
│   │   │   ├── ImmutableListCodec.cs
│   │   │   ├── ImmutableQueueCodec.cs
│   │   │   ├── ImmutableSortedDictionaryCodec.cs
│   │   │   ├── ImmutableSortedSetCodec.cs
│   │   │   ├── ImmutableStackCodec.cs
│   │   │   ├── IntegerCodec.cs
│   │   │   ├── KeyValuePairCodec.cs
│   │   │   ├── ListCodec.cs
│   │   │   ├── MultiDimensionalArrayCodec.cs
│   │   │   ├── NameValueCollectionCodec.cs
│   │   │   ├── NullableCodec.cs
│   │   │   ├── ObjectCodec.cs
│   │   │   ├── QueueCodec.cs
│   │   │   ├── ReadOnlyCollectionCodec.cs
│   │   │   ├── ReadOnlyDictionaryCodec.cs
│   │   │   ├── ReferenceCodec.cs
│   │   │   ├── ReferenceTypeSurrogateCodec.cs
│   │   │   ├── SkipFieldExtension.cs
│   │   │   ├── SortedDictionaryCodec.cs
│   │   │   ├── SortedListCodec.cs
│   │   │   ├── SortedSetCodec.cs
│   │   │   ├── StackCodec.cs
│   │   │   ├── StringCodec.cs
│   │   │   ├── TimeOnlyCodec.cs
│   │   │   ├── TimeSpanCodec.cs
│   │   │   ├── TupleCodec.cs
│   │   │   ├── TypeSerializerCodec.cs
│   │   │   ├── UnknownFieldMarker.cs
│   │   │   ├── UriCodec.cs
│   │   │   ├── ValueTupleCodec.cs
│   │   │   ├── VersionCodec.cs
│   │   │   ├── VoidCodec.cs
│   │   │   └── WellKnownStringComparerCodec.cs
│   │   ├── Configuration/
│   │   │   ├── DefaultTypeManifestProvider.cs
│   │   │   ├── ITypeManifestProvider.cs
│   │   │   ├── TypeManifestOptions.cs
│   │   │   └── TypeManifestProviderAttribute.cs
│   │   ├── Exceptions.cs
│   │   ├── GeneratedCodeHelpers/
│   │   │   └── OrleansGeneratedCodeHelper.cs
│   │   ├── Hosting/
│   │   │   ├── ISerializerBuilder.cs
│   │   │   ├── ReferencedAssemblyProvider.cs
│   │   │   ├── SerializerBuilderExtensions.cs
│   │   │   ├── SerializerConfigurationAnalyzer.cs
│   │   │   └── ServiceCollectionExtensions.cs
│   │   ├── ISerializableSerializer/
│   │   │   ├── DotNetSerializableCodec.cs
│   │   │   ├── ExceptionCodec.cs
│   │   │   ├── ExceptionSerializationOptions.cs
│   │   │   ├── SerializationCallbacksFactory.cs
│   │   │   ├── SerializationConstructorFactory.cs
│   │   │   ├── SerializationConstructorNotFoundException.cs
│   │   │   ├── SerializationEntryCodec.cs
│   │   │   ├── SerializationEntrySurrogate.cs
│   │   │   ├── UnavailableExceptionFallbackException.cs
│   │   │   ├── ValueTypeSerializer.cs
│   │   │   └── ValueTypeSerializerFactory.cs
│   │   ├── Invocation/
│   │   │   ├── IInvokable.cs
│   │   │   ├── IResponseCompletionSource.cs
│   │   │   ├── ITargetHolder.cs
│   │   │   ├── Pools/
│   │   │   │   ├── ConcurrentObjectPool.cs
│   │   │   │   ├── DefaultConcurrentObjectPoolPolicy.cs
│   │   │   │   ├── InvokablePool.cs
│   │   │   │   ├── ResponseCompletionSourcePool.cs
│   │   │   │   └── ResponsePool.cs
│   │   │   ├── Response.cs
│   │   │   ├── ResponseCompletionSource.cs
│   │   │   └── TargetHolderExtensions.cs
│   │   ├── Orleans.Serialization.csproj
│   │   ├── Properties/
│   │   │   └── IsExternalInit.cs
│   │   ├── README.md
│   │   ├── Serializer.cs
│   │   ├── Serializers/
│   │   │   ├── AbstractTypeSerializer.cs
│   │   │   ├── CodecProvider.cs
│   │   │   ├── ConcreteTypeSerializer.cs
│   │   │   ├── IActivatorProvider.cs
│   │   │   ├── IBaseCodec.cs
│   │   │   ├── IBaseCodecProvider.cs
│   │   │   ├── ICodecProvider.cs
│   │   │   ├── ICodecSelector.cs
│   │   │   ├── IFieldCodecProvider.cs
│   │   │   ├── IGeneralizedCodec.cs
│   │   │   ├── IValueSerializer.cs
│   │   │   ├── IValueSerializerProvider.cs
│   │   │   ├── SurrogateCodec.cs
│   │   │   ├── ValueSerializer.cs
│   │   │   └── ValueTypeSurrogateCodec.cs
│   │   ├── Session/
│   │   │   ├── ReferencedObjectCollection.cs
│   │   │   ├── ReferencedTypeCollection.cs
│   │   │   ├── SerializerSession.cs
│   │   │   ├── SerializerSessionPool.cs
│   │   │   └── WellKnownTypeCollection.cs
│   │   ├── TypeSystem/
│   │   │   ├── CachedTypeResolver.cs
│   │   │   ├── CompoundTypeAliasTree.cs
│   │   │   ├── DefaultTypeFilter.cs
│   │   │   ├── ITypeConverter.cs
│   │   │   ├── ITypeResolver.cs
│   │   │   ├── QualifiedType.cs
│   │   │   ├── RuntimeTypeNameFormatter.cs
│   │   │   ├── RuntimeTypeNameParser.cs
│   │   │   ├── RuntimeTypeNameRewriter.cs
│   │   │   ├── TypeCodec.cs
│   │   │   ├── TypeConverter.cs
│   │   │   └── TypeSpec.cs
│   │   ├── Utilities/
│   │   │   ├── BitOperations.cs
│   │   │   ├── BitStreamFormatter.cs
│   │   │   ├── FieldAccessor.cs
│   │   │   ├── ReferenceEqualsComparer.cs
│   │   │   ├── ServiceCollectionExtensions.cs
│   │   │   └── VarIntReaderExtensions.cs
│   │   └── WireProtocol/
│   │       ├── ExtendedWireType.cs
│   │       ├── Field.cs
│   │       ├── SchemaType.cs
│   │       ├── Tag.cs
│   │       └── WireType.cs
│   ├── Orleans.Serialization.Abstractions/
│   │   ├── Annotations.cs
│   │   ├── FrameworkPartAttribute.cs
│   │   ├── GenerateFieldIds.cs
│   │   ├── Orleans.Serialization.Abstractions.csproj
│   │   ├── Properties/
│   │   │   └── IsExternalInit.cs
│   │   └── README.md
│   ├── Orleans.Serialization.FSharp/
│   │   ├── FSharpCodecs.cs
│   │   ├── Orleans.Serialization.FSharp.csproj
│   │   └── README.md
│   ├── Orleans.Serialization.MemoryPack/
│   │   ├── MemoryPackCodec.cs
│   │   ├── MemoryPackCodecOptions.cs
│   │   ├── Orleans.Serialization.MemoryPack.csproj
│   │   ├── README.md
│   │   └── SerializationHostingExtensions.cs
│   ├── Orleans.Serialization.MessagePack/
│   │   ├── MessagePackCodec.cs
│   │   ├── MessagePackCodecOptions.cs
│   │   ├── Orleans.Serialization.MessagePack.csproj
│   │   ├── README.md
│   │   └── SerializationHostingExtensions.cs
│   ├── Orleans.Serialization.NewtonsoftJson/
│   │   ├── NewtonsoftJsonCodec.cs
│   │   ├── NewtonsoftJsonCodecOptions.cs
│   │   ├── Orleans.Serialization.NewtonsoftJson.csproj
│   │   ├── README.md
│   │   └── SerializationHostingExtensions.cs
│   ├── Orleans.Serialization.SystemTextJson/
│   │   ├── JsonCodec.cs
│   │   ├── JsonCodecOptions.cs
│   │   ├── Orleans.Serialization.SystemTextJson.csproj
│   │   ├── README.md
│   │   └── SerializationHostingExtensions.cs
│   ├── Orleans.Serialization.TestKit/
│   │   ├── BufferTestHelper.cs
│   │   ├── CopierTester.cs
│   │   ├── FieldCodecTester.cs
│   │   ├── IOutputBuffer.cs
│   │   ├── Orleans.Serialization.TestKit.csproj
│   │   ├── README.md
│   │   ├── ReadOnlySequenceHelper.cs
│   │   ├── TestBufferWriterStruct.cs
│   │   ├── TestMultiSegmentBufferWriter.cs
│   │   └── ValueTypeFieldCodecTester.cs
│   ├── Orleans.Server/
│   │   ├── Orleans.Server.csproj
│   │   └── README.md
│   ├── Orleans.Streaming/
│   │   ├── Common/
│   │   │   ├── EventSequenceToken.cs
│   │   │   ├── EventSequenceTokenV2.cs
│   │   │   ├── Monitors/
│   │   │   │   ├── DefaultBlockPoolMonitor.cs
│   │   │   │   ├── DefaultCacheMonitor.cs
│   │   │   │   ├── DefaultQueueAdapterReceiverMonitor.cs
│   │   │   │   ├── IBlockPoolMonitor.cs
│   │   │   │   ├── ICacheMonitor.cs
│   │   │   │   ├── IObjectPoolMonitor.cs
│   │   │   │   ├── IQueueAdapterReceiverMonitor.cs
│   │   │   │   └── MonitorAggregationDimensions.cs
│   │   │   ├── PooledCache/
│   │   │   │   ├── CachedMessage.cs
│   │   │   │   ├── CachedMessageBlock.cs
│   │   │   │   ├── CachedMessagePool.cs
│   │   │   │   ├── ChronologicalEvictionStrategy.cs
│   │   │   │   ├── FixedSizeBuffer.cs
│   │   │   │   ├── ICacheDataAdapter.cs
│   │   │   │   ├── IEvictionStrategy.cs
│   │   │   │   ├── IObjectPool.cs
│   │   │   │   ├── ObjectPool.cs
│   │   │   │   ├── PooledQueueCache.cs
│   │   │   │   └── TimePurgePredicate.cs
│   │   │   ├── RecoverableStreamConfigurator.cs
│   │   │   ├── RecoverableStreamOptions.cs
│   │   │   ├── SegmentBuilder.cs
│   │   │   └── SimpleCache/
│   │   │       ├── SimpleQueueAdapterCache.cs
│   │   │       ├── SimpleQueueCache.cs
│   │   │       ├── SimpleQueueCacheCursor.cs
│   │   │       └── SimpleQueueCacheOptions.cs
│   │   ├── Core/
│   │   │   ├── DefaultStreamIdMapper.cs
│   │   │   ├── IAsyncBatchObservable.cs
│   │   │   ├── IAsyncBatchObserver.cs
│   │   │   ├── IAsyncBatchProducer.cs
│   │   │   ├── IAsyncObservable.cs
│   │   │   ├── IAsyncObserver.cs
│   │   │   ├── IAsyncStream.cs
│   │   │   ├── IStreamIdMapper.cs
│   │   │   ├── IStreamIdentity.cs
│   │   │   ├── IStreamSubscriptionHandleFactory.cs
│   │   │   ├── IStreamSubscriptionManager.cs
│   │   │   ├── IStreamSubscriptionManagerAdmin.cs
│   │   │   ├── IStreamSubscriptionManagerRetriever.cs
│   │   │   ├── IStreamSubscriptionObserver.cs
│   │   │   ├── ImplicitConsumerGrainExtensions.cs
│   │   │   ├── StreamIdentity.cs
│   │   │   ├── StreamSequenceToken.cs
│   │   │   ├── StreamSubscription.cs
│   │   │   ├── StreamSubscriptionHandle.cs
│   │   │   ├── StreamSubscriptionManager.cs
│   │   │   └── StreamSubscriptionManagerAdmin.cs
│   │   ├── Extensions/
│   │   │   ├── AsyncBatchObservableExtensions.cs
│   │   │   ├── AsyncObservableExtensions.cs
│   │   │   ├── GenericAsyncObserver.cs
│   │   │   ├── GenericBatchAsyncObserver.cs
│   │   │   └── StreamSubscriptionHandleExtensions.cs
│   │   ├── Filtering/
│   │   │   └── IStreamFilter.cs
│   │   ├── Generator/
│   │   │   ├── GeneratorAdapterFactory.cs
│   │   │   ├── GeneratorPooledCache.cs
│   │   │   ├── Generators/
│   │   │   │   ├── GeneratedBatchContainer.cs
│   │   │   │   ├── GeneratedEvent.cs
│   │   │   │   ├── SimpleGenerator.cs
│   │   │   │   └── SimpleGeneratorConfig.cs
│   │   │   └── IStreamGenerator.cs
│   │   ├── GrainStreamingExtensions.cs
│   │   ├── Hosting/
│   │   │   ├── ClientBuilderStreamingExtensions.cs
│   │   │   ├── ClusterClientPersistentStreamConfigurator.cs
│   │   │   ├── SiloBuilderMemoryStreamExtensions.cs
│   │   │   ├── SiloBuilderStreamingExtensions.cs
│   │   │   └── StreamingServiceCollectionExtensions.cs
│   │   ├── ISiloPersistentStreamConfigurator.cs
│   │   ├── Internal/
│   │   │   ├── IInternalAsyncObservable.cs
│   │   │   ├── IInternalStreamProvider.cs
│   │   │   ├── IStreamControl.cs
│   │   │   ├── IStreamGrainExtensions.cs
│   │   │   ├── PeriodicAction.cs
│   │   │   ├── StreamConsumer.cs
│   │   │   ├── StreamConsumerExtension.cs
│   │   │   ├── StreamDirectory.cs
│   │   │   ├── StreamHandshakeToken.cs
│   │   │   ├── StreamImpl.cs
│   │   │   ├── StreamSubscriptionHandleImpl.cs
│   │   │   └── StreamSubsriptionHandlerFactory.cs
│   │   ├── InternalStreamId.cs
│   │   ├── JsonConverters/
│   │   │   ├── StreamImplConverter.cs
│   │   │   └── StreamingConverterConfigurator.cs
│   │   ├── LoadShedQueueFlowController.cs
│   │   ├── MemoryStreams/
│   │   │   ├── IMemoryStreamQueueGrain.cs
│   │   │   ├── MemoryAdapterFactory.cs
│   │   │   ├── MemoryAdapterReceiver.cs
│   │   │   ├── MemoryBatchContainer.cs
│   │   │   ├── MemoryMessageBody.cs
│   │   │   ├── MemoryMessageBodySerializerFactory.cs
│   │   │   ├── MemoryMessageData.cs
│   │   │   ├── MemoryPooledCache.cs
│   │   │   ├── MemoryStreamBuilder.cs
│   │   │   ├── MemoryStreamProviderBuilder.cs
│   │   │   └── MemoryStreamQueueGrain.cs
│   │   ├── Orleans.Streaming.csproj
│   │   ├── PersistentStreams/
│   │   │   ├── IDeploymentConfiguration.cs
│   │   │   ├── IPersistentStreamPullingAgent.cs
│   │   │   ├── IQueueDataAdapter.cs
│   │   │   ├── IStreamFailureHandler.cs
│   │   │   ├── IStreamQueueBalancer.cs
│   │   │   ├── IStreamQueueCheckpointer.cs
│   │   │   ├── NoOpStreamFailureHandler.cs
│   │   │   ├── Options/
│   │   │   │   └── PersistentStreamProviderOptions.cs
│   │   │   ├── PersistentStreamProducer.cs
│   │   │   ├── PersistentStreamProvider.cs
│   │   │   ├── PersistentStreamPullingAgent.cs
│   │   │   ├── PersistentStreamPullingManager.cs
│   │   │   ├── QueueStreamDataStructures.cs
│   │   │   ├── StreamConsumerCollection.cs
│   │   │   ├── StreamEventDeliveryFailureException.cs
│   │   │   └── StreamPosition.cs
│   │   ├── Predicates/
│   │   │   ├── AllStreamNamespacesPredicate.cs
│   │   │   ├── ExactMatchStreamNamespacePredicate.cs
│   │   │   ├── IStreamNamespacePredicate.cs
│   │   │   ├── RegexStreamNamespacePredicate.cs
│   │   │   └── StreamSubscriptionAttributes.cs
│   │   ├── ProviderErrorCode.cs
│   │   ├── Providers/
│   │   │   ├── ClientStreamingProviderRuntime.cs
│   │   │   ├── IBackoffProviders.cs
│   │   │   ├── IStreamProvider.cs
│   │   │   ├── IStreamProviderRuntime.cs
│   │   │   ├── ProviderStartException.cs
│   │   │   ├── SiloStreamProviderRuntime.cs
│   │   │   └── StreamProviderDirection.cs
│   │   ├── PubSub/
│   │   │   ├── DefaultStreamNamespacePredicateProvider.cs
│   │   │   ├── FaultedSubscriptionException.cs
│   │   │   ├── GrainBasedPubSubRuntime.cs
│   │   │   ├── IPubSubRendezvousGrain.cs
│   │   │   ├── ImplicitStreamPubSub.cs
│   │   │   ├── ImplicitStreamSubscriberTable.cs
│   │   │   ├── PubSubPublisherState.cs
│   │   │   ├── PubSubRendezvousGrain.cs
│   │   │   ├── PubSubSubscriptionState.cs
│   │   │   ├── StreamPubSubImpl.cs
│   │   │   ├── StreamSubscriptionManagerExtensions.cs
│   │   │   └── SubscriptionMarker.cs
│   │   ├── QueueAdapters/
│   │   │   ├── AggregatedQueueFlowController.cs
│   │   │   ├── BatchContainerBatch.cs
│   │   │   ├── DataNotAvailableException.cs
│   │   │   ├── HashRing.cs
│   │   │   ├── HashRingBasedStreamQueueMapper.cs
│   │   │   ├── HashRingStreamQueueMapperOptions.cs
│   │   │   ├── IBatchContainer.cs
│   │   │   ├── IBatchContainerBatch.cs
│   │   │   ├── IConsistentRingStreamQueueMapper.cs
│   │   │   ├── IQueueAdapter.cs
│   │   │   ├── IQueueAdapterCache.cs
│   │   │   ├── IQueueAdapterFactory.cs
│   │   │   ├── IQueueAdapterReceiver.cs
│   │   │   ├── IQueueCache.cs
│   │   │   ├── IQueueCacheCursor.cs
│   │   │   ├── IQueueFlowController.cs
│   │   │   ├── IStreamQueueMapper.cs
│   │   │   ├── QueueAdapterConstants.cs
│   │   │   └── QueueCacheMissException.cs
│   │   ├── QueueBalancer/
│   │   │   ├── BestFitBalancer.cs
│   │   │   ├── ConsistentRingQueueBalancer.cs
│   │   │   ├── DeploymentBasedQueueBalancer.cs
│   │   │   ├── DeploymentBasedQueueBalancerOptions.cs
│   │   │   ├── IResourceSelector.cs
│   │   │   ├── LeaseBasedQueueBalancer.cs
│   │   │   ├── LeaseBasedQueueBalancerOptions.cs
│   │   │   ├── PersistentStreamConfiguratorExtension.cs
│   │   │   ├── QueueBalancerBase.cs
│   │   │   ├── RoundRobinSelector.cs
│   │   │   └── StaticClusterDeploymentConfiguration.cs
│   │   ├── QueueId.cs
│   │   ├── SiloPersistentStreamConfigurator.cs
│   │   ├── StreamConsumerGrainContextAction.cs
│   │   └── StreamId.cs
│   ├── Orleans.Streaming.Abstractions/
│   │   ├── Orleans.Streaming.Abstractions.csproj
│   │   └── Properties/
│   │       └── AssemblyInfo.cs
│   ├── Orleans.Streaming.NATS/
│   │   ├── Hosting/
│   │   │   ├── ClientBuilderExtensions.cs
│   │   │   ├── NatsStreamConfigurator.cs
│   │   │   └── SiloBuilderExtensions.cs
│   │   ├── NatsOptions.cs
│   │   ├── Orleans.Streaming.NATS.csproj
│   │   ├── Providers/
│   │   │   ├── NatsAdapter.cs
│   │   │   ├── NatsAdapterFactory.cs
│   │   │   ├── NatsBatchContainer.cs
│   │   │   ├── NatsConnectionManager.cs
│   │   │   ├── NatsQueueAdapterReceiver.cs
│   │   │   ├── NatsStreamConsumer.cs
│   │   │   ├── NatsStreamMessage.cs
│   │   │   └── StreamIdJsonConverter.cs
│   │   └── README.md
│   ├── Orleans.TestingHost/
│   │   ├── ClientExtensions.cs
│   │   ├── ConfigureDistributedGrainDirectory.cs
│   │   ├── IClientBuilderConfigurator.cs
│   │   ├── IHostConfigurator.cs
│   │   ├── IPortAllocator.cs
│   │   ├── ISiloConfigurator.cs
│   │   ├── InMemoryTransport/
│   │   │   ├── InMemoryTransportConnection.cs
│   │   │   └── InMemoryTransportListenerFactory.cs
│   │   ├── InProcTestCluster.cs
│   │   ├── InProcTestClusterBuilder.cs
│   │   ├── InProcTestClusterOptions.cs
│   │   ├── InProcTestSiloSpecificOptions.cs
│   │   ├── InProcess/
│   │   │   ├── InProcessGrainDirectory.cs
│   │   │   └── InProcessMembershipTable.cs
│   │   ├── InProcessSiloHandle.cs
│   │   ├── Logging/
│   │   │   ├── FileLogger.cs
│   │   │   └── FileLoggerProvider.cs
│   │   ├── Orleans.TestingHost.csproj
│   │   ├── SiloHandle.cs
│   │   ├── StandaloneSiloHandle.cs
│   │   ├── StandaloneSiloHost.cs
│   │   ├── TestCluster.cs
│   │   ├── TestClusterBuilder.cs
│   │   ├── TestClusterExtensions.cs
│   │   ├── TestClusterHostFactory.cs
│   │   ├── TestClusterOptions.cs
│   │   ├── TestClusterPortAllocator.cs
│   │   ├── TestStorageProviders/
│   │   │   ├── FaultInjectionStorageProvider.cs
│   │   │   ├── FaultInjectionStorageServiceCollectionExtensions.cs
│   │   │   ├── FaultyMemoryStorage.cs
│   │   │   ├── IStorageFaultGrain.cs
│   │   │   ├── RandomlyInjectedStorageException.cs
│   │   │   └── StorageFaultGrain.cs
│   │   ├── UnixSocketTransport/
│   │   │   ├── UnixSocketConnectionExtensions.cs
│   │   │   ├── UnixSocketConnectionFactory.cs
│   │   │   ├── UnixSocketConnectionListener.cs
│   │   │   ├── UnixSocketConnectionListenerFactory.cs
│   │   │   └── UnixSocketConnectionOptions.cs
│   │   └── Utils/
│   │       ├── AsyncResultHandle.cs
│   │       ├── StorageEmulator.cs
│   │       └── TestingUtils.cs
│   ├── Orleans.Transactions/
│   │   ├── Abstractions/
│   │   │   ├── Extensions/
│   │   │   │   └── TransactionalStateExtensions.cs
│   │   │   ├── INamedTransactionalStateStorageFactory.cs
│   │   │   ├── ITransactionAgentStatistics.cs
│   │   │   ├── ITransactionCommitter.cs
│   │   │   ├── ITransactionCommitterConfiguration.cs
│   │   │   ├── ITransactionCommitterFactory.cs
│   │   │   ├── ITransactionDataCopier.cs
│   │   │   ├── ITransactionManager.cs
│   │   │   ├── ITransactionManagerExtension.cs
│   │   │   ├── ITransactionalResource.cs
│   │   │   ├── ITransactionalResourceExtension.cs
│   │   │   ├── ITransactionalState.cs
│   │   │   ├── ITransactionalStateConfiguration.cs
│   │   │   ├── ITransactionalStateFactory.cs
│   │   │   ├── ITransactionalStateStorage.cs
│   │   │   ├── ITransactionalStateStorageFactory.cs
│   │   │   ├── TransactionCommitterAttribute.cs
│   │   │   └── TransactionalStateAttribute.cs
│   │   ├── DisabledTransactionAgent.cs
│   │   ├── DistributedTM/
│   │   │   ├── ContextResourceFactoryExtensions.cs
│   │   │   ├── ParticipantId.cs
│   │   │   ├── TransactionAgent.cs
│   │   │   ├── TransactionAgentStatistics.cs
│   │   │   ├── TransactionClient.cs
│   │   │   ├── TransactionInfo.cs
│   │   │   ├── TransactionManagerExtension.cs
│   │   │   ├── TransactionOverloadDetector.cs
│   │   │   ├── TransactionRecord.cs
│   │   │   └── TransactionalResourceExtension.cs
│   │   ├── ErrorCodes.cs
│   │   ├── Hosting/
│   │   │   ├── ClientBuilderExtensions.cs
│   │   │   ├── DefaultTransactionDataCopier.cs
│   │   │   ├── SiloBuilderExtensions.cs
│   │   │   ├── TransactionCommitterAttributeMapper.cs
│   │   │   ├── TransactionalStateAttributeMapper.cs
│   │   │   └── TransactionsServiceCollectionExtensions.cs
│   │   ├── ITransactionAgent.cs
│   │   ├── ITransactionClient.cs
│   │   ├── Orleans.Transactions.csproj
│   │   ├── OrleansTransactionException.cs
│   │   ├── State/
│   │   │   ├── ActivationLifetime.cs
│   │   │   ├── ConfirmationWorker.cs
│   │   │   ├── IActivationLifetime.cs
│   │   │   ├── NamedTransactionalStateStorageFactory.cs
│   │   │   ├── ReaderWriterLock.cs
│   │   │   ├── StorageBatch.cs
│   │   │   ├── TransactionManager.cs
│   │   │   ├── TransactionQueue.cs
│   │   │   ├── TransactionalResource.cs
│   │   │   ├── TransactionalState.cs
│   │   │   ├── TransactionalStateFactory.cs
│   │   │   ├── TransactionalStateOptions.cs
│   │   │   └── TransactionalStateStorageProviderWrapper.cs
│   │   ├── TOC/
│   │   │   ├── TocTransactionQueue.cs
│   │   │   ├── TransactionCommitter.cs
│   │   │   └── TransactionCommitterFactory.cs
│   │   ├── TransactionAttribute.cs
│   │   ├── TransactionContext.cs
│   │   ├── TransactionalStatus.cs
│   │   └── Utilities/
│   │       ├── CausalClock.cs
│   │       ├── Clock.cs
│   │       ├── CommitQueue.cs
│   │       ├── IClock.cs
│   │       └── PeriodicAction.cs
│   ├── Orleans.Transactions.TestKit.Base/
│   │   ├── Consistency/
│   │   │   ├── ConsistencyTestGrain.cs
│   │   │   ├── ConsistencyTestHarness.cs
│   │   │   ├── ConsistencyTestOptions.cs
│   │   │   ├── IConsistencyTestGrain.cs
│   │   │   └── Observation.cs
│   │   ├── FaultInjection/
│   │   │   ├── ControlledInjection/
│   │   │   │   ├── FaultInjectionAzureTableTransactionStateStorage.cs
│   │   │   │   ├── FaultInjectionTransactionCoordinatorGrain.cs
│   │   │   │   ├── FaultInjectionTransactionReource.cs
│   │   │   │   ├── FaultInjectionTransactionState.cs
│   │   │   │   ├── FaultInjectionTransactionStateAttribute.cs
│   │   │   │   ├── HostingExtensions.cs
│   │   │   │   ├── IControlledFaultInjector.cs
│   │   │   │   ├── SimpleAzureStorageExceptionInjector.cs
│   │   │   │   ├── SingleStateDeactivatingTransactionalGrain.cs
│   │   │   │   └── TransactionFaultInjectionServiceCollectionExtensions.cs
│   │   │   ├── ITransactionFaultInjector.cs
│   │   │   └── RandomInjection/
│   │   │       └── RandomErrorInjector.cs
│   │   ├── Grains/
│   │   │   ├── ITransactionAttributionGrain.cs
│   │   │   ├── ITransactionCommitterTestGrain.cs
│   │   │   ├── ITransactionCoordinatorGrain.cs
│   │   │   ├── ITransactionTestGrain.cs
│   │   │   ├── ITransactionalBitArrayGrain.cs
│   │   │   ├── MultiStateTransactionalBitArrayGrain.cs
│   │   │   ├── MultiStateTransactionalGrain.cs
│   │   │   ├── RemoteCommitService.cs
│   │   │   ├── TransactionAttributionGrain.cs
│   │   │   ├── TransactionCommitterTestGrain.cs
│   │   │   └── TransactionCoordinatorGrain.cs
│   │   ├── ITestState.cs
│   │   ├── Orleans.Transactions.TestKit.Base.csproj
│   │   ├── TestRunners/
│   │   │   ├── ConsistencyTransactionTestRunner.cs
│   │   │   ├── ControlledFaultInjectionTransactionTestRunner.cs
│   │   │   ├── DisabledTransactionsTestRunner.cs
│   │   │   ├── GoldenPathTransactionTestRunner.cs
│   │   │   ├── GrainFaultTransactionTestRunner.cs
│   │   │   ├── ScopedTransactionsTestRunner.cs
│   │   │   ├── SkewedClock.cs
│   │   │   ├── SkewedClockConfigurator.cs
│   │   │   ├── TOCGoldenPathTestRunner.cs
│   │   │   ├── TocFaultTransactionTestRunner.cs
│   │   │   ├── TransactionConcurrencyTestRunner.cs
│   │   │   ├── TransactionRecoveryTestsRunner.cs
│   │   │   └── TransactionalStateStorageTestRunner.cs
│   │   ├── TransactionTestConstants.cs
│   │   └── TransactionTestRunnerBase.cs
│   ├── Orleans.Transactions.TestKit.xUnit/
│   │   ├── ConsistencyTransactionTestRunner.cs
│   │   ├── ControlledFaultInjectionTransactionTestRunner.cs
│   │   ├── DisabledTransactionsTestRunner.cs
│   │   ├── GoldenPathTransactionTestRunner.cs
│   │   ├── GrainFaultTransactionTestRunner.cs
│   │   ├── Orleans.Transactions.TestKit.xUnit.csproj
│   │   ├── ScopedTransactionsTestRunnerxUnit.cs
│   │   ├── TOCGoldenPathTestRunner.cs
│   │   ├── TocFaultTransactionTestRunner.cs
│   │   ├── TransactionConcurrencyTestRunner.cs
│   │   ├── TransactionRecoveryTestsRunner.cs
│   │   └── TransactionalStateStorageTestRunner.cs
│   ├── Redis/
│   │   ├── Orleans.Clustering.Redis/
│   │   │   ├── Hosting/
│   │   │   │   ├── HostingExtensions.ICientBuilder.cs
│   │   │   │   ├── HostingExtensions.ISiloBuilder.cs
│   │   │   │   └── RedisClusteringProviderBuilder.cs
│   │   │   ├── Orleans.Clustering.Redis.csproj
│   │   │   ├── Providers/
│   │   │   │   ├── RedisClusteringOptions.cs
│   │   │   │   └── RedisGatewayListProvider.cs
│   │   │   ├── README.md
│   │   │   └── Storage/
│   │   │       ├── JsonSettings.cs
│   │   │       ├── RedisClusteringException.cs
│   │   │       └── RedisMembershipTable.cs
│   │   ├── Orleans.GrainDirectory.Redis/
│   │   │   ├── Hosting/
│   │   │   │   ├── RedisGrainDirectoryExtensions.cs
│   │   │   │   └── RedisGrainDirectoryProviderBuilder.cs
│   │   │   ├── Options/
│   │   │   │   └── RedisGrainDirectoryOptions.cs
│   │   │   ├── Orleans.GrainDirectory.Redis.csproj
│   │   │   ├── README.md
│   │   │   └── RedisGrainDirectory.cs
│   │   ├── Orleans.Persistence.Redis/
│   │   │   ├── Hosting/
│   │   │   │   ├── RedisGrainStorageProviderBuilder.cs
│   │   │   │   ├── RedisGrainStorageServiceCollectionExtensions.cs
│   │   │   │   └── RedisSiloBuilderExtensions.cs
│   │   │   ├── Orleans.Persistence.Redis.csproj
│   │   │   ├── Providers/
│   │   │   │   ├── RedisStorageOptions.cs
│   │   │   │   └── RedisStorageOptionsValidator.cs
│   │   │   ├── README.md
│   │   │   └── Storage/
│   │   │       ├── RedisGrainStorage.cs
│   │   │       ├── RedisGrainStorageFactory.cs
│   │   │       └── RedisStorageException.cs
│   │   └── Orleans.Reminders.Redis/
│   │       ├── Hosting/
│   │       │   ├── RedisRemindersProviderBuilder.cs
│   │       │   └── SiloBuilderReminderExtensions.cs
│   │       ├── Orleans.Reminders.Redis.csproj
│   │       ├── Providers/
│   │       │   └── RedisReminderTableOptions.cs
│   │       ├── README.md
│   │       └── Storage/
│   │           ├── RedisReminderTable.cs
│   │           └── RedisRemindersException.cs
│   ├── Serializers/
│   │   └── Orleans.Serialization.Protobuf/
│   │       ├── ByteStringCodec.cs
│   │       ├── ByteStringCopier.cs
│   │       ├── MapFieldCodec.cs
│   │       ├── MapFieldCopier.cs
│   │       ├── Orleans.Serialization.Protobuf.csproj
│   │       ├── ProtobufCodec.cs
│   │       ├── README.md
│   │       ├── RepeatedFieldCodec.cs
│   │       ├── RepeatedFieldCopier.cs
│   │       └── SerializationHostingExtensions.cs
│   └── api/
│       ├── AWS/
│       │   ├── Orleans.Clustering.DynamoDB/
│       │   │   └── Orleans.Clustering.DynamoDB.cs
│       │   ├── Orleans.Persistence.DynamoDB/
│       │   │   └── Orleans.Persistence.DynamoDB.cs
│       │   ├── Orleans.Reminders.DynamoDB/
│       │   │   └── Orleans.Reminders.DynamoDB.cs
│       │   └── Orleans.Streaming.SQS/
│       │       └── Orleans.Streaming.SQS.cs
│       ├── AdoNet/
│       │   ├── Orleans.Clustering.AdoNet/
│       │   │   └── Orleans.Clustering.AdoNet.cs
│       │   ├── Orleans.GrainDirectory.AdoNet/
│       │   │   └── Orleans.GrainDirectory.AdoNet.cs
│       │   ├── Orleans.Persistence.AdoNet/
│       │   │   └── Orleans.Persistence.AdoNet.cs
│       │   ├── Orleans.Reminders.AdoNet/
│       │   │   └── Orleans.Reminders.AdoNet.cs
│       │   └── Orleans.Streaming.AdoNet/
│       │       └── Orleans.Streaming.AdoNet.cs
│       ├── Azure/
│       │   ├── Orleans.Clustering.AzureStorage/
│       │   │   └── Orleans.Clustering.AzureStorage.cs
│       │   ├── Orleans.Clustering.Cosmos/
│       │   │   └── Orleans.Clustering.Cosmos.cs
│       │   ├── Orleans.GrainDirectory.AzureStorage/
│       │   │   └── Orleans.GrainDirectory.AzureStorage.cs
│       │   ├── Orleans.Journaling.AzureStorage/
│       │   │   └── Orleans.Journaling.AzureStorage.cs
│       │   ├── Orleans.Persistence.AzureStorage/
│       │   │   └── Orleans.Persistence.AzureStorage.cs
│       │   ├── Orleans.Persistence.Cosmos/
│       │   │   └── Orleans.Persistence.Cosmos.cs
│       │   ├── Orleans.Reminders.AzureStorage/
│       │   │   └── Orleans.Reminders.AzureStorage.cs
│       │   ├── Orleans.Reminders.Cosmos/
│       │   │   └── Orleans.Reminders.Cosmos.cs
│       │   ├── Orleans.Streaming.AzureStorage/
│       │   │   └── Orleans.Streaming.AzureStorage.cs
│       │   ├── Orleans.Streaming.EventHubs/
│       │   │   └── Orleans.Streaming.EventHubs.cs
│       │   └── Orleans.Transactions.AzureStorage/
│       │       └── Orleans.Transactions.AzureStorage.cs
│       ├── Cassandra/
│       │   └── Orleans.Clustering.Cassandra/
│       │       └── Orleans.Clustering.Cassandra.cs
│       ├── Orleans.BroadcastChannel/
│       │   └── Orleans.BroadcastChannel.cs
│       ├── Orleans.Client/
│       │   └── Orleans.Client.cs
│       ├── Orleans.Clustering.Consul/
│       │   └── Orleans.Clustering.Consul.cs
│       ├── Orleans.Clustering.ZooKeeper/
│       │   └── Orleans.Clustering.ZooKeeper.cs
│       ├── Orleans.Connections.Security/
│       │   └── Orleans.Connections.Security.cs
│       ├── Orleans.Core/
│       │   └── Orleans.Core.cs
│       ├── Orleans.Core.Abstractions/
│       │   └── Orleans.Core.Abstractions.cs
│       ├── Orleans.EventSourcing/
│       │   └── Orleans.EventSourcing.cs
│       ├── Orleans.Hosting.Kubernetes/
│       │   └── Orleans.Hosting.Kubernetes.cs
│       ├── Orleans.Journaling/
│       │   └── Orleans.Journaling.cs
│       ├── Orleans.Persistence.Memory/
│       │   └── Orleans.Persistence.Memory.cs
│       ├── Orleans.Reminders/
│       │   └── Orleans.Reminders.cs
│       ├── Orleans.Reminders.Abstractions/
│       │   └── Orleans.Reminders.Abstractions.cs
│       ├── Orleans.Runtime/
│       │   └── Orleans.Runtime.cs
│       ├── Orleans.Sdk/
│       │   └── Orleans.Sdk.cs
│       ├── Orleans.Serialization/
│       │   └── Orleans.Serialization.cs
│       ├── Orleans.Serialization.Abstractions/
│       │   └── Orleans.Serialization.Abstractions.cs
│       ├── Orleans.Serialization.FSharp/
│       │   └── Orleans.Serialization.FSharp.cs
│       ├── Orleans.Serialization.MemoryPack/
│       │   └── Orleans.Serialization.MemoryPack.cs
│       ├── Orleans.Serialization.MessagePack/
│       │   └── Orleans.Serialization.MessagePack.cs
│       ├── Orleans.Serialization.NewtonsoftJson/
│       │   └── Orleans.Serialization.NewtonsoftJson.cs
│       ├── Orleans.Serialization.SystemTextJson/
│       │   └── Orleans.Serialization.SystemTextJson.cs
│       ├── Orleans.Serialization.TestKit/
│       │   └── Orleans.Serialization.TestKit.cs
│       ├── Orleans.Server/
│       │   └── Orleans.Server.cs
│       ├── Orleans.Streaming/
│       │   └── Orleans.Streaming.cs
│       ├── Orleans.Streaming.Abstractions/
│       │   └── Orleans.Streaming.Abstractions.cs
│       ├── Orleans.TestingHost/
│       │   └── Orleans.TestingHost.cs
│       ├── Orleans.Transactions/
│       │   └── Orleans.Transactions.cs
│       ├── Orleans.Transactions.TestKit.Base/
│       │   └── Orleans.Transactions.TestKit.Base.cs
│       ├── Orleans.Transactions.TestKit.xUnit/
│       │   └── Orleans.Transactions.TestKit.xUnit.cs
│       ├── README.md
│       ├── Redis/
│       │   ├── Orleans.Clustering.Redis/
│       │   │   └── Orleans.Clustering.Redis.cs
│       │   ├── Orleans.GrainDirectory.Redis/
│       │   │   └── Orleans.GrainDirectory.Redis.cs
│       │   ├── Orleans.Persistence.Redis/
│       │   │   └── Orleans.Persistence.Redis.cs
│       │   └── Orleans.Reminders.Redis/
│       │       └── Orleans.Reminders.Redis.cs
│       └── Serializers/
│           └── Orleans.Serialization.Protobuf/
│               └── Orleans.Serialization.Protobuf.cs
└── test/
    ├── Benchmarks/
    │   ├── App.config
    │   ├── Benchmarks.csproj
    │   ├── Dashboard/
    │   │   ├── DashboardGrainBenchmark.cs
    │   │   ├── Helper.cs
    │   │   ├── ManualTests.cs
    │   │   └── TestTraces.cs
    │   ├── GrainStorage/
    │   │   └── GrainStorageBenchmark.cs
    │   ├── MapReduce/
    │   │   ├── MapReduceBenchmark.cs
    │   │   └── MapReduceBenchmarkConfig.cs
    │   ├── Ping/
    │   │   ├── ConcurrentLoadGenerator.cs
    │   │   ├── FanoutBenchmark.cs
    │   │   ├── PingBenchmark.cs
    │   │   └── StatelessWorkerBenchmark.cs
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── launchSettings.json
    │   ├── Serialization/
    │   │   ├── Comparison/
    │   │   │   ├── ArrayDeserializeBenchmark.cs
    │   │   │   ├── ArraySerializeBenchmark.cs
    │   │   │   ├── ClassDeserializeBenchmark.cs
    │   │   │   ├── ClassSerializeBenchmark.cs
    │   │   │   ├── CopierBenchmark.cs
    │   │   │   ├── StructDeserializeBenchmark.cs
    │   │   │   └── StructSerializeBenchmark.cs
    │   │   ├── ComplexTypeBenchmarks.cs
    │   │   ├── FieldHeaderBenchmarks.cs
    │   │   ├── MegaGraphBenchmark.cs
    │   │   ├── Models/
    │   │   │   ├── ComplexClass.cs
    │   │   │   ├── IntClass.cs
    │   │   │   ├── IntStruct.cs
    │   │   │   ├── ProtoIntClass.cs
    │   │   │   ├── ProtoIntClass.proto
    │   │   │   ├── SimpleClass.cs
    │   │   │   ├── SimpleStruct.cs
    │   │   │   ├── Vector3.cs
    │   │   │   └── VirtualIntsClass.cs
    │   │   └── Utilities/
    │   │       ├── BenchmarkConfig.cs
    │   │       ├── ClassSingleSegmentBuffer.cs
    │   │       ├── MethodResultColumn.cs
    │   │       ├── PayloadSizeColumnAttribute.cs
    │   │       └── SingleSegmentBuffer.cs
    │   ├── TopK/
    │   │   ├── BloomFilterBenchmark.cs
    │   │   └── TopKBenchmark.cs
    │   ├── Transactions/
    │   │   └── TransactionBenchmark.cs
    │   └── run_test.cmd
    ├── Benchmarks.AdoNet/
    │   ├── Benchmarks.AdoNet.csproj
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── Usings.cs
    │   └── Streaming/
    │       ├── MessageDequeueingBenchmark.cs
    │       └── MessageQueueingBenchmark.cs
    ├── Directory.Build.props
    ├── Directory.Build.targets
    ├── DistributedTests/
    │   ├── DistributedTests.Client/
    │   │   ├── Commands/
    │   │   │   ├── ChaosAgentCommand.cs
    │   │   │   ├── CounterCaptureCommand.cs
    │   │   │   └── ScenarioCommand.cs
    │   │   ├── DistributedTests.Client.csproj
    │   │   ├── LoadGeneratorScenario/
    │   │   │   ├── ConcurrentLoadGenerator.cs
    │   │   │   ├── LoadGeneratorScenarioRunner.cs
    │   │   │   └── LoadGeneratorScenarios.cs
    │   │   └── Program.cs
    │   ├── DistributedTests.Common/
    │   │   ├── DistributedTests.Common.csproj
    │   │   ├── GrainInterfaces/
    │   │   │   ├── IPingGrain.cs
    │   │   │   ├── IStreamingGrains.cs
    │   │   │   └── ITreeGrain.cs
    │   │   ├── MessageChannel/
    │   │   │   ├── Channels.cs
    │   │   │   └── Messages.cs
    │   │   ├── OptionHelper.cs
    │   │   └── TokenCredentialHelper.cs
    │   ├── DistributedTests.Grains/
    │   │   ├── CounterReportingGrain.cs
    │   │   ├── DistributedTests.Grains.csproj
    │   │   ├── ImplicitSubscriberGrain.cs
    │   │   ├── PingGrain.cs
    │   │   └── TreeGrain.cs
    │   ├── DistributedTests.Server/
    │   │   ├── Configurator/
    │   │   │   ├── EventGeneratorStreamingSilo.cs
    │   │   │   ├── ISiloConfigurator.cs
    │   │   │   └── SimpleSilo.cs
    │   │   ├── DistributedTests.Server.csproj
    │   │   ├── Program.cs
    │   │   ├── ServerCommand.cs
    │   │   └── ServerRunner.cs
    │   ├── README.md
    │   └── secrets.json
    ├── Extensions/
    │   ├── Orleans.AWS.Tests/
    │   │   ├── App.config
    │   │   ├── CollectionFixtures.cs
    │   │   ├── LivenessTests.cs
    │   │   ├── MembershipTests/
    │   │   │   ├── DynamoDBMembershipTableTest.cs
    │   │   │   └── SiloInstanceRecordTests.cs
    │   │   ├── Orleans.AWS.Tests.csproj
    │   │   ├── Properties/
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── Reminder/
    │   │   │   └── DynamoDBRemindersTableTests.cs
    │   │   ├── StorageTests/
    │   │   │   ├── AWSTestConstants.cs
    │   │   │   ├── DynamoDBStorageProviderTests.cs
    │   │   │   ├── DynamoDBStorageStressTests.cs
    │   │   │   ├── DynamoDBStorageTestFixture.cs
    │   │   │   ├── DynamoDBStorageTests.cs
    │   │   │   ├── PersistenceGrainTests_AWSDynamoDBStore.cs
    │   │   │   └── UnitTestDynamoDBStorage.cs
    │   │   └── Streaming/
    │   │       ├── SQSAdapterTests.cs
    │   │       ├── SQSClientStreamTests.cs
    │   │       ├── SQSStreamTests.cs
    │   │       └── SQSSubscriptionMultiplicityTests.cs
    │   ├── Orleans.AdoNet.Tests/
    │   │   ├── App.config
    │   │   ├── CollectionFixtures.cs
    │   │   ├── Fakes/
    │   │   │   └── FakeHostApplicationLifetime.cs
    │   │   ├── GrainDirectory/
    │   │   │   ├── AdoNetGrainDirectoryClusterTests.cs
    │   │   │   ├── AdoNetGrainDirectoryTests.cs
    │   │   │   └── RelationalOrleansQueriesTests.cs
    │   │   ├── LivenessTests.cs
    │   │   ├── MySqlMembershipTableTests.cs
    │   │   ├── Orleans.AdoNet.Tests.csproj
    │   │   ├── PackageReferences.cs
    │   │   ├── Persistence/
    │   │   │   ├── PersistenceGrainTests_MySql.cs
    │   │   │   ├── PersistenceGrainTests_MySql_DeleteStateOnClear.cs
    │   │   │   ├── PersistenceGrainTests_Postgres.cs
    │   │   │   ├── PersistenceGrainTests_Postgres_DeleteStateOnClear.cs
    │   │   │   ├── PersistenceGrainTests_SqlServer.cs
    │   │   │   ├── PersistenceGrainTests_SqlServer_DeleteStateOnClear.cs
    │   │   │   ├── SqlitePersistenceGrainStorageFixture.cs
    │   │   │   └── SqlitePersistenceGrainStorageTests.cs
    │   │   ├── PostgreSqlMembershipTableTests.cs
    │   │   ├── Properties/
    │   │   │   ├── AssemblyInfo.cs
    │   │   │   ├── GlobalSuppressions.cs
    │   │   │   ├── IsExternalInit.cs
    │   │   │   └── Usings.cs
    │   │   ├── RelationalUtilities/
    │   │   │   ├── MySqlStorageForTesting.cs
    │   │   │   ├── PostgreSqlStorageForTesting.cs
    │   │   │   ├── RelationalStorageForTesting.cs
    │   │   │   └── SqlServerStorageForTesting.cs
    │   │   ├── Reminders/
    │   │   │   ├── MySqlRemindersTableTests.cs
    │   │   │   ├── PostgreSqlRemindersTableTests.cs
    │   │   │   ├── ReminderTests_AdoNet_SqlServer.cs
    │   │   │   └── SqlServerRemindersTableTests.cs
    │   │   ├── SqlServerMembershipTableTests.cs
    │   │   ├── StorageTests/
    │   │   │   ├── MySqlRelationalStoreTests.cs
    │   │   │   ├── PostgreSqlRelationalStoreTests.cs
    │   │   │   ├── Relational/
    │   │   │   │   ├── AdotNetProviderFunctionalityTests.cs
    │   │   │   │   ├── CommonFixture.cs
    │   │   │   │   ├── ConstantHasher.cs
    │   │   │   │   ├── MySqlStorageDeleteOnClearTests.cs
    │   │   │   │   ├── MySqlStorageTests.cs
    │   │   │   │   ├── PostgreSqlStorageDeleteOnClearTests.cs
    │   │   │   │   ├── PostgreSqlStorageTests.cs
    │   │   │   │   ├── RelationalStorageTests.cs
    │   │   │   │   ├── SqlServerStorageDeleteOnClearTests.cs
    │   │   │   │   ├── SqlServerStorageTests.cs
    │   │   │   │   └── TestEnvironmentInvariant.cs
    │   │   │   ├── RelationalStoreTests.cs
    │   │   │   └── SqlServerRelationalStoreTests.cs
    │   │   └── Streaming/
    │   │       ├── AdoNetBatchContainerTests.cs
    │   │       ├── AdoNetClientStreamTests.cs
    │   │       ├── AdoNetQueueAdapterFactoryTests.cs
    │   │       ├── AdoNetQueueAdapterReceiverTests.cs
    │   │       ├── AdoNetQueueAdapterTests.cs
    │   │       ├── AdoNetStreamFailureHandlerTests.cs
    │   │       ├── AdoNetStreamFilteringTests.cs
    │   │       ├── AdoNetStreamingTests.cs
    │   │       ├── AdoNetStreamsBatchingTests.cs
    │   │       ├── AdoNetSubscriptionMultiplicityTests.cs
    │   │       ├── AdoNetSubscriptionObserverWithImplicitSubscribingTests.cs
    │   │       └── RelationalOrleansQueriesTests.cs
    │   ├── Orleans.Azure.Tests/
    │   │   ├── App.config
    │   │   ├── AzureGrainDirectoryTests.cs
    │   │   ├── AzureLivenessTests.cs
    │   │   ├── AzureMembershipTableTests.cs
    │   │   ├── AzureQueueDataManagerTests.cs
    │   │   ├── AzureRemindersTableTests.cs
    │   │   ├── AzureStorageBasicTests.cs
    │   │   ├── AzureStorageOperationOptionsExtensions.cs
    │   │   ├── AzureTableDataManagerStressTests.cs
    │   │   ├── AzureTableDataManagerTests.cs
    │   │   ├── AzureTableErrorCodeTests.cs
    │   │   ├── CollectionFixtures.cs
    │   │   ├── DurableJobs/
    │   │   │   ├── AzureStorageBlobDurableJobsTests.cs
    │   │   │   ├── AzureStorageJobShardBatchingTests.cs
    │   │   │   ├── AzureStorageJobShardManagerTestFixture.cs
    │   │   │   ├── AzureStorageJobShardManagerTests.cs
    │   │   │   └── NetstringJsonSerializerTests.cs
    │   │   ├── GenericGrainsInAzureStorageTests.cs
    │   │   ├── GrainDirectory/
    │   │   │   └── AzureMultipleGrainDirectoriesTests.cs
    │   │   ├── Lease/
    │   │   │   ├── AzureBlobLeaseProviderTests.cs
    │   │   │   └── LeaseBasedQueueBalancerTests.cs
    │   │   ├── Orleans.Azure.Tests.csproj
    │   │   ├── Persistence/
    │   │   │   ├── PersistenceGrainTests_AzureBlobStore.cs
    │   │   │   ├── PersistenceGrainTests_AzureBlobStore_Json.cs
    │   │   │   ├── PersistenceGrainTests_AzureStore.cs
    │   │   │   ├── PersistenceGrainTests_AzureTableGrainStorage.cs
    │   │   │   ├── PersistenceProviderTests.cs
    │   │   │   ├── PersistenceStateTests_AzureBlobStore.cs
    │   │   │   └── PersistenceStateTests_AzureTableGrainStorage.cs
    │   │   ├── Program.cs
    │   │   ├── Properties/
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── Reminder/
    │   │   │   ├── ReminderTests_AzureTable.cs
    │   │   │   └── ReminderTests_Azure_Standalone.cs
    │   │   ├── SiloInstanceTableManagerTests.cs
    │   │   ├── StorageEmulatorUtilities.cs
    │   │   ├── Streaming/
    │   │   │   ├── AQClientStreamTests.cs
    │   │   │   ├── AQProgrammaticSubscribeTest.cs
    │   │   │   ├── AQStreamFilteringTests.cs
    │   │   │   ├── AQStreamingTests.cs
    │   │   │   ├── AQStreamsBatchingTests.cs
    │   │   │   ├── AQSubscriptionMultiplicityTests.cs
    │   │   │   ├── AQSubscriptionObserverWithImplicitSubscribingTests.cs
    │   │   │   ├── AzureQueueAdapterTests.cs
    │   │   │   ├── AzureQueueStreamProviderBuilderTests.cs
    │   │   │   ├── DelayedQueueRebalancingTests.cs
    │   │   │   ├── HaloStreamSubscribeTests.cs
    │   │   │   ├── PullingAgentManagementTests.cs
    │   │   │   ├── SampleAzureQueueStreamingTests.cs
    │   │   │   ├── StreamReliabilityTests.cs
    │   │   │   └── TestAzureTableStorageStreamFailureHandler.cs
    │   │   ├── UnitTestAzureTableDataManager.cs
    │   │   └── Utilities/
    │   │       └── AzureQueueUtilities.cs
    │   ├── Orleans.Clustering.Cassandra.Tests/
    │   │   ├── Clustering/
    │   │   │   ├── CassandraClusteringTableTests.cs
    │   │   │   ├── CassandraContainer.cs
    │   │   │   └── SiloAddressUtils.cs
    │   │   ├── Orleans.Clustering.Cassandra.Tests.csproj
    │   │   └── Utility/
    │   │       └── TestExtensions.cs
    │   ├── Orleans.Clustering.Consul.Tests/
    │   │   ├── CollectionFixtures.cs
    │   │   ├── ConsulClusteringOptionsTests.cs
    │   │   ├── ConsulMembershipTableTest.cs
    │   │   ├── ConsulTestUtils.cs
    │   │   ├── LivenessTests.cs
    │   │   ├── Orleans.Clustering.Consul.Tests.csproj
    │   │   └── Properties/
    │   │       └── AssemblyInfo.cs
    │   ├── Orleans.Clustering.ZooKeeper.Tests/
    │   │   ├── App.config
    │   │   ├── CollectionFixtures.cs
    │   │   ├── LivenessTests.cs
    │   │   ├── Orleans.Clustering.ZooKeeper.Tests.csproj
    │   │   ├── Properties/
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── ZookeeperMembershipTableTests.cs
    │   │   └── ZookeeperTestUtils.cs
    │   ├── Orleans.Cosmos.Tests/
    │   │   ├── CollectionFixtures.cs
    │   │   ├── CosmosMembershipTableTests.cs
    │   │   ├── CosmosOptionsExtensions.cs
    │   │   ├── CosmosTestUtils.cs
    │   │   ├── Orleans.Cosmos.Tests.csproj
    │   │   ├── PersistenceGrainTests_CosmosGrainStorage.cs
    │   │   ├── PersistenceProviderTests_Cosmos.cs
    │   │   ├── ReminderTests_Cosmos.cs
    │   │   ├── ReminderTests_Cosmos_Standalone.cs
    │   │   └── Usings.cs
    │   ├── Orleans.Redis.Tests/
    │   │   ├── Clustering/
    │   │   │   └── RedisMembershipTableTests.cs
    │   │   ├── CollectionFixtures.cs
    │   │   ├── GrainDirectory/
    │   │   │   ├── RedisGrainDirectoryTests.cs
    │   │   │   └── RedisMultipleGrainDirectoriesTests.cs
    │   │   ├── Orleans.Redis.Tests.csproj
    │   │   ├── Persistence/
    │   │   │   ├── GrainState.cs
    │   │   │   ├── RedisPersistenceGrainTests.cs
    │   │   │   ├── RedisPersistenceSetupTests.cs
    │   │   │   ├── RedisStorageTests.cs
    │   │   │   ├── RedisStorageTests_DeleteStateOnClear.cs
    │   │   │   └── RedisStorageTests_OrleansSerializer.cs
    │   │   ├── Reminders/
    │   │   │   └── RedisReminderTableTests.cs
    │   │   └── Utility/
    │   │       ├── CommonFixture.cs
    │   │       └── TestExtensions.cs
    │   ├── Orleans.Streaming.EventHubs.Tests/
    │   │   ├── App.config
    │   │   ├── CollectionFixtures.cs
    │   │   ├── EventHubConfigurationExtensions.cs
    │   │   ├── EvictionStrategyTests/
    │   │   │   ├── EHPurgeLogicTests.cs
    │   │   │   └── TestMocks.cs
    │   │   ├── Orleans.Streaming.EventHubs.Tests.csproj
    │   │   ├── PluggableQueueBalancerTests.cs
    │   │   ├── Properties/
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── SlowConsumingTests/
    │   │   │   └── EHSlowConsumingTests.cs
    │   │   ├── StatisticMonitorTests/
    │   │   │   ├── BlockPoolMonitorForTesting.cs
    │   │   │   ├── CacheMonitorForTesting.cs
    │   │   │   ├── EHStatisticMonitorTests.cs
    │   │   │   └── EventHubReceiverMonitorForTesting.cs
    │   │   ├── Streaming/
    │   │   │   ├── EHBatchedSubscriptionMultiplicityTests.cs
    │   │   │   ├── EHClientStreamTests.cs
    │   │   │   ├── EHImplicitSubscriptionStreamRecoveryTests.cs
    │   │   │   ├── EHProgrammaticSubscribeTests.cs
    │   │   │   ├── EHStreamBatchingTests.cs
    │   │   │   ├── EHStreamCacheMissTests.cs
    │   │   │   ├── EHStreamPerPartitionTests.cs
    │   │   │   ├── EHStreamProviderCheckpointTests.cs
    │   │   │   ├── EHStreamingResumeTests.cs
    │   │   │   ├── EHSubscriptionMultiplicityTests.cs
    │   │   │   ├── EHSubscriptionObserverWithImplicitSubscribingTests.cs
    │   │   │   └── TimePurgePredicateTests.cs
    │   │   └── TestStreamProviders/
    │   │       ├── EHStreamProviderForMonitorTests.cs
    │   │       ├── EHStreamProviderWithCreatedCacheList.cs
    │   │       ├── StreamPerPartitionEventHubStreamProvider.cs
    │   │       ├── TestAzureTableStorageStreamFailureHandler.cs
    │   │       └── TestEventHubStreamProvider.cs
    │   └── Orleans.Streaming.NATS.Tests/
    │       ├── NatsAdapterTests.cs
    │       ├── NatsClientStreamTests.cs
    │       ├── NatsStreamTests.cs
    │       ├── NatsSubscriptionMultiplicityTests.cs
    │       ├── NatsTestConstants.cs
    │       └── Orleans.Streaming.NATS.Tests.csproj
    ├── Grains/
    │   ├── BenchmarkGrainInterfaces/
    │   │   ├── BenchmarkGrainInterfaces.csproj
    │   │   ├── GrainStorage/
    │   │   │   └── IPersistentGrain.cs
    │   │   ├── MapReduce/
    │   │   │   ├── DataflowGrainsInterfaces.cs
    │   │   │   └── GrainDataflowMessageStatus.cs
    │   │   ├── Ping/
    │   │   │   ├── ILoadGrain.cs
    │   │   │   ├── IPingGrain.cs
    │   │   │   ├── ITreeGrain.cs
    │   │   │   └── MyType.cs
    │   │   └── Transaction/
    │   │       ├── ILoadGrain.cs
    │   │       ├── ITransactionGrain.cs
    │   │       └── ITransactionRootGrain.cs
    │   ├── BenchmarkGrains/
    │   │   ├── BenchmarkGrains.csproj
    │   │   ├── GrainStorage/
    │   │   │   └── PersistentGrain.cs
    │   │   ├── MapReduce/
    │   │   │   ├── BufferGrain.cs
    │   │   │   ├── DataflowGrain.cs
    │   │   │   ├── Processors.cs
    │   │   │   ├── TargetGrain.cs
    │   │   │   └── TransformGrain.cs
    │   │   ├── Ping/
    │   │   │   ├── LoadGrain.cs
    │   │   │   ├── PingGrain.cs
    │   │   │   └── TreeGrain.cs
    │   │   └── Transaction/
    │   │       ├── LoadGrain.cs
    │   │       ├── TransactionGrain.cs
    │   │       └── TransactionRootGrain.cs
    │   ├── TestFSharp/
    │   │   ├── Grains.fs
    │   │   ├── TestFSharp.fsproj
    │   │   └── Types.fs
    │   ├── TestFSharpGrainInterfaces/
    │   │   ├── FSharpInterfaces/
    │   │   │   ├── IFSharpBaseInterface.fs
    │   │   │   ├── IFSharpParameters.fs
    │   │   │   └── TestFSharpInterfaces.fsproj
    │   │   ├── IFSharpParametersGrain.cs
    │   │   ├── IGeneratorTestDerivedFromFSharpInterfaceInExternalAssemblyGrain.cs
    │   │   └── TestFSharpGrainInterfaces.csproj
    │   ├── TestGrainInterfaces/
    │   │   ├── AdoNet/
    │   │   │   ├── ICustomerGrain.cs
    │   │   │   └── IDeviceGrain.cs
    │   │   ├── ClassNotReferencingOrleansTypeDto.cs
    │   │   ├── ClassReferencingOrleansTypeDto.cs
    │   │   ├── CodegenTestInterfaces.cs
    │   │   ├── CustomPlacement.cs
    │   │   ├── Directories/
    │   │   │   ├── ICommonDirectoryGrain.cs
    │   │   │   ├── ICustomDirectoryGrain.cs
    │   │   │   └── IDefaultDirectoryGrain.cs
    │   │   ├── EventSourcing/
    │   │   │   ├── IAccountGrain.cs
    │   │   │   ├── IChatGrain.cs
    │   │   │   ├── ICountersGrain.cs
    │   │   │   ├── IPersonGrain.cs
    │   │   │   ├── ISeatReservationGrain.cs
    │   │   │   └── XDocumentSurrogate.cs
    │   │   ├── GetGrainInterfaces.cs
    │   │   ├── GrainInterfaceHierarchyIGrains.cs
    │   │   ├── IActivateDeactivateTestGrain.cs
    │   │   ├── IActivateDeactivateWatcherGrain.cs
    │   │   ├── IActivationCancellationTestGrain.cs
    │   │   ├── IActivityGrain.cs
    │   │   ├── ICSharpBaseInterface.cs
    │   │   ├── ICancellationTestSystemTarget.cs
    │   │   ├── ICatalogTestGrain.cs
    │   │   ├── IChainedGrain.cs
    │   │   ├── ICircularStateTestGrain.cs
    │   │   ├── IClientAddressableTestConsumer.cs
    │   │   ├── IClusterTestGrains.cs
    │   │   ├── ICollectionTestGrain.cs
    │   │   ├── IConcurrentGrain.cs
    │   │   ├── IConsumerEventCountingGrain.cs
    │   │   ├── IDeadlockGrain.cs
    │   │   ├── IDurableJobGrain.cs
    │   │   ├── IEchoTaskGrain.cs
    │   │   ├── IErrorGrain.cs
    │   │   ├── IExceptionGrain.cs
    │   │   ├── IExtensionTestGrain.cs
    │   │   ├── IExternalTypeGrain.cs
    │   │   ├── IFaultableConsumerGrain.cs
    │   │   ├── IFilteredImplicitSubscriptionGrain.cs
    │   │   ├── IFilteredImplicitSubscriptionWithExtensionGrain.cs
    │   │   ├── IGeneratedEventCollectorGrain.cs
    │   │   ├── IGeneratedEventReporterGrain.cs
    │   │   ├── IGeneratorTestDerivedDerivedGrain.cs
    │   │   ├── IGeneratorTestDerivedFromCSharpInterfaceInExternalAssemblyGrain.cs
    │   │   ├── IGeneratorTestDerivedGrain1.cs
    │   │   ├── IGeneratorTestDerivedGrain2.cs
    │   │   ├── IGeneratorTestGrain.cs
    │   │   ├── IGenericInterfaces.cs
    │   │   ├── IGrainServiceTestGrain.cs
    │   │   ├── IImplicitSubscriptionCounterGrain.cs
    │   │   ├── IImplicitSubscriptionKeyTypeGrain.cs
    │   │   ├── IInitialStateGrain.cs
    │   │   ├── IKeyExtensionTestGrain.cs
    │   │   ├── ILivenessTestGrain.cs
    │   │   ├── ILogTestGrain.cs
    │   │   ├── ILongRunningObserver.cs
    │   │   ├── IMethodInterceptionGrain.cs
    │   │   ├── IMultifacetReader.cs
    │   │   ├── IMultifacetWriter.cs
    │   │   ├── IMultipleImplicitSubscriptionGrain.cs
    │   │   ├── IMultipleSubscriptionConsumerGrain.cs
    │   │   ├── INullStateGrain.cs
    │   │   ├── IObservableGrain.cs
    │   │   ├── IObserverGrain.cs
    │   │   ├── IPersistenceTestGrains.cs
    │   │   ├── IPlacementTestGrain.cs
    │   │   ├── IPolymorphicTestGrain.cs
    │   │   ├── IProducerEventCountingGrain.cs
    │   │   ├── IPromiseForwardGrain.cs
    │   │   ├── IProxyGrain.cs
    │   │   ├── IReentrancyCorrelationIdGrains.cs
    │   │   ├── IReentrancyGrain.cs
    │   │   ├── IReentrantStressTestGrain.cs
    │   │   ├── IReminderTestGrain.cs
    │   │   ├── IReminderTestGrain2.cs
    │   │   ├── IRequestContextTestGrain.cs
    │   │   ├── IRetryTestGrain.cs
    │   │   ├── ISampleStreamingGrain.cs
    │   │   ├── ISchedulerGrain.cs
    │   │   ├── ISiloRoleBasedPlacementGrain.cs
    │   │   ├── ISimpleDIGrain.cs
    │   │   ├── ISimpleGenericGrain.cs
    │   │   ├── ISimpleGrain.cs
    │   │   ├── ISimpleGrainWithAsyncMethods.cs
    │   │   ├── ISimpleObserverableGrain.cs
    │   │   ├── ISimplePersistentGrain.cs
    │   │   ├── IStatelessWorkerExceptionGrain.cs
    │   │   ├── IStatelessWorkerGrain.cs
    │   │   ├── IStatelessWorkerScalingGrain.cs
    │   │   ├── IStatelessWorkerStreamConsumerGrain.cs
    │   │   ├── IStatelessWorkerStreamProducerGrain.cs
    │   │   ├── IStatelessWorkerWithMayInterleaveGrain.cs
    │   │   ├── IStatsCollectorGrain.cs
    │   │   ├── IStreamBatchingTestConsumerGrain.cs
    │   │   ├── IStreamInterceptionGrain.cs
    │   │   ├── IStreamLifecycleTestGrains.cs
    │   │   ├── IStreamLifecycleTestInternalGrains.cs
    │   │   ├── IStreamReliabilityTestGrains.cs
    │   │   ├── IStreamingGrain.cs
    │   │   ├── IStreamingHistoryGrain.cs
    │   │   ├── IStreamingImmutabilityTestGrain.cs
    │   │   ├── IStreaming_ProducerGrain.cs
    │   │   ├── IStuckGrain.cs
    │   │   ├── ITestExtension.cs
    │   │   ├── ITestGrain.cs
    │   │   ├── ITimerGrain.cs
    │   │   ├── IValueTypeTestGrain.cs
    │   │   ├── IsExternalInit.cs
    │   │   ├── ProgramaticStreamSubscribe/
    │   │   │   └── IPassive_ConsumerGrain.cs
    │   │   ├── RecursiveType.cs
    │   │   ├── RedStreamNamespacePredicate.cs
    │   │   ├── SerializerExclusions.cs
    │   │   ├── SerializerTestTypes.cs
    │   │   ├── SlowConsumingGrains/
    │   │   │   └── ISlowConsumingGrain.cs
    │   │   ├── TestGrainInterfaces.csproj
    │   │   ├── TestTypeA.cs
    │   │   ├── UnitTestGrainInterfaces.cs
    │   │   └── VersionAwarePlacementDirector.cs
    │   ├── TestGrains/
    │   │   ├── ActivateDeactivateWatcherGrain.cs
    │   │   ├── ActivationCancellationTestGrains.cs
    │   │   ├── ActivityGrain.cs
    │   │   ├── AdoNet/
    │   │   │   ├── CustomerGrain.cs
    │   │   │   ├── DeviceGrain.cs
    │   │   │   ├── ICustomerState.cs
    │   │   │   └── IDeviceState.cs
    │   │   ├── AsyncSimpleGrain.cs
    │   │   ├── CatalogTestGrain.cs
    │   │   ├── ChainedGrain.cs
    │   │   ├── CircularStateTestGrain.cs
    │   │   ├── ConcreteGrainsWithGenericInterfaces.cs
    │   │   ├── ConcurrentGrain.cs
    │   │   ├── ConsumerEventCountingGrain.cs
    │   │   ├── CustomPlacementGrains.cs
    │   │   ├── DeadlockGrain.cs
    │   │   ├── DerivedServiceType.cs
    │   │   ├── Directories/
    │   │   │   ├── CustomDirectoryGrain.cs
    │   │   │   └── DefaultDirectoryGrain.cs
    │   │   ├── DurableJobGrain.cs
    │   │   ├── EventSourcing/
    │   │   │   ├── AccountGrain.cs
    │   │   │   ├── ChatEvents.cs
    │   │   │   ├── ChatFormat.cs
    │   │   │   ├── ChatGrain.cs
    │   │   │   ├── CountersGrain.cs
    │   │   │   ├── CountersGrainVariations.cs
    │   │   │   ├── PersonEvents.cs
    │   │   │   ├── PersonGrain.cs
    │   │   │   ├── PersonState.cs
    │   │   │   └── SeatReservationGrain.cs
    │   │   ├── ExceptionGrain.cs
    │   │   ├── ExternalTypeGrain.cs
    │   │   ├── FaultableConsumerGrain.cs
    │   │   ├── FilteredImplicitSubscriptionGrain.cs
    │   │   ├── FilteredImplicitSubscriptionWithExtensionGrain.cs
    │   │   ├── GeneratedEventCollectorGrain.cs
    │   │   ├── GeneratedEventReporterGrain.cs
    │   │   ├── GeneratedStreamTestConstants.cs
    │   │   ├── GeneratorTestDerivedDerivedGrain.cs
    │   │   ├── GeneratorTestDerivedFromCSharpInterfaceInExternalAssemblyGrain.cs
    │   │   ├── GeneratorTestDerivedFromFSharpInterfaceInExternalAssemblyGrain.cs
    │   │   ├── GeneratorTestDerivedGrain1.cs
    │   │   ├── GeneratorTestDerivedGrain2.cs
    │   │   ├── GeneratorTestGrain.cs
    │   │   ├── GenericGrains.cs
    │   │   ├── GetGrainGrains.cs
    │   │   ├── GrainInterfaceHierarchyGrains.cs
    │   │   ├── GrainService/
    │   │   │   ├── GrainServiceTestGrain.cs
    │   │   │   └── ITestGrainService.cs
    │   │   ├── ImplicitStreamTestConstants.cs
    │   │   ├── ImplicitSubscriptionCounterGrain.cs
    │   │   ├── ImplicitSubscriptionWithKeyTypeGrain.cs
    │   │   ├── ImplicitSubscription_NonTransientError_RecoverableStream_CollectorGrain.cs
    │   │   ├── ImplicitSubscription_RecoverableStream_CollectorGrain.cs
    │   │   ├── ImplicitSubscription_TransientError_RecoverableStream_CollectorGrain.cs
    │   │   ├── InitialStateGrain.cs
    │   │   ├── KeyExtensionTestGrain.cs
    │   │   ├── LivenessTestGrain.cs
    │   │   ├── LogTestGrain.cs
    │   │   ├── LogTestGrainVariations.cs
    │   │   ├── MessageSerializationGrain.cs
    │   │   ├── MethodInterceptionGrain.cs
    │   │   ├── MultipleConstructorsSimpleGrain.cs
    │   │   ├── MultipleGenericParameterInterfaceImpl.cs
    │   │   ├── MultipleImplicitSubscriptionGrain.cs
    │   │   ├── MultipleSubscriptionConsumerGrain.cs
    │   │   ├── NoOpTestGrain.cs
    │   │   ├── NullStateGrain.cs
    │   │   ├── ObserverGrain.cs
    │   │   ├── ObserverWithCancellationGrain.cs
    │   │   ├── PolymorphicTestGrain.cs
    │   │   ├── ProducerEventCountingGrain.cs
    │   │   ├── ProgrammaticSubscribe/
    │   │   │   ├── Passive_ConsumerGrain.cs
    │   │   │   ├── SubscribeGrain.cs
    │   │   │   └── TypedProducerGrain.cs
    │   │   ├── PromiseForwardGrain.cs
    │   │   ├── ProxyGrain.cs
    │   │   ├── ReentrancyCorrelationIdGrains.cs
    │   │   ├── ReentrantGrain.cs
    │   │   ├── ReminderTestGrain.cs
    │   │   ├── RequestContextTestGrain.cs
    │   │   ├── RetryTestGrain.cs
    │   │   ├── RoundtripSerializationGrain.cs
    │   │   ├── SampleStreamingGrain.cs
    │   │   ├── SchedulerGrain.cs
    │   │   ├── SerializationGenerationGrain.cs
    │   │   ├── ServiceType.cs
    │   │   ├── SiloRoleBasedPlacementGrain.cs
    │   │   ├── SimpleDIGrain.cs
    │   │   ├── SimpleGenericGrain.cs
    │   │   ├── SimpleGrain.cs
    │   │   ├── SimpleObserverableGrain.cs
    │   │   ├── SimplePersistentGrain.cs
    │   │   ├── SimpleStreams/
    │   │   │   └── SimpleSubscriberGrain.cs
    │   │   ├── SlowConsumingGrains/
    │   │   │   └── SlowConsumingGrain.cs
    │   │   ├── SpecializedSimpleGenericGrain.cs
    │   │   ├── StatelessWorkerExceptionGrain.cs
    │   │   ├── StatelessWorkerGrain.cs
    │   │   ├── StatelessWorkerScalingGrain.cs
    │   │   ├── StatelessWorkerStreamConsumerGrain.cs
    │   │   ├── StatelessWorkerStreamProducerGrain.cs
    │   │   ├── StatelessWorkerWithMayInterleaveGrain.cs
    │   │   ├── StatsCollectorGrain.cs
    │   │   ├── StreamBatchingTestConsumerGrain.cs
    │   │   ├── StreamCheckpoint.cs
    │   │   ├── StreamInterceptionGrain.cs
    │   │   ├── StreamingHistoryGrain.cs
    │   │   ├── StuckGrain.cs
    │   │   ├── TestGrains.csproj
    │   │   ├── TestPlacementStrategyFixedSiloDirector.cs
    │   │   ├── ValueTypeTestGrain.cs
    │   │   └── VersionAwarePlacementDirector.cs
    │   ├── TestInternalGrainInterfaces/
    │   │   ├── ActivationGCTestGrainInterfaces.cs
    │   │   ├── IClientAddressableTestClientObject.cs
    │   │   ├── IClientAddressableTestGrain.cs
    │   │   ├── IClientAddressableTestProducer.cs
    │   │   ├── IClientAddressableTestRendezvousGrain.cs
    │   │   ├── IMultifacetFactoryTestGrain.cs
    │   │   ├── IMultifacetTestGrain.cs
    │   │   ├── IPlacementTestGrain.cs
    │   │   ├── ISerializerPresenceTest.cs
    │   │   ├── IStressTestGrain.cs
    │   │   └── TestInternalGrainInterfaces.csproj
    │   ├── TestInternalGrains/
    │   │   ├── ActivateDeactivateTestGrain.cs
    │   │   ├── ActivationGCTestGrains.cs
    │   │   ├── ClientAddressableTestConsumerGrain.cs
    │   │   ├── ClientAddressableTestGrain.cs
    │   │   ├── ClientAddressableTestRendezvousGrain.cs
    │   │   ├── CollectionTestGrain.cs
    │   │   ├── EchoTaskGrain.cs
    │   │   ├── ErrorGrain.cs
    │   │   ├── ExtensionTestGrain.cs
    │   │   ├── HashBasedPlacementGrain.cs
    │   │   ├── InterlockedFlag.cs
    │   │   ├── MultifacetFactoryTestGrain.cs
    │   │   ├── MultifacetTestGrain.cs
    │   │   ├── ObservableGrain.cs
    │   │   ├── PersistenceTestGrains.cs
    │   │   ├── PersistentStateTestGrains.cs
    │   │   ├── PlacementTestGrain.cs
    │   │   ├── Properties/
    │   │   │   └── IsExternalInit.cs
    │   │   ├── ReminderTestGrain2.cs
    │   │   ├── SerializationTestTypes.cs
    │   │   ├── SerializerPresenceTestGrain.cs
    │   │   ├── StreamLifecycleTestGrains.cs
    │   │   ├── StreamLifecycleTestInternalGrains.cs
    │   │   ├── StreamReliabilityTestGrains.cs
    │   │   ├── StreamTestsConstants.cs
    │   │   ├── StreamingGrain.cs
    │   │   ├── StreamingImmutabilityTestGrain.cs
    │   │   ├── StressTestGrain.cs
    │   │   ├── TestExtension.cs
    │   │   ├── TestGrain.cs
    │   │   ├── TestInternalGrains.csproj
    │   │   └── TimerGrain.cs
    │   ├── TestVersionGrains/
    │   │   ├── IVersionTestGrain.cs
    │   │   ├── Program.cs
    │   │   ├── TestVersionGrains.csproj
    │   │   ├── VersionGrainsSiloBuilderConfigurator.cs
    │   │   └── VersionTestGrain.cs
    │   └── TestVersionGrains2/
    │       └── TestVersionGrains2.csproj
    ├── Misc/
    │   └── TestSerializerExternalModels/
    │       ├── IsExternalInit.cs
    │       ├── Models.cs
    │       └── TestSerializerExternalModels.csproj
    ├── Orleans.Analyzers.Tests/
    │   ├── AbstractPropertiesCannotBeSerializedAnalyzerTest.cs
    │   ├── AliasClashAttributeAnalyzerTest.cs
    │   ├── AlwaysInterleaveDiagnosticAnalyzerTests.cs
    │   ├── AssemblyInfo.cs
    │   ├── AtMostOneOrleansConstructorAnalyzerTest.cs
    │   ├── ConfigureAwaitAnalyzerTest.cs
    │   ├── DiagnosticAnalyzerTestBase.cs
    │   ├── GenerateAliasAttributesAnalyzerTest.cs
    │   ├── GenerateGenerateSerializerAttributeAnalyzerTest.cs
    │   ├── GenerateSerializationAttributesAnalyzerTest.cs
    │   ├── GrainInterfaceMethodReturnTypeDiagnosticAnalyzerTest.cs
    │   ├── GrainInterfacePropertyDiagnosticAnalyzerTest.cs
    │   ├── IdClashAttributeAnalyzerTest.cs
    │   ├── IncorrectAttributeUseAnalyzerTest.cs
    │   ├── NoRefParamsDiagnosticAnalyzerTest.cs
    │   └── Orleans.Analyzers.Tests.csproj
    ├── Orleans.CodeGenerator.Tests/
    │   ├── Orleans.CodeGenerator.Tests.csproj
    │   ├── OrleansSourceGeneratorTests.cs
    │   └── snapshots/
    │       ├── OrleansSourceGeneratorTests.TestAlias.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClass.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithAnnotatedFields.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithDifferentAccessModifiers.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithFields.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithInheritance.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithInitOnlyProperty.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicClassWithoutNamespace.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicGrain.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestBasicStruct.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassNestedTypes.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassPrimitiveTypes.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassPrimitiveTypesUsingFullName.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassReferenceProperties.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithConstructorParameters.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithFieldAndNoSetters.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithGenerateMethodSerializersAnnotation.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithGenerateSerializerAnnotation.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithInterfaceConstructorParameter.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithNoPublicConstructors.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithOptionalConstructorParameters.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassWithParameterizedConstructor.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestClassesWithGeneratedActivatorConstructorAnnotation.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestCompoundTypeAlias.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGenericClass.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGenericClassWithConstructorParameters.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGrainComplexGrain.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGrainMethodAnnotatedWithInvokableBaseType.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGrainMethodAnnotatedWithResponseTimeout.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGrainWithDifferentKeyTypes.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestGrainWithMultipleInterfaces.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestRecords.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestWithOmitDefaultMemberValuesAnnotation.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestWithSerializerTransparentAnnotation.verified.cs
    │       ├── OrleansSourceGeneratorTests.TestWithSuppressReferenceTrackingAttribute.verified.cs
    │       └── OrleansSourceGeneratorTests.TestWithUseActivatorAnnotation.verified.cs
    ├── Orleans.Connections.Security.Tests/
    │   ├── CertificateCreator.cs
    │   ├── Orleans.Connections.Security.Tests.csproj
    │   └── TlsConnectionTests.cs
    ├── Orleans.Core.Tests/
    │   ├── Async_AsyncExecutorWithRetriesTests.cs
    │   ├── Caching/
    │   │   ├── ConcurrentLruSoakTests.cs
    │   │   └── ConcurrentLruTests.cs
    │   ├── ClientBuilderTests.cs
    │   ├── CollectionFixtures.cs
    │   ├── ConfigTests.cs
    │   ├── DebuggerHelperTests.cs
    │   ├── Directory/
    │   │   ├── CachedGrainLocatorTests.cs
    │   │   ├── ClientDirectoryTests.cs
    │   │   ├── DhtGrainLocatorTests.cs
    │   │   ├── DirectoryMembershipSnapshotTests.cs
    │   │   ├── GrainDirectoryResolverTests.cs
    │   │   ├── GrainLocatorResolverTests.cs
    │   │   ├── MockClusterMembershipService.cs
    │   │   ├── MockLocalGrainDirectory.cs
    │   │   ├── RingRangeCollectionTests.cs
    │   │   └── RingRangeTests.cs
    │   ├── DurableJobs/
    │   │   ├── DurableJobReceiverExtensionTests.cs
    │   │   ├── InMemoryJobQueueTests.cs
    │   │   ├── InMemoryJobShardManagerTests.cs
    │   │   └── ShardExecutorTests.cs
    │   ├── General/
    │   │   ├── CounterAggregatorGroupTests.cs
    │   │   ├── HistogramAggregatorTests.cs
    │   │   ├── Identifiertests.cs
    │   │   ├── RequestContextTestsNonSiloRequired.cs
    │   │   ├── RingTests_Standalone.cs
    │   │   └── UtilsTests.cs
    │   ├── IdSpanTests.cs
    │   ├── Lease/
    │   │   └── GoldenPathInMemoryLeaseProviderTests.cs
    │   ├── ManagementAgentTests.cs
    │   ├── Membership/
    │   │   ├── ClusterHealthMonitorTests.cs
    │   │   ├── InMemoryMembershipTable.cs
    │   │   ├── MembershipAgentTests.cs
    │   │   ├── MembershipTableCleanupAgentTests.cs
    │   │   ├── MembershipTableManagerTests.cs
    │   │   ├── MembershipTableSnapshotTests.cs
    │   │   └── SiloHealthMonitorTests.cs
    │   ├── ObserverManagerTests.cs
    │   ├── Orleans.Core.Tests.csproj
    │   ├── OrleansRuntime/
    │   │   ├── AsyncSerialExecutorTests.cs
    │   │   ├── ExceptionsTests.cs
    │   │   └── Streams/
    │   │       ├── BestFitBalancerTests.cs
    │   │       ├── ResourceSelectorTestRunner.cs
    │   │       ├── RoundRobinSelectorTests.cs
    │   │       └── SubscriptionMarkerTests.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── ProviderErrorMessageTests.cs
    │   ├── Runtime/
    │   │   ├── ActivationCollectorTests.cs
    │   │   └── ActivationCountPlacementDirectorTests.cs
    │   ├── RuntimeTypeNameFormatterTests.cs
    │   ├── SchedulerTests/
    │   │   ├── OrleansTaskSchedulerAdvancedTests.cs
    │   │   ├── OrleansTaskSchedulerAdvancedTests_Set2.cs
    │   │   ├── OrleansTaskSchedulerBasicTests.cs
    │   │   └── STSchedulerLongTurnTest.cs
    │   ├── SchedulingHelper.cs
    │   ├── Serialization/
    │   │   ├── BuiltInSerializerTests.cs
    │   │   ├── ExternalCodecTests.cs
    │   │   ├── MessageSerializerTests.cs
    │   │   ├── SerializationTests.DifferentTypes.cs
    │   │   └── SerializationTests.ImmutableCollections.cs
    │   ├── ServiceLifecycleTests.cs
    │   ├── SiloBuilderTests.cs
    │   └── Utilities/
    │       ├── DelegateAsyncTimer.cs
    │       └── DelegateAsyncTimerFactory.cs
    ├── Orleans.Dashboard.Tests/
    │   ├── Orleans.Dashboard.TestGrains/
    │   │   ├── GenericGrain.cs
    │   │   ├── Orleans.Dashboard.TestGrains.csproj
    │   │   ├── TestCalls.cs
    │   │   ├── TestGenericGrain.cs
    │   │   ├── TestGrain.cs
    │   │   ├── TestGrainsHostedService.cs
    │   │   ├── TestMessageBasedGrain.cs
    │   │   ├── TestStateCompoundKeyGrain.cs
    │   │   ├── TestStateGrain.cs
    │   │   └── TestStateInMemoryGrain.cs
    │   └── Orleans.Dashboard.UnitTests/
    │       ├── EmbeddedAssetTests.cs
    │       ├── GrainStateTests.cs
    │       ├── Orleans.Dashboard.UnitTests.csproj
    │       ├── RingBufferTests.cs
    │       ├── TraceHistoryTests.cs
    │       └── TypeFormatterTests.cs
    ├── Orleans.DefaultCluster.Tests/
    │   ├── App.config
    │   ├── AsyncEnumerableGrainCallTests.cs
    │   ├── BasicActivationTests.cs
    │   ├── ClientAddressableTests.cs
    │   ├── CodeGenTests/
    │   │   ├── CodeGeneratorTests_KnownAssemblyAttribute.cs
    │   │   ├── GeneratorGrainTest.cs
    │   │   └── IRuntimeCodeGenGrain.cs
    │   ├── CollectionFixtures.cs
    │   ├── ConcreteStateClassTests.cs
    │   ├── DeactivationTests.cs
    │   ├── EchoTaskGrainTests.cs
    │   ├── ErrorGrainTest.cs
    │   ├── ExternalTypesTests.cs
    │   ├── FSharpGrainTests.cs
    │   ├── GenericGrainTests.cs
    │   ├── GrainActivateDeactivateTests.cs
    │   ├── GrainFactoryTests.cs
    │   ├── GrainInterfaceHierarchyTests.cs
    │   ├── GrainReferenceCastTests.cs
    │   ├── GrainReferenceTest.cs
    │   ├── HostedClientTests.cs
    │   ├── InMemoryDurableJobsTests.cs
    │   ├── KeyExtensionTests.cs
    │   ├── LifecycleObserverCreationTests.cs
    │   ├── LocalActivationStatusCheckerTests.cs
    │   ├── LocalErrorGrain.cs
    │   ├── ManagementGrainTests.cs
    │   ├── MemoryStorageProviderTests.cs
    │   ├── Migration/
    │   │   └── MigrationTests.cs
    │   ├── MultifacetGrainTest.cs
    │   ├── ObserverTests.cs
    │   ├── OneWayCallTests.cs
    │   ├── Orleans.DefaultCluster.Tests.csproj
    │   ├── PolymorphicInterfaceTest.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── ProviderTests.cs
    │   ├── ReminderTest.cs
    │   ├── RequestContextTest.cs
    │   ├── SerializationTests/
    │   │   ├── JsonSerializerTests.cs
    │   │   ├── RoundTripSerializerTests.cs
    │   │   └── SerializationTests.cs
    │   ├── SiloRoleBasedPlacementDirectorTests.cs
    │   ├── SimpleGrainTests.cs
    │   ├── StatelessWorkerTests.cs
    │   └── TimerOrleansTest.cs
    ├── Orleans.DependencyInjection.Tests/
    │   ├── App.config
    │   ├── Autofac/
    │   │   └── DependencyInjectionGrainTestsUsingAutofac.cs
    │   ├── DefaultServiceProvider/
    │   │   └── DependencyInjectionGrainTestsUsingDefaultServiceProvider.cs
    │   ├── DependencyInjectionGrainTestsRunner.cs
    │   ├── Orleans.DependencyInjection.Tests.csproj
    │   └── Properties/
    │       └── AssemblyInfo.cs
    ├── Orleans.DurableJobs.Tests/
    │   ├── DurableJobs/
    │   │   ├── DurableJobTestsRunner.cs
    │   │   ├── IJobShardManagerTestFixture.cs
    │   │   ├── InMemoryJobShardManagerTestFixture.cs
    │   │   ├── InMemoryJobShardManagerTests.cs
    │   │   └── JobShardManagerTestsRunner.cs
    │   └── Orleans.DurableJobs.Tests.csproj
    ├── Orleans.EventSourcing.Tests/
    │   ├── EventSourcingTests/
    │   │   ├── AccountGrainTests.cs
    │   │   ├── ChatGrainTests.cs
    │   │   ├── CountersGrainPerfTests.cs
    │   │   ├── CountersGrainTests.cs
    │   │   ├── EventSourcingClusterFixture.cs
    │   │   ├── LogTestGrainClearTests.cs
    │   │   └── PersonGrainTests.cs
    │   └── Orleans.EventSourcing.Tests.csproj
    ├── Orleans.GrainDirectory.Tests/
    │   ├── GrainDirectory/
    │   │   ├── DistributedGrainDirectoryTests.cs
    │   │   └── GrainDirectoryResilienceTests.cs
    │   └── Orleans.GrainDirectory.Tests.csproj
    ├── Orleans.Journaling.Tests/
    │   ├── DurableDictionaryTests.cs
    │   ├── DurableGrainTests.cs
    │   ├── DurableQueueTests.cs
    │   ├── DurableSetTests.cs
    │   ├── DurableValueTests.cs
    │   ├── Grains.cs
    │   ├── ITestDurableGrainInterface.cs
    │   ├── ITestMultiCollectionGrain.cs
    │   ├── IntegrationTestFixture.cs
    │   ├── JournalingAzureStorageTestConfiguration.cs
    │   ├── LogSegmentTests.cs
    │   ├── Orleans.Journaling.Tests.csproj
    │   ├── StateMachineManagerTests.cs
    │   ├── StateMachineTestBase.cs
    │   ├── TestDurableGrain.cs
    │   ├── TestMultiCollectionGrain.cs
    │   └── TestPerson.cs
    ├── Orleans.Placement.Tests/
    │   ├── ActivationRebalancingTests/
    │   │   ├── ControlRebalancerTests.cs
    │   │   ├── DynamicRebalancingTests.cs
    │   │   ├── RebalancerFixture.cs
    │   │   ├── RebalancingOptionsTests.cs
    │   │   ├── RebalancingTestBase.cs
    │   │   ├── StatePreservationRebalancingTests.cs
    │   │   └── StaticRebalancingTests.cs
    │   ├── ActivationRepartitioningTests/
    │   │   ├── BlockedBloomFilterTests.cs
    │   │   ├── CustomToleranceTests.cs
    │   │   ├── DefaultToleranceTests.cs
    │   │   ├── FrequencyFilterTests.cs
    │   │   ├── FrequentEdgeCounterTests.cs
    │   │   ├── MaxHeapTests.cs
    │   │   ├── OptionsTests.cs
    │   │   ├── RepartitioningTestBase.cs
    │   │   └── TestMessageFilter.cs
    │   ├── General/
    │   │   ├── ElasticPlacementTest.cs
    │   │   ├── GrainPlacementClusterChangeTests.cs
    │   │   ├── GrainPlacementTests.cs
    │   │   ├── LoadSheddingTest.cs
    │   │   └── ResourceOptimizedPlacementOptionsTests.cs
    │   ├── Orleans.Placement.Tests.csproj
    │   └── PlacementFilterTests/
    │       ├── GrainPlacementFilterTests.cs
    │       ├── PreferredMatchSiloMetadataPlacementFilterDirectorTests.cs
    │       ├── RequiredMatchSiloMetadataPlacementFilterDirectorTests.cs
    │       ├── SiloMetadataPlacementFilterTests.cs
    │       ├── TestLocalSiloDetails.cs
    │       └── TestSiloMetadataCache.cs
    ├── Orleans.Runtime.Internal.Tests/
    │   ├── ActivationsLifeCycleTests/
    │   │   ├── ActivationCollectorTests.cs
    │   │   └── DeactivateOnIdleTests.cs
    │   ├── App.config
    │   ├── CancellationTests/
    │   │   └── SystemTargetCancellationTokenTests.cs
    │   ├── CollectionFixtures.cs
    │   ├── ConcurrencyTests.cs
    │   ├── ConnectionStringFixture.cs
    │   ├── ErrorInjectionStorageProvider.cs
    │   ├── GatewaySelectionTest.cs
    │   ├── General/
    │   │   ├── ConsistentRingProviderTests_Silo.cs
    │   │   └── RequestContextTest.cs
    │   ├── GeoClusterTests/
    │   │   └── BasicLogTestGrainTests.cs
    │   ├── GrainDirectoryPartitionTests.cs
    │   ├── GrainLocatorActivationResiliencyTests.cs
    │   ├── GrainStateContainingGrainReferences.cs
    │   ├── LivenessTests/
    │   │   └── ConsistentRingProviderTests.cs
    │   ├── MembershipTests/
    │   │   ├── ClientIdPartitionDataRebuildTests.cs
    │   │   └── MembershipTableTestsBase.cs
    │   ├── MemoryGrainStorageTests.cs
    │   ├── MessageScheduling/
    │   │   ├── AllowCallChainReentrancyTests.cs
    │   │   ├── CallChainReentrancyTestHelper.cs
    │   │   ├── DisabledCallChainReentrancyTestRunner.cs
    │   │   ├── DisabledCallChainReentrancyTests.cs
    │   │   └── ReentrancyTests.cs
    │   ├── Orleans.Runtime.Internal.Tests.csproj
    │   ├── OrleansRuntime/
    │   │   └── StuckGrainTests.cs
    │   ├── Properties/
    │   │   ├── AssemblyInfo.cs
    │   │   └── IsExternalInit.cs
    │   ├── ReadMe.md
    │   ├── RemindersTest/
    │   │   └── ReminderTableTestsBase.cs
    │   ├── RetryHelper.cs
    │   ├── SiloMetadataTests/
    │   │   └── SiloMetadataTests.cs
    │   ├── StorageTests/
    │   │   ├── CommonStorageTests.cs
    │   │   ├── CommonStorageUtilities.cs
    │   │   ├── HierarchicalKeyStoreTests.cs
    │   │   ├── LocalStoreTests.cs
    │   │   ├── PersistenceGrainTests.cs
    │   │   ├── RandomUtilities.cs
    │   │   ├── Range.cs
    │   │   ├── StorageProviders/
    │   │   │   ├── BaseJSONStorageProvider.cs
    │   │   │   ├── FileStorageProvider.cs
    │   │   │   └── IJSONStateDataManager.cs
    │   │   ├── SymbolSet.cs
    │   │   └── TestDataSets/
    │   │       ├── GrainTypeGenerator.cs
    │   │       ├── StorageDataSet2CyrillicIdsAndGrainNames.cs
    │   │       ├── StorageDataSetGeneric.cs
    │   │       ├── StorageDataSetPlain.cs
    │   │       ├── StorageDateSetGenericHuge.cs
    │   │       ├── TestState1.cs
    │   │       └── TestStateGeneric1.cs
    │   ├── TestRunners/
    │   │   └── GrainPersistenceTestRunner.cs
    │   ├── TestStoreGrainState.cs
    │   ├── TestUtils.cs
    │   ├── TimeoutTests.cs
    │   └── TimerTests/
    │       ├── ReminderTests_Base.cs
    │       └── ReminderTests_TableGrain.cs
    ├── Orleans.Runtime.Tests/
    │   ├── ActivationTracingTests.cs
    │   ├── ActivityPropagationTests.cs
    │   ├── App.config
    │   ├── CancellationTests/
    │   │   ├── CancellationTokenTests.cs
    │   │   ├── GrainCancellationTokenTests.cs
    │   │   └── ObserverCancellationTokenTests.cs
    │   ├── ClientConnectionTests/
    │   │   ├── ClientConnectionEventTests.cs
    │   │   ├── ClientConnectionRegisteredServiceEventTests.cs
    │   │   ├── ClusterClientTests.cs
    │   │   ├── GatewayConnectionTests.cs
    │   │   ├── InvalidPreambleConnectionTests.cs
    │   │   └── StallConnectionTests.cs
    │   ├── CollectionFixtures.cs
    │   ├── Directories/
    │   │   ├── GrainDirectoryTests.cs
    │   │   └── MultipleGrainDirectoriesTests.cs
    │   ├── DuplicateActivationsTests.cs
    │   ├── ExceptionPropagationTests.cs
    │   ├── Forwarding/
    │   │   └── ShutdownSiloTests.cs
    │   ├── GrainActivatorTests.cs
    │   ├── GrainCallFilterTests.cs
    │   ├── GrainLevelCallFilterTests.cs
    │   ├── GrainServiceTests/
    │   │   ├── GrainServiceTests.cs
    │   │   └── TestGrainService.cs
    │   ├── HeterogeneousSilosTests/
    │   │   ├── HeterogeneousTests.cs
    │   │   └── UpgradeTests/
    │   │       ├── RuntimeStrategyChangeTests.cs
    │   │       ├── UpgradeTests.cs
    │   │       ├── UpgradeTestsBase.cs
    │   │       └── VersionPlacementTests.cs
    │   ├── JsonNodeGrainTests.cs
    │   ├── Lifecycle/
    │   │   └── LifecycleTests.cs
    │   ├── LocalhostSiloTests.cs
    │   ├── LogFomatterTests.cs
    │   ├── ManagementGrainTests.cs
    │   ├── MembershipTests/
    │   │   ├── LivenessTests.cs
    │   │   └── SilosStopTests.cs
    │   ├── MinimalReminderTests.cs
    │   ├── OneWayDeactivationTests.cs
    │   ├── Orleans.Runtime.Tests.csproj
    │   ├── Placement/
    │   │   └── CustomPlacementTests.cs
    │   ├── Program.cs
    │   ├── Properties/
    │   │   ├── AssemblyInfo.cs
    │   │   └── IsExternalInit.cs
    │   ├── ReadMe.md
    │   ├── StartupTaskTests.cs
    │   ├── StatelessWorkerActivationTests.cs
    │   ├── StorageFacet/
    │   │   ├── Feature.Abstractions/
    │   │   │   ├── ExampleStorageAttribute.cs
    │   │   │   └── IExampleStorage.cs
    │   │   ├── Feature.Implementations/
    │   │   │   ├── BlobExampleStorage.cs
    │   │   │   └── TableExampleStorage.cs
    │   │   ├── Feature.Infrastructure/
    │   │   │   ├── ExampleStorageAttributeMapper.cs
    │   │   │   ├── ExampleStorageExtensions.cs
    │   │   │   └── NamedExampleStorageFactory.cs
    │   │   ├── StorageFacetGrain.cs
    │   │   └── StorageFacetTests.cs
    │   ├── TestDirectoryCache.cs
    │   └── TransportTests/
    │       ├── TransportTestsBase.cs
    │       └── UnixSocketTransportTests.cs
    ├── Orleans.Serialization.FSharp.Tests/
    │   ├── Orleans.Serialization.FSharp.Tests.fsproj
    │   └── SerializationTests.fs
    ├── Orleans.Serialization.UnitTests/
    │   ├── ArcBufferWriterTests.cs
    │   ├── Buffers/
    │   │   └── Adaptors/
    │   │       └── PooledBufferStreamTests.cs
    │   ├── BuiltInCodecTests.cs
    │   ├── ConverterTests.cs
    │   ├── GeneratedSerializerTests.cs
    │   ├── GenericBaseClassTest.cs
    │   ├── ISerializableTests.cs
    │   ├── InvokableTestInterfaces.cs
    │   ├── ManualVersionToleranceTests.cs
    │   ├── MemoryPackSerializerTests.cs
    │   ├── MessagePackSerializerTests.cs
    │   ├── Models.cs
    │   ├── NewtonsoftJsonCodecTests.cs
    │   ├── NumericsWideningAndNarrowingTests.cs
    │   ├── Orleans.Serialization.UnitTests.csproj
    │   ├── PolymorphismTests.cs
    │   ├── PooledBufferTests.cs
    │   ├── Properties/
    │   │   ├── IsExternalInit.cs
    │   │   └── RequiredMemberAttribute.cs
    │   ├── ProtobufSerializerTests.cs
    │   ├── ReaderWriterTests.cs
    │   ├── RecordSerializationTests.cs
    │   ├── Request.cs
    │   ├── TypeEncodingTests.cs
    │   └── protobuf-model.proto
    ├── Orleans.Streaming.Tests/
    │   ├── Orleans.Streaming.Tests.csproj
    │   ├── OrleansRuntime/
    │   │   └── Streams/
    │   │       ├── CachedMessageBlockTests.cs
    │   │       ├── FixedSizeBufferTests.cs
    │   │       ├── ObjectPoolTests.cs
    │   │       └── PooledQueueCacheTests.cs
    │   ├── StreamingTests/
    │   │   ├── BroadcastChannels/
    │   │   │   └── BroadcastChannelTests.cs
    │   │   ├── ClientStreamTestRunner.cs
    │   │   ├── ControllableStreamGeneratorProviderTests.cs
    │   │   ├── ControllableStreamProviderTests.cs
    │   │   ├── DeactivationTestRunner.cs
    │   │   ├── Filtering/
    │   │   │   └── StreamFilteringTestsBase.cs
    │   │   ├── GeneratedStreamRecoveryTests.cs
    │   │   ├── ImplicitSubscriptionKeyTypeGrainTests.cs
    │   │   ├── ImplicitSubscritionRecoverableStreamTestRunner.cs
    │   │   ├── MemoryProgrammaticSubcribeTests.cs
    │   │   ├── MemoryStreamBatchingTests.cs
    │   │   ├── MemoryStreamCacheMissTests.cs
    │   │   ├── MemoryStreamProviderBatchedClientTests.cs
    │   │   ├── MemoryStreamProviderClientTests.cs
    │   │   ├── MemoryStreamResumeTests.cs
    │   │   ├── MultipleStreamsTestRunner.cs
    │   │   ├── PlugableQueueBalancerTests/
    │   │   │   ├── LeaseBasedQueueBalancer.cs
    │   │   │   ├── LeaseManagerGrain.cs
    │   │   │   ├── PluggableQueueBalancerTestBase.cs
    │   │   │   └── PluggableQueueBalancerTestsWithMemoryStreamProvider.cs
    │   │   ├── ProgrammaticSubscribeTests/
    │   │   │   ├── ProgrammaticSubscribeTestsRunner.cs
    │   │   │   └── SubscriptionObserverWithImplicitSubscribingTestRunner.cs
    │   │   ├── PubSubRendezvousGrainTests.cs
    │   │   ├── SampleStreamingTests.cs
    │   │   ├── SingleStreamTestRunner.cs
    │   │   ├── StatelessWorkersStreamTests.cs
    │   │   ├── StreamBatchingTestRunner.cs
    │   │   ├── StreamGeneratorProviderTests.cs
    │   │   ├── StreamProvidersTests.cs
    │   │   ├── StreamPubSubReliabilityTests.cs
    │   │   ├── StreamTestHelperClasses.cs
    │   │   ├── StreamTestUtils.cs
    │   │   ├── StreamingCacheMissTests.cs
    │   │   ├── StreamingResumeTests.cs
    │   │   ├── SubscriptionMultiplicityTestRunner.cs
    │   │   └── SystemTargetRouteTests.cs
    │   └── TestStreamProviders/
    │       └── Controllable/
    │           └── ControllableTestStreamProvider.cs
    ├── TestInfrastructure/
    │   ├── Orleans.TestingHost.Tests/
    │   │   ├── App.config
    │   │   ├── Grains/
    │   │   │   └── SimpleGrain.cs
    │   │   ├── Orleans.TestingHost.Tests.csproj
    │   │   └── TestClusterTests.cs
    │   └── TestExtensions/
    │       ├── BaseClusterFixture.cs
    │       ├── BaseInProcessTestClusterFixture.cs
    │       ├── DefaultClusterFixture.cs
    │       ├── HierarchicalKeyStore.cs
    │       ├── HostedTestClusterBase.cs
    │       ├── ILocalDataStore.cs
    │       ├── MockStorageProvider.cs
    │       ├── OrleansTestingBase.cs
    │       ├── Runners/
    │       │   └── GoldenPathLeaseProviderTestRunner.cs
    │       ├── SerializationTestEnvironment.cs
    │       ├── SiloAddressUtils.cs
    │       ├── TestCategory.cs
    │       ├── TestClusterPerTest.cs
    │       ├── TestConstants.cs
    │       ├── TestDefaultConfiguration.cs
    │       ├── TestEnvironmentFixture.cs
    │       ├── TestExtensions.csproj
    │       ├── TestOutputHelperExtensions.cs
    │       ├── TestUtils.cs
    │       └── XunitLoggerProvider.cs
    ├── TesterInternal/
    │   └── ActivationsLifeCycleTests/
    │       └── ActivationCancellationTests.cs
    ├── Transactions/
    │   ├── Orleans.Transactions.Azure.Test/
    │   │   ├── AssemblyInfo.cs
    │   │   ├── AzureTransactionalStateStorageTests.cs
    │   │   ├── ConsistencySkewedClockTests.cs
    │   │   ├── ConsistencyTests.cs
    │   │   ├── FaultInjection/
    │   │   │   ├── ControlledInjection/
    │   │   │   │   └── TransactionFaultInjectionTests.cs
    │   │   │   └── RandomInjection/
    │   │   │       └── ConsistencyFaultInjectionTests.cs
    │   │   ├── GoldenPathTests.cs
    │   │   ├── GrainFaultTests.cs
    │   │   ├── Orleans.Transactions.Azure.Test.csproj
    │   │   ├── SkewedClockGoldenPathTransactionTests.cs
    │   │   ├── TestFixture.cs
    │   │   ├── TocFaultTransactionTests.cs
    │   │   ├── TocGoldenPathTests.cs
    │   │   ├── TransactionConcurrencyTests.cs
    │   │   ├── TransactionRecoveryTests.cs
    │   │   └── TransactionScopeTests.cs
    │   └── Orleans.Transactions.Tests/
    │       ├── AssemblyInfo.cs
    │       ├── Disabled/
    │       │   └── DisabledTransactionsTests.cs
    │       ├── Memory/
    │       │   ├── ConsistencySkewedClockTests.cs
    │       │   ├── ConsistencyTests.cs
    │       │   ├── GoldenPathTransactionMemoryTests.cs
    │       │   ├── GrainFaultTransactionMemoryTests.cs
    │       │   ├── MemoryTransactionsFixture.cs
    │       │   ├── SkewedClockGoldenPathTransactionMemoryTests.cs
    │       │   ├── TocFaultTransactionMemoryTests.cs
    │       │   ├── TocGoldenPathMemoryTests.cs
    │       │   ├── TransactionAttributionTest.cs
    │       │   └── TransactionConcurrencyTests.cs
    │       ├── Orleans.Transactions.Tests.csproj
    │       ├── Runners/
    │       │   └── TransactionAttributionTestRunner.cs
    │       └── TransactionOverloadDetectorTests.cs
    └── xunit.runner.json
Download .txt
Showing preview only (4,176K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (37670 symbols across 2808 files)

FILE: playground/ActivationRebalancing/ActivationRebalancing.Cluster/Program.cs
  class LoadDriverBackgroundService (line 35) | internal class LoadDriverBackgroundService(IGrainFactory client) : Backg...
    method ExecuteAsync (line 37) | protected override async Task ExecuteAsync(CancellationToken stoppingT...
  type IRebalancingTestGrain (line 51) | public interface IRebalancingTestGrain : IGrainWithGuidKey
    method Ping (line 53) | Task Ping();
  class RebalancingTestGrain (line 56) | [CollectionAgeLimit(Minutes = 0.5)]
    method Ping (line 59) | public Task Ping() => Task.CompletedTask;

FILE: playground/ActivationRebalancing/ActivationRebalancing.Frontend/Controllers/StatsController.cs
  class StatsController (line 7) | [ApiController]
    method GetStats (line 11) | [HttpGet("silos")]
  type SiloData (line 36) | public record SiloData(string Host, int Activations);

FILE: playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/Data/ClusterDiagnosticsService.cs
  class ClusterDiagnosticsService (line 7) | public class ClusterDiagnosticsService(IGrainFactory grainFactory)
    type GrainDetails (line 14) | private readonly record struct GrainDetails(int GrainKey, int HostKey);
    type HostDetails (line 15) | private readonly record struct HostDetails(int HostKey, int Activation...
    method GetGrainCallFrequencies (line 18) | public async ValueTask<CallGraph> GetGrainCallFrequencies()
    method ResetAsync (line 106) | internal async ValueTask ResetAsync()
    method Reset (line 118) | internal void Reset()
    method GetGrainVertex (line 129) | private GrainDetails GetGrainVertex(GrainId grainId, int hostKey)
    method GetHostVertex (line 143) | private int GetHostVertex(SiloAddress silo)
    method UpdateEdge (line 157) | private void UpdateEdge(Key key, ulong increment)
  type CallGraph (line 167) | public record class CallGraph(List<GraphNode> GrainIds, List<HostNode> H...
  type HostNode (line 169) | public record struct HostNode(string Name, int ActivationCount);
  type GraphNode (line 170) | public record struct GraphNode(string Name, string Key, int Host, double...
  type Key (line 171) | public record struct Key(int Source, int Target);
  type GraphEdge (line 172) | public record struct GraphEdge(int Source, int Target, double Weight);

FILE: playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/Program.cs
  type ILoaderGrain (line 77) | public interface ILoaderGrain : IGrainWithStringKey
    method AddForest (line 79) | ValueTask AddForest();
    method Reset (line 80) | ValueTask Reset();
    method GetResetCount (line 81) | ValueTask<int> GetResetCount();
  class LoaderGrain (line 84) | public class LoaderGrain : Grain, ILoaderGrain
    method AddForest (line 89) | public async ValueTask AddForest()
    method Reset (line 96) | public async ValueTask Reset()
    method GetResetCount (line 104) | public ValueTask<int> GetResetCount() => new(_resetCount);
  type IFanOutGrain (line 107) | public interface IFanOutGrain : IGrainWithIntegerCompoundKey
    method Ping (line 109) | public ValueTask Ping();
  class FanOutGrain (line 112) | public class FanOutGrain : Grain, IFanOutGrain
    method FanOutGrain (line 118) | public FanOutGrain()
    method Ping (line 139) | public async ValueTask Ping()

FILE: playground/ActivationSheddingToy/ActivationSheddingToyHostedService.cs
  class ActivationSheddingToyHostedService (line 6) | internal sealed class ActivationSheddingToyHostedService(IGrainFactory g...
    method ExecuteAsync (line 8) | protected override async Task ExecuteAsync(CancellationToken stoppingT...
    method PrintUsage (line 61) | private void PrintUsage(int i, List<(int GrainCount, long UsageBytes)>...
    method PlotAndPrintStats (line 71) | private static void PlotAndPrintStats(List<(int GrainCount, long Usage...
  class ActivationSheddingToyGrain (line 91) | internal sealed class ActivationSheddingToyGrain : Grain, IActivationShe...
    method Ping (line 94) | public Task Ping()
  type IActivationSheddingToyGrain (line 101) | internal interface IActivationSheddingToyGrain : IGrainWithIntegerKey
    method Ping (line 103) | Task Ping();

FILE: playground/ChaoticCluster/ChaoticCluster.ServiceDefaults/Extensions.cs
  class Extensions (line 14) | public static class Extensions
    method AddServiceDefaults (line 16) | public static IHostApplicationBuilder AddServiceDefaults(this IHostApp...
    method ConfigureOpenTelemetry (line 42) | public static IHostApplicationBuilder ConfigureOpenTelemetry(this IHos...
    method AddOpenTelemetryExporters (line 65) | private static IHostApplicationBuilder AddOpenTelemetryExporters(this ...
    method AddDefaultHealthChecks (line 84) | public static IHostApplicationBuilder AddDefaultHealthChecks(this IHos...
    method MapDefaultEndpoints (line 93) | public static WebApplication MapDefaultEndpoints(this WebApplication app)

FILE: playground/ChaoticCluster/ChaoticCluster.Silo/SiloBuilderConfigurator.cs
  class SiloBuilderConfigurator (line 5) | class SiloBuilderConfigurator : ISiloConfigurator
    method Configure (line 7) | public void Configure(ISiloBuilder siloBuilder)
  type IMyTestGrain (line 15) | internal interface IMyTestGrain : IGrainWithIntegerKey
    method Ping (line 17) | ValueTask Ping();
  class MyTestGrain (line 20) | [CollectionAgeLimit(Minutes = 1.01)]
    method Ping (line 23) | public ValueTask Ping() => default;

FILE: src/AWS/Orleans.Clustering.DynamoDB/AWSUtilsHostingExtensions.cs
  class AwsUtilsHostingExtensions (line 10) | public static class AwsUtilsHostingExtensions
    method UseDynamoDBClustering (line 24) | public static ISiloBuilder UseDynamoDBClustering(
    method UseDynamoDBClustering (line 52) | public static ISiloBuilder UseDynamoDBClustering(
    method UseDynamoDBClustering (line 76) | public static IClientBuilder UseDynamoDBClustering(
    method UseDynamoDBClustering (line 104) | public static IClientBuilder UseDynamoDBClustering(

FILE: src/AWS/Orleans.Clustering.DynamoDB/DynamoDBClusteringProviderBuilder.cs
  class DynamoDBClusteringProviderBuilder (line 12) | internal sealed class DynamoDBClusteringProviderBuilder : IProviderBuild...
    method Configure (line 14) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...
    method Configure (line 81) | public void Configure(IClientBuilder builder, string name, IConfigurat...

FILE: src/AWS/Orleans.Clustering.DynamoDB/Membership/DynamoDBGatewayListProvider.cs
  class DynamoDBGatewayListProvider (line 16) | internal class DynamoDBGatewayListProvider : IGatewayListProvider
    method DynamoDBGatewayListProvider (line 24) | public DynamoDBGatewayListProvider(
    method InitializeGatewayListProvider (line 36) | public Task InitializeGatewayListProvider()
    method GetGateways (line 64) | public async Task<IList<Uri>> GetGateways()

FILE: src/AWS/Orleans.Clustering.DynamoDB/Membership/DynamoDBGatewayListProviderHelper.cs
  class DynamoDBGatewayListProviderHelper (line 8) | public class DynamoDBGatewayListProviderHelper
    method ParseDataConnectionString (line 21) | internal static void ParseDataConnectionString(string dataConnectionSt...

FILE: src/AWS/Orleans.Clustering.DynamoDB/Membership/DynamoDBMembershipHelper.cs
  class DynamoDBMembershipHelper (line 8) | public class DynamoDBMembershipHelper
    method ParseDataConnectionString (line 22) | public static void ParseDataConnectionString(string dataConnectionStri...

FILE: src/AWS/Orleans.Clustering.DynamoDB/Membership/DynamoDBMembershipTable.cs
  class DynamoDBMembershipTable (line 18) | internal partial class DynamoDBMembershipTable : IMembershipTable
    method DynamoDBMembershipTable (line 30) | public DynamoDBMembershipTable(
    method InitializeMembershipTable (line 40) | public async Task InitializeMembershipTable(bool tryInitTableVersion)
    method TryCreateTableVersionEntryAsync (line 79) | private async Task<bool> TryCreateTableVersionEntryAsync()
    method TryCreateTableVersionRecord (line 112) | private bool TryCreateTableVersionRecord(int version, string etag, out...
    method DeleteMembershipTableEntries (line 139) | public async Task DeleteMembershipTableEntries(string clusterId)
    method ReadRow (line 166) | public async Task<MembershipTableData> ReadRow(SiloAddress siloAddress)
    method ReadAll (line 196) | public async Task<MembershipTableData> ReadAll()
    method InsertRow (line 235) | public async Task<bool> InsertRow(MembershipEntry entry, TableVersion ...
    method UpdateRow (line 300) | public async Task<bool> UpdateRow(MembershipEntry entry, string etag, ...
    method UpdateIAmAlive (line 374) | public async Task UpdateIAmAlive(MembershipEntry entry)
    method Convert (line 391) | private MembershipTableData Convert(List<SiloInstanceRecord> entries)
    method Parse (line 427) | private static MembershipEntry Parse(SiloInstanceRecord tableEntry)
    method Convert (line 478) | private SiloInstanceRecord Convert(MembershipEntry memEntry, TableVers...
    method ConvertPartial (line 525) | private SiloInstanceRecord ConvertPartial(MembershipEntry memEntry)
    method CleanupDefunctSiloEntries (line 535) | public async Task CleanupDefunctSiloEntries(DateTimeOffset beforeDate)
    method SiloIsDefunct (line 562) | private static bool SiloIsDefunct(SiloInstanceRecord silo, DateTimeOff...
    method LogInformationInitializingMembershipTable (line 569) | [LoggerMessage(
    method LogInformationCreatedNewTableVersionRow (line 575) | [LoggerMessage(
    method LogErrorUnableToDeleteMembershipRecords (line 581) | [LoggerMessage(
    method LogTraceReadMyEntry (line 587) | [LoggerMessage(
    method LogWarningIntermediateErrorReadingSiloEntry (line 593) | [LoggerMessage(
    method LogWarningFoundInconsistencyReadingAllSiloEntries (line 599) | [LoggerMessage(
    method LogTraceReadAllTable (line 605) | [LoggerMessage(
    method LogWarningIntermediateErrorReadingAllSiloEntries (line 611) | [LoggerMessage(
    method LogDebugInsertRow (line 617) | [LoggerMessage(
    method LogWarningInsertFailedInvalidETag (line 623) | [LoggerMessage(
    method LogWarningInsertFailedDueToContention (line 629) | [LoggerMessage(
    method LogWarningIntermediateErrorInsertingEntry (line 635) | [LoggerMessage(
    method LogDebugUpdateRow (line 641) | [LoggerMessage(
    method LogWarningUpdateFailedInvalidETag (line 647) | [LoggerMessage(
    method LogWarningUpdateFailedDueToContention (line 653) | [LoggerMessage(
    method LogWarningIntermediateErrorUpdatingEntry (line 659) | [LoggerMessage(
    method LogDebugMergeEntry (line 665) | [LoggerMessage(
    method LogWarningIntermediateErrorUpdatingIAmAlive (line 671) | [LoggerMessage(
    method LogErrorIntermediateErrorParsingSiloInstanceTableEntry (line 677) | [LoggerMessage(
    method LogErrorIntermediateErrorParsingSiloInstanceTableEntries (line 683) | [LoggerMessage(
    method LogErrorUnableToCleanUpDefunctMembershipRecords (line 689) | [LoggerMessage(

FILE: src/AWS/Orleans.Clustering.DynamoDB/Membership/SiloInstanceRecord.cs
  class SiloInstanceRecord (line 9) | internal class SiloInstanceRecord
    method SiloInstanceRecord (line 47) | public SiloInstanceRecord() { }
    method SiloInstanceRecord (line 49) | public SiloInstanceRecord(Dictionary<string, AttributeValue> fields)
    method UnpackRowKey (line 103) | internal static SiloAddress UnpackRowKey(string rowKey)
    method ToString (line 124) | public override string ToString()
    method ConstructSiloIdentity (line 147) | public static string ConstructSiloIdentity(SiloAddress silo)
    method GetKeys (line 152) | public Dictionary<string, AttributeValue> GetKeys()
    method GetFields (line 160) | public Dictionary<string, AttributeValue> GetFields(bool includeKeys =...

FILE: src/AWS/Orleans.Clustering.DynamoDB/Options/DynamoDBClusteringOptions.cs
  class DynamoDBClusteringOptions (line 5) | public class DynamoDBClusteringOptions : DynamoDBClientOptions

FILE: src/AWS/Orleans.Clustering.DynamoDB/Options/DynamoDBClusteringSiloOptions.cs
  class DynamoDBClusteringSiloOptions (line 3) | public class DynamoDBClusteringSiloOptions

FILE: src/AWS/Orleans.Clustering.DynamoDB/Options/DynamoDBGatewayOptions.cs
  class DynamoDBGatewayOptions (line 5) | public class DynamoDBGatewayOptions : DynamoDBClientOptions

FILE: src/AWS/Orleans.Persistence.DynamoDB/Hosting/DynamoDBGrainStorageProviderBuilder.cs
  class DynamoDBGrainStorageProviderBuilder (line 15) | internal sealed class DynamoDBGrainStorageProviderBuilder : IProviderBui...
    method Configure (line 17) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...

FILE: src/AWS/Orleans.Persistence.DynamoDB/Hosting/DynamoDBGrainStorageServiceCollectionExtensions.cs
  class DynamoDBGrainStorageServiceCollectionExtensions (line 16) | public static class DynamoDBGrainStorageServiceCollectionExtensions
    method AddDynamoDBGrainStorageAsDefault (line 21) | public static IServiceCollection AddDynamoDBGrainStorageAsDefault(this...
    method AddDynamoDBGrainStorage (line 29) | public static IServiceCollection AddDynamoDBGrainStorage(this IService...
    method AddDynamoDBGrainStorageAsDefault (line 37) | public static IServiceCollection AddDynamoDBGrainStorageAsDefault(this...
    method AddDynamoDBGrainStorage (line 45) | public static IServiceCollection AddDynamoDBGrainStorage(this IService...

FILE: src/AWS/Orleans.Persistence.DynamoDB/Hosting/DynamoDBGrainStorageSiloBuilderExtensions.cs
  class DynamoDBGrainStorageSiloBuilderExtensions (line 8) | public static class DynamoDBGrainStorageSiloBuilderExtensions
    method AddDynamoDBGrainStorageAsDefault (line 13) | public static ISiloBuilder AddDynamoDBGrainStorageAsDefault(this ISilo...
    method AddDynamoDBGrainStorage (line 21) | public static ISiloBuilder AddDynamoDBGrainStorage(this ISiloBuilder b...
    method AddDynamoDBGrainStorageAsDefault (line 29) | public static ISiloBuilder AddDynamoDBGrainStorageAsDefault(this ISilo...
    method AddDynamoDBGrainStorage (line 37) | public static ISiloBuilder AddDynamoDBGrainStorage(this ISiloBuilder b...

FILE: src/AWS/Orleans.Persistence.DynamoDB/Options/DynamoDBStorageOptions.cs
  class DynamoDBStorageOptions (line 8) | public class DynamoDBStorageOptions : DynamoDBClientOptions, IStoragePro...
  class DynamoDBGrainStorageOptionsValidator (line 68) | public class DynamoDBGrainStorageOptionsValidator : IConfigurationValidator
    method DynamoDBGrainStorageOptionsValidator (line 78) | public DynamoDBGrainStorageOptionsValidator(DynamoDBStorageOptions opt...
    method ValidateConfiguration (line 84) | public void ValidateConfiguration()

FILE: src/AWS/Orleans.Persistence.DynamoDB/Provider/DynamoDBGrainStorage.cs
  class DynamoDBGrainStorage (line 24) | public partial class DynamoDBGrainStorage : IGrainStorage, ILifecyclePar...
    method DynamoDBGrainStorage (line 44) | public DynamoDBGrainStorage(
    method Participate (line 56) | public void Participate(ISiloLifecycle lifecycle)
    method Init (line 62) | public async Task Init(CancellationToken ct)
    method Close (line 111) | public Task Close(CancellationToken ct) => Task.CompletedTask;
    method ReadStateAsync (line 115) | public async Task ReadStateAsync<T>(string grainType, GrainId grainId,...
    method WriteStateAsync (line 156) | public async Task WriteStateAsync<T>(string grainType, GrainId grainId...
    method WriteStateInternal (line 181) | private async Task WriteStateInternal<T>(IGrainState<T> grainState, Gr...
    method ClearStateAsync (line 249) | public async Task ClearStateAsync<T>(string grainType, GrainId grainId...
    class GrainStateRecord (line 286) | internal class GrainStateRecord
    method GetKeyString (line 294) | private string GetKeyString(GrainId grainId)
    method ConvertFromStorageFormat (line 300) | internal T ConvertFromStorageFormat<T>(GrainStateRecord entity)
    method ConvertToStorageFormat (line 326) | internal void ConvertToStorageFormat(object grainState, GrainStateReco...
    method ResetGrainState (line 346) | private void ResetGrainState<T>(IGrainState<T> grainState)
    method CreateInstance (line 353) | private T CreateInstance<T>() => _activatorProvider.GetActivator<T>()....
    method LogInformationInitializingDynamoDBGrainStorage (line 355) | [LoggerMessage(
    method LogInformationProviderInitialized (line 361) | [LoggerMessage(
    method LogErrorProviderInitFailed (line 367) | [LoggerMessage(
    method LogTraceReadingGrainState (line 374) | [LoggerMessage(
    method LogErrorWritingGrainState (line 380) | [LoggerMessage(
    method LogTraceClearingGrainState (line 386) | [LoggerMessage(
    method LogErrorClearingGrainState (line 392) | [LoggerMessage(
    method LogError (line 398) | [LoggerMessage(
    method LogTraceWritingBinaryData (line 404) | [LoggerMessage(
  class DynamoDBGrainStorageFactory (line 411) | public static class DynamoDBGrainStorageFactory
    method Create (line 413) | public static DynamoDBGrainStorage Create(IServiceProvider services, s...

FILE: src/AWS/Orleans.Reminders.DynamoDB/DynamoDBRemindersProviderBuilder.cs
  class DynamoDBRemindersProviderBuilder (line 10) | internal sealed class DynamoDBRemindersProviderBuilder : IProviderBuilde...
    method Configure (line 12) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...

FILE: src/AWS/Orleans.Reminders.DynamoDB/DynamoDBServiceCollectionReminderExtensions.cs
  class DynamoDBServiceCollectionReminderExtensions (line 11) | public static class DynamoDBServiceCollectionReminderExtensions
    method UseDynamoDBReminderService (line 25) | public static IServiceCollection UseDynamoDBReminderService(this IServ...

FILE: src/AWS/Orleans.Reminders.DynamoDB/DynamoDBSiloBuilderReminderExtensions.cs
  class DynamoDBSiloBuilderReminderExtensions (line 9) | public static class DynamoDBSiloBuilderReminderExtensions
    method UseDynamoDBReminderService (line 23) | public static ISiloBuilder UseDynamoDBReminderService(this ISiloBuilde...

FILE: src/AWS/Orleans.Reminders.DynamoDB/Reminders/DynamoDBReminderTable.cs
  class DynamoDBReminderTable (line 16) | internal sealed partial class DynamoDBReminderTable : IReminderTable
    method DynamoDBReminderTable (line 40) | public DynamoDBReminderTable(
    method Init (line 51) | public Task Init()
    method ReadRow (line 113) | public async Task<ReminderEntry> ReadRow(GrainId grainId, string remin...
    method ReadRows (line 139) | public async Task<ReminderTableData> ReadRows(GrainId grainId)
    method ReadRows (line 167) | public async Task<ReminderTableData> ReadRows(uint begin, uint end)
    method Resolve (line 216) | private ReminderEntry Resolve(Dictionary<string, AttributeValue> item)
    method RemoveRow (line 235) | public async Task<bool> RemoveRow(GrainId grainId, string reminderName...
    method TestOnlyClearTable (line 263) | public async Task TestOnlyClearTable()
    method UpsertRow (line 306) | public async Task<string> UpsertRow(ReminderEntry entry)
    method ConstructReminderId (line 338) | private static string ConstructReminderId(string serviceId, GrainId gr...
    method LogInformationInitializingDynamoDBRemindersTable (line 340) | [LoggerMessage(
    type DictionaryLogRecord (line 347) | private readonly struct DictionaryLogRecord(Dictionary<string, Attribu...
      method ToString (line 349) | public override string ToString() => Utils.DictionaryToString(keys);
    method LogWarningReadReminderEntry (line 352) | [LoggerMessage(
    method LogWarningReadReminderEntries (line 359) | [LoggerMessage(
    method LogWarningReadReminderEntryRange (line 366) | [LoggerMessage(
    method LogWarningRemoveReminderEntries (line 373) | [LoggerMessage(
    method LogDebugUpsertRow (line 380) | [LoggerMessage(
    method LogWarningUpdateReminderEntry (line 386) | [LoggerMessage(

FILE: src/AWS/Orleans.Reminders.DynamoDB/Reminders/DynamoDbReminderServiceOptions.cs
  class DynamoDBReminderTableOptions (line 6) | public class DynamoDBReminderTableOptions

FILE: src/AWS/Orleans.Reminders.DynamoDB/Reminders/DynamoDbReminderStorageOptions.cs
  class DynamoDBReminderStorageOptions (line 8) | public class DynamoDBReminderStorageOptions : DynamoDBClientOptions

FILE: src/AWS/Orleans.Reminders.DynamoDB/Reminders/DynamoDbReminderStorageOptionsExtensions.cs
  class DynamoDBReminderStorageOptionsExtensions (line 9) | public static class DynamoDBReminderStorageOptionsExtensions
    method ParseConnectionString (line 23) | public static void ParseConnectionString(this DynamoDBReminderStorageO...

FILE: src/AWS/Orleans.Streaming.SQS/Hosting/ClientBuilderExtensions.cs
  class ClientBuilderExtensions (line 6) | public static class ClientBuilderExtensions
    method AddSqsStreams (line 10) | public static IClientBuilder AddSqsStreams(this IClientBuilder builder...
    method AddSqsStreams (line 20) | public static IClientBuilder AddSqsStreams(this IClientBuilder builder...

FILE: src/AWS/Orleans.Streaming.SQS/Hosting/SiloBuilderExtensions.cs
  class SiloBuilderExtensions (line 6) | public static class SiloBuilderExtensions
    method AddSqsStreams (line 11) | public static ISiloBuilder AddSqsStreams(this ISiloBuilder builder, st...
    method AddSqsStreams (line 21) | public static ISiloBuilder AddSqsStreams(this ISiloBuilder builder, st...

FILE: src/AWS/Orleans.Streaming.SQS/Storage/SQSStorage.cs
  class SQSStorage (line 18) | internal partial class SQSStorage
    method SQSStorage (line 46) | public SQSStorage(ILoggerFactory loggerFactory, string queueName, stri...
    method ParseDataConnectionString (line 54) | private void ParseDataConnectionString(string dataConnectionString)
    method CreateClient (line 83) | private void CreateClient()
    method GetQueueUrl (line 105) | private async Task<string> GetQueueUrl()
    method InitQueueAsync (line 125) | public async Task InitQueueAsync()
    method DeleteQueue (line 145) | public async Task DeleteQueue()
    method AddMessage (line 164) | public async Task AddMessage(SendMessageRequest message)
    method GetMessages (line 185) | public async Task<IEnumerable<SQSMessage>> GetMessages(int count = 1)
    method DeleteMessage (line 211) | public async Task DeleteMessage(SQSMessage message)
    method ReportErrorAndRethrow (line 233) | private void ReportErrorAndRethrow(Exception exc, string operation)
    method LogErrorSQSOperation (line 239) | [LoggerMessage(

FILE: src/AWS/Orleans.Streaming.SQS/Streams/SQSAdapter.cs
  class SQSAdapter (line 13) | internal class SQSAdapter : IQueueAdapter
    method SQSAdapter (line 26) | public SQSAdapter(Serializer<SQSBatchContainer> serializer, IConsisten...
    method CreateReceiver (line 38) | public IQueueAdapterReceiver CreateReceiver(QueueId queueId)
    method QueueMessageBatchAsync (line 43) | public async Task QueueMessageBatchAsync<T>(StreamId streamId, IEnumer...

FILE: src/AWS/Orleans.Streaming.SQS/Streams/SQSAdapterFactory.cs
  class SQSAdapterFactory (line 16) | public class SQSAdapterFactory : IQueueAdapterFactory
    method SQSAdapterFactory (line 31) | public SQSAdapterFactory(
    method Init (line 53) | public virtual void Init()
    method CreateAdapter (line 63) | public virtual Task<IQueueAdapter> CreateAdapter()
    method GetQueueAdapterCache (line 70) | public virtual IQueueAdapterCache GetQueueAdapterCache()
    method GetStreamQueueMapper (line 76) | public IStreamQueueMapper GetStreamQueueMapper()
    method GetDeliveryFailureHandler (line 86) | public Task<IStreamFailureHandler> GetDeliveryFailureHandler(QueueId q...
    method Create (line 91) | public static SQSAdapterFactory Create(IServiceProvider services, stri...

FILE: src/AWS/Orleans.Streaming.SQS/Streams/SQSAdapterReceiver.cs
  class SQSAdapterReceiver (line 17) | internal partial class SQSAdapterReceiver : IQueueAdapterReceiver
    method Create (line 28) | public static IQueueAdapterReceiver Create(Serializer<SQSBatchContaine...
    method SQSAdapterReceiver (line 38) | private SQSAdapterReceiver(Serializer<SQSBatchContainer> serializer, I...
    method Initialize (line 49) | public Task Initialize(TimeSpan timeout)
    method Shutdown (line 58) | public async Task Shutdown(TimeSpan timeout)
    method GetQueueMessagesAsync (line 73) | public async Task<IList<IBatchContainer>> GetQueueMessagesAsync(int ma...
    method MessagesDeliveredAsync (line 100) | public async Task MessagesDeliveredAsync(IList<IBatchContainer> messages)
    method LogWarningDeleteMessageException (line 123) | [LoggerMessage(

FILE: src/AWS/Orleans.Streaming.SQS/Streams/SQSBatchContainer.cs
  class SQSBatchContainer (line 15) | [Serializable]
    method SQSBatchContainer (line 44) | [JsonConstructor]
    method SQSBatchContainer (line 55) | private SQSBatchContainer(StreamId streamId, List<object> events, Dict...
    method GetEvents (line 64) | public IEnumerable<Tuple<T, StreamSequenceToken>> GetEvents<T>()
    method ToSQSMessage (line 69) | internal static SendMessageRequest ToSQSMessage<T>(
    method FromSQSMessage (line 87) | internal static SQSBatchContainer FromSQSMessage(Serializer<SQSBatchCo...
    method ImportRequestContext (line 96) | public bool ImportRequestContext()
    method ToString (line 106) | public override string ToString()

FILE: src/AWS/Orleans.Streaming.SQS/Streams/SQSStreamBuilder.cs
  class SiloSqsStreamConfigurator (line 9) | public class SiloSqsStreamConfigurator : SiloPersistentStreamConfigurator
    method SiloSqsStreamConfigurator (line 11) | public SiloSqsStreamConfigurator(string name, Action<Action<IServiceCo...
    method ConfigureSqs (line 22) | public SiloSqsStreamConfigurator ConfigureSqs(Action<OptionsBuilder<Sq...
    method ConfigureCache (line 28) | public SiloSqsStreamConfigurator ConfigureCache(int cacheSize = Simple...
    method ConfigurePartitioning (line 34) | public SiloSqsStreamConfigurator ConfigurePartitioning(int numOfpariti...
  class ClusterClientSqsStreamConfigurator (line 41) | public class ClusterClientSqsStreamConfigurator : ClusterClientPersisten...
    method ClusterClientSqsStreamConfigurator (line 43) | public ClusterClientSqsStreamConfigurator(string name, IClientBuilder ...
    method ConfigureSqs (line 54) | public ClusterClientSqsStreamConfigurator ConfigureSqs(Action<OptionsB...
    method ConfigurePartitioning (line 61) | public ClusterClientSqsStreamConfigurator ConfigurePartitioning(int nu...

FILE: src/AWS/Orleans.Streaming.SQS/Streams/SQSStreamProviderUtils.cs
  class SQSStreamProviderUtils (line 14) | public class SQSStreamProviderUtils
    method DeleteAllUsedQueues (line 20) | public static async Task DeleteAllUsedQueues(string providerName, stri...

FILE: src/AWS/Orleans.Streaming.SQS/Streams/SqsStreamOptions.cs
  class SqsOptions (line 4) | public class SqsOptions

FILE: src/AdoNet/Orleans.Clustering.AdoNet/AdoNetClusteringProviderBuilder.cs
  class AdoNetClusteringProviderBuilder (line 15) | internal sealed class AdoNetClusteringProviderBuilder : IProviderBuilder...
    method Configure (line 17) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...
    method Configure (line 41) | public void Configure(IClientBuilder builder, string name, IConfigurat...

FILE: src/AdoNet/Orleans.Clustering.AdoNet/AdoNetHostingExtensions.cs
  class AdoNetHostingExtensions (line 14) | public static class AdoNetHostingExtensions
    method UseAdoNetClustering (line 31) | public static ISiloBuilder UseAdoNetClustering(
    method UseAdoNetClustering (line 63) | public static ISiloBuilder UseAdoNetClustering(
    method UseAdoNetClustering (line 91) | public static IClientBuilder UseAdoNetClustering(
    method UseAdoNetClustering (line 123) | public static IClientBuilder UseAdoNetClustering(

FILE: src/AdoNet/Orleans.Clustering.AdoNet/Messaging/AdoNetClusteringTable.cs
  class AdoNetClusteringTable (line 10) | public partial class AdoNetClusteringTable : IMembershipTable
    method AdoNetClusteringTable (line 18) | public AdoNetClusteringTable(
    method InitializeMembershipTable (line 30) | public async Task InitializeMembershipTable(bool tryInitTableVersion)
    method ReadRow (line 53) | public async Task<MembershipTableData> ReadRow(SiloAddress key)
    method ReadAll (line 67) | public async Task<MembershipTableData> ReadAll()
    method InsertRow (line 81) | public async Task<bool> InsertRow(MembershipEntry entry, TableVersion ...
    method UpdateRow (line 112) | public async Task<bool> UpdateRow(MembershipEntry entry, string etag, ...
    method UpdateIAmAlive (line 143) | public async Task UpdateIAmAlive(MembershipEntry entry)
    method DeleteMembershipTableEntries (line 162) | public async Task DeleteMembershipTableEntries(string clusterId)
    method CleanupDefunctSiloEntries (line 176) | public async Task CleanupDefunctSiloEntries(DateTimeOffset beforeDate)
    method InitTableAsync (line 190) | private async Task<bool> InitTableAsync()
    method LogTraceInitializeMembershipTable (line 203) | [LoggerMessage(
    method LogInfoCreatedNewTableVersionRow (line 209) | [LoggerMessage(
    method LogTraceReadRow (line 215) | [LoggerMessage(
    method LogDebugReadRowFailed (line 221) | [LoggerMessage(
    method LogTraceReadAll (line 227) | [LoggerMessage(
    method LogDebugReadAllFailed (line 233) | [LoggerMessage(
    method LogTraceInsertRow (line 239) | [LoggerMessage(
    method LogDebugInsertRowAbortedNullEntry (line 245) | [LoggerMessage(
    method LogDebugInsertRowAbortedNullTableVersion (line 251) | [LoggerMessage(
    method LogDebugInsertRowFailed (line 257) | [LoggerMessage(
    method LogTraceUpdateRow (line 263) | [LoggerMessage(
    method LogDebugUpdateRowAbortedNullEntry (line 269) | [LoggerMessage(
    method LogDebugUpdateRowAbortedNullTableVersion (line 275) | [LoggerMessage(
    method LogDebugUpdateRowFailed (line 281) | [LoggerMessage(
    method LogTraceUpdateIAmAlive (line 287) | [LoggerMessage(
    method LogDebugUpdateIAmAliveAbortedNullEntry (line 293) | [LoggerMessage(
    method LogDebugUpdateIAmAliveFailed (line 299) | [LoggerMessage(
    method LogTraceDeleteMembershipTableEntries (line 305) | [LoggerMessage(
    method LogDebugDeleteMembershipTableEntriesFailed (line 311) | [LoggerMessage(
    method LogTraceCleanupDefunctSiloEntries (line 317) | [LoggerMessage(
    method LogDebugCleanupDefunctSiloEntriesFailed (line 323) | [LoggerMessage(
    method LogTraceInsertSiloMembershipVersionFailed (line 329) | [LoggerMessage(

FILE: src/AdoNet/Orleans.Clustering.AdoNet/Messaging/AdoNetGatewayListProvider.cs
  class AdoNetGatewayListProvider (line 12) | public partial class AdoNetGatewayListProvider : IGatewayListProvider
    method AdoNetGatewayListProvider (line 21) | public AdoNetGatewayListProvider(
    method InitializeGatewayListProvider (line 45) | public async Task InitializeGatewayListProvider()
    method GetGateways (line 51) | public async Task<IList<Uri>> GetGateways()
    method LogTraceInitializeGatewayListProvider (line 65) | [LoggerMessage(
    method LogTraceGetGateways (line 71) | [LoggerMessage(
    method LogDebugGatewaysFailed (line 77) | [LoggerMessage(

FILE: src/AdoNet/Orleans.Clustering.AdoNet/Migrations/PostgreSQL-Clustering-3.6.0.sql
  function update_i_am_alive_time (line 16) | CREATE OR REPLACE FUNCTION update_i_am_alive_time(
  function insert_membership (line 39) | CREATE OR REPLACE FUNCTION insert_membership(
  function update_membership (line 112) | CREATE OR REPLACE FUNCTION update_membership(

FILE: src/AdoNet/Orleans.Clustering.AdoNet/MySQL-Clustering.sql
  type OrleansMembershipVersionTable (line 2) | CREATE TABLE OrleansMembershipVersionTable
  type OrleansMembershipTable (line 12) | CREATE TABLE OrleansMembershipTable

FILE: src/AdoNet/Orleans.Clustering.AdoNet/Options/AdoNetClusteringClientOptions.cs
  class AdoNetClusteringClientOptions (line 3) | public class AdoNetClusteringClientOptions

FILE: src/AdoNet/Orleans.Clustering.AdoNet/Options/AdoNetClusteringClientOptionsValidator.cs
  class AdoNetClusteringClientOptionsValidator (line 10) | public class AdoNetClusteringClientOptionsValidator : IConfigurationVali...
    method AdoNetClusteringClientOptionsValidator (line 14) | public AdoNetClusteringClientOptionsValidator(IOptions<AdoNetClusterin...
    method ValidateConfiguration (line 20) | public void ValidateConfiguration()

FILE: src/AdoNet/Orleans.Clustering.AdoNet/Options/AdoNetClusteringSiloOptions.cs
  class AdoNetClusteringSiloOptions (line 6) | public class AdoNetClusteringSiloOptions

FILE: src/AdoNet/Orleans.Clustering.AdoNet/Options/AdoNetReminderTableOptionsValidator.cs
  class AdoNetClusteringSiloOptionsValidator (line 10) | public class AdoNetClusteringSiloOptionsValidator : IConfigurationValidator
    method AdoNetClusteringSiloOptionsValidator (line 14) | public AdoNetClusteringSiloOptionsValidator(IOptions<AdoNetClusteringS...
    method ValidateConfiguration (line 20) | public void ValidateConfiguration()

FILE: src/AdoNet/Orleans.Clustering.AdoNet/Oracle-Clustering.sql
  type "ORLEANSMEMBERSHIPVERSIONTABLE" (line 2) | CREATE TABLE "ORLEANSMEMBERSHIPVERSIONTABLE"

FILE: src/AdoNet/Orleans.Clustering.AdoNet/PostgreSQL-Clustering.sql
  type OrleansMembershipVersionTable (line 2) | CREATE TABLE OrleansMembershipVersionTable
  type OrleansMembershipTable (line 12) | CREATE TABLE OrleansMembershipTable
  function update_i_am_alive_time (line 30) | CREATE FUNCTION update_i_am_alive_time(
  function insert_membership_version (line 67) | CREATE FUNCTION insert_membership_version(
  function insert_membership (line 107) | CREATE FUNCTION insert_membership(
  function update_membership (line 198) | CREATE FUNCTION update_membership(

FILE: src/AdoNet/Orleans.Clustering.AdoNet/SQLServer-Clustering.sql
  type OrleansMembershipTable (line 3) | CREATE TABLE OrleansMembershipVersionTable

FILE: src/AdoNet/Orleans.GrainDirectory.AdoNet/AdoNetGrainDirectory.cs
  class AdoNetGrainDirectory (line 3) | internal sealed partial class AdoNetGrainDirectory(string name, AdoNetGr...
    method Lookup (line 14) | public async Task<GrainAddress?> Lookup(GrainId grainId)
    method Register (line 38) | public async Task<GrainAddress?> Register(GrainAddress address)
    method Unregister (line 67) | public async Task Unregister(GrainAddress address)
    method UnregisterSilos (line 96) | public async Task UnregisterSilos(List<SiloAddress> siloAddresses)
    method GetQueriesAsync (line 136) | private ValueTask<RelationalOrleansQueries> GetQueriesAsync()
    method LogFailedToLookup (line 167) | [LoggerMessage(1, LogLevel.Error, "Failed to lookup({ClusterId}, {Grai...
    method LogRegistered (line 170) | [LoggerMessage(2, LogLevel.Debug, "Registered ({ClusterId}, {GrainId},...
    method LogFailedToRegister (line 173) | [LoggerMessage(3, LogLevel.Error, "Failed to register ({ClusterId}, {G...
    method LogUnregistered (line 176) | [LoggerMessage(4, LogLevel.Debug, "Unregistered ({ClusterId}, {GrainId...
    method LogFailedToUnregister (line 179) | [LoggerMessage(5, LogLevel.Error, "Failed to unregister ({ClusterId}, ...
    method LogUnregisteredSilos (line 182) | [LoggerMessage(6, LogLevel.Debug, "Unregistered {Count} activations fr...
    method LogFailedToUnregisterSilos (line 185) | [LoggerMessage(7, LogLevel.Error, "Failed to unregister silos {SiloAdd...

FILE: src/AdoNet/Orleans.GrainDirectory.AdoNet/AdoNetGrainDirectoryEntry.cs
  type AdoNetGrainDirectoryEntry (line 6) | internal sealed record AdoNetGrainDirectoryEntry(

FILE: src/AdoNet/Orleans.GrainDirectory.AdoNet/AdoNetGrainDirectoryOptions.cs
  class AdoNetGrainDirectoryOptions (line 6) | public class AdoNetGrainDirectoryOptions

FILE: src/AdoNet/Orleans.GrainDirectory.AdoNet/Hosting/AdoNetGrainDirectoryProviderBuilder.cs
  class AdoNetGrainDirectoryProviderBuilder (line 7) | internal sealed class AdoNetGrainDirectoryProviderBuilder : IProviderBui...
    method Configure (line 9) | public void Configure(ISiloBuilder builder, string? name, IConfigurati...

FILE: src/AdoNet/Orleans.GrainDirectory.AdoNet/Hosting/AdoNetGrainDirectoryServiceCollectionExtensions.cs
  class AdoNetGrainDirectoryServiceCollectionExtensions (line 8) | internal static class AdoNetGrainDirectoryServiceCollectionExtensions
    method AddAdoNetGrainDirectory (line 10) | internal static IServiceCollection AddAdoNetGrainDirectory(

FILE: src/AdoNet/Orleans.GrainDirectory.AdoNet/Hosting/AdoNetGrainDirectorySiloBuilderExtensions.cs
  class AdoNetGrainDirectorySiloBuilderExtensions (line 3) | public static class AdoNetGrainDirectorySiloBuilderExtensions
    method UseAdoNetGrainDirectoryAsDefault (line 5) | public static ISiloBuilder UseAdoNetGrainDirectoryAsDefault(
    method UseAdoNetGrainDirectoryAsDefault (line 10) | public static ISiloBuilder UseAdoNetGrainDirectoryAsDefault(
    method AddAdoNetGrainDirectory (line 15) | public static ISiloBuilder AddAdoNetGrainDirectory(
    method AddAdoNetGrainDirectory (line 21) | public static ISiloBuilder AddAdoNetGrainDirectory(

FILE: src/AdoNet/Orleans.GrainDirectory.AdoNet/MySQL-GrainDirectory.sql
  type OrleansGrainDirectory (line 11) | CREATE TABLE OrleansGrainDirectory
  type TempSiloAddresses (line 199) | CREATE TEMPORARY TABLE TempSiloAddresses

FILE: src/AdoNet/Orleans.GrainDirectory.AdoNet/Options/AdoNetGrainDirectoryOptionsValidator.cs
  class AdoNetGrainDirectoryOptionsValidator (line 8) | public class AdoNetGrainDirectoryOptionsValidator(AdoNetGrainDirectoryOp...
    method ValidateConfiguration (line 11) | public void ValidateConfiguration()

FILE: src/AdoNet/Orleans.GrainDirectory.AdoNet/PostgreSQL-GrainDirectory.sql
  type OrleansGrainDirectory (line 11) | CREATE TABLE OrleansGrainDirectory
  function RegisterGrainActivation (line 41) | CREATE OR REPLACE FUNCTION RegisterGrainActivation(
  function UnregisterGrainActivation (line 106) | CREATE OR REPLACE FUNCTION UnregisterGrainActivation(
  function LookupGrainActivation (line 143) | CREATE OR REPLACE FUNCTION LookupGrainActivation(
  function UnregisterGrainActivations (line 189) | CREATE OR REPLACE FUNCTION UnregisterGrainActivations(

FILE: src/AdoNet/Orleans.GrainDirectory.AdoNet/SQLServer-GrainDirectory.sql
  type OrleansGrainDirectory (line 11) | CREATE TABLE OrleansGrainDirectory

FILE: src/AdoNet/Orleans.Persistence.AdoNet/AdoNetGrainStorageProviderBuilder.cs
  class AdoNetGrainStorageProviderBuilder (line 15) | internal sealed class AdoNetGrainStorageProviderBuilder : IProviderBuild...
    method Configure (line 17) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Migrations/PostgreSQL-Persistence-3.6.0.sql
  function writetostorage (line 12) | CREATE OR REPLACE FUNCTION writetostorage(

FILE: src/AdoNet/Orleans.Persistence.AdoNet/MySQL-Persistence.sql
  type OrleansStorage (line 46) | CREATE TABLE OrleansStorage

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Options/AdoNetGrainStorageOptions.cs
  class AdoNetGrainStorageOptions (line 11) | public class AdoNetGrainStorageOptions : IStorageProviderSerializerOptions
    method UseOrleans3CompatibleHasher (line 51) | public void UseOrleans3CompatibleHasher()
  class AdoNetGrainStorageOptionsValidator (line 66) | public class AdoNetGrainStorageOptionsValidator : IConfigurationValidator
    method AdoNetGrainStorageOptionsValidator (line 76) | public AdoNetGrainStorageOptionsValidator(AdoNetGrainStorageOptions co...
    method ValidateConfiguration (line 83) | public void ValidateConfiguration()
  class DefaultAdoNetGrainStorageOptionsHashPickerConfigurator (line 105) | public class DefaultAdoNetGrainStorageOptionsHashPickerConfigurator : IP...
    method PostConfigure (line 107) | public void PostConfigure(string name, AdoNetGrainStorageOptions options)

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Oracle-Persistence.sql
  type "ORLEANSSTORAGE" (line 46) | CREATE TABLE "ORLEANSSTORAGE"
  type "ORLEANSSTORAGE" (line 79) | CREATE INDEX "IX_ORLEANSSTORAGE" ON "ORLEANSSTORAGE" ("GRAINIDHASH", "GR...

FILE: src/AdoNet/Orleans.Persistence.AdoNet/PostgreSQL-Persistence.sql
  type OrleansStorage (line 1) | CREATE TABLE OrleansStorage
  type ix_orleansstorage (line 15) | CREATE INDEX ix_orleansstorage
  function writetostorage (line 19) | CREATE OR REPLACE FUNCTION writetostorage(

FILE: src/AdoNet/Orleans.Persistence.AdoNet/SQLServer-Persistence.sql
  type IX_OrleansStorage (line 83) | CREATE NONCLUSTERED INDEX IX_OrleansStorage ON OrleansStorage(GrainIdHas...

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Sqlite-Persistence.sql
  type OrleansStorage (line 46) | CREATE TABLE OrleansStorage
  type IX_OrleansStorage (line 76) | CREATE INDEX IX_OrleansStorage ON OrleansStorage(GrainIdHash, GrainTypeH...

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/AdoGrainKey.cs
  class AdoGrainKey (line 12) | internal class AdoGrainKey
    method AdoGrainKey (line 26) | public AdoGrainKey(long key, string keyExtension)
    method AdoGrainKey (line 37) | public AdoGrainKey(Guid key, string keyExtension)
    method AdoGrainKey (line 49) | public AdoGrainKey(string key)
    method GetHashBytes (line 60) | public byte[] GetHashBytes()
    method ToString (line 93) | public override string ToString()
    method ToGuidKey (line 116) | private static Guid ToGuidKey(long n0Key, long n1Key)

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/AdoNetGrainStorage.cs
  type RelationalStorageProviderCodes (line 27) | internal enum RelationalStorageProviderCodes
  class AdoNetGrainStorageFactory (line 47) | public static class AdoNetGrainStorageFactory
    method Create (line 49) | public static AdoNetGrainStorage Create(IServiceProvider services, str...
  class AdoNetGrainStorage (line 71) | [DebuggerDisplay("Name = {Name}, ConnectionString = {Storage.ConnectionS...
    method AdoNetGrainStorage (line 126) | public AdoNetGrainStorage(
    method Participate (line 142) | public void Participate(ISiloLifecycle lifecycle)
    method ClearStateAsync (line 149) | public async Task ClearStateAsync<T>(string grainType, GrainId grainRe...
    method ReadStateAsync (line 217) | public async Task ReadStateAsync<T>(string grainType, GrainId grainRef...
    method WriteStateAsync (line 282) | public async Task WriteStateAsync<T>(string grainType, GrainId grainRe...
    method Init (line 334) | private async Task Init(CancellationToken cancellationToken)
    method Close (line 366) | private Task Close(CancellationToken token)
    method CheckVersionInconsistency (line 384) | private static InconsistentStateException CheckVersionInconsistency(st...
    method GrainIdAndExtensionAsString (line 406) | private static AdoGrainKey GrainIdAndExtensionAsString(GrainId grainId)
    method ExtractBaseClass (line 428) | private static string ExtractBaseClass(string typeName)
    method CreateInstance (line 483) | private T CreateInstance<T>() => _activatorProvider.GetActivator<T>()....
    method LogTraceClearingGrainState (line 485) | [LoggerMessage(
    method LogErrorClearingGrainState (line 492) | [LoggerMessage(
    method LogTraceClearedGrainState (line 499) | [LoggerMessage(
    method LogTraceReadingGrainState (line 506) | [LoggerMessage(
    method LogTraceNullGrainStateRead (line 513) | [LoggerMessage(
    method LogTraceReadGrainState (line 520) | [LoggerMessage(
    method LogErrorReadingGrainState (line 527) | [LoggerMessage(
    method LogTraceWritingGrainState (line 534) | [LoggerMessage(
    method LogErrorWritingGrainState (line 541) | [LoggerMessage(
    method LogTraceWroteGrainState (line 548) | [LoggerMessage(
    type ConnectionStringLogRecord (line 555) | private readonly struct ConnectionStringLogRecord(string connectionStr...
      method ToString (line 557) | public override string ToString() => ConfigUtilities.RedactConnectio...
    method LogInfoInitializedStorageProvider (line 560) | [LoggerMessage(

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/AdoNetGrainStorageServiceCollectionExtensions.cs
  class AdoNetGrainStorageServiceCollectionExtensions (line 17) | public static class AdoNetGrainStorageServiceCollectionExtensions
    method AddAdoNetGrainStorage (line 25) | public static IServiceCollection AddAdoNetGrainStorage(this IServiceCo...
    method AddAdoNetGrainStorage (line 36) | public static IServiceCollection AddAdoNetGrainStorage(this IServiceCo...
    method AddAdoNetGrainStorageAsDefault (line 47) | public static IServiceCollection AddAdoNetGrainStorageAsDefault(this I...
    method AddAdoNetGrainStorage (line 58) | public static IServiceCollection AddAdoNetGrainStorage(this IServiceCo...

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/AdoNetGrainStorageSiloBuilderExtensions.cs
  class AdoNetGrainStorageSiloBuilderExtensions (line 8) | public static class AdoNetGrainStorageSiloBuilderExtensions
    method AddAdoNetGrainStorageAsDefault (line 16) | public static ISiloBuilder AddAdoNetGrainStorageAsDefault(this ISiloBu...
    method AddAdoNetGrainStorage (line 27) | public static ISiloBuilder AddAdoNetGrainStorage(this ISiloBuilder bui...
    method AddAdoNetGrainStorageAsDefault (line 38) | public static ISiloBuilder AddAdoNetGrainStorageAsDefault(this ISiloBu...
    method AddAdoNetGrainStorage (line 49) | public static ISiloBuilder AddAdoNetGrainStorage(this ISiloBuilder bui...

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/IHasher.cs
  type IHasher (line 8) | public interface IHasher
    method Hash (line 20) | int Hash(byte[] data);

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/IStorageHashPicker.cs
  type IStorageHasherPicker (line 11) | public interface IStorageHasherPicker
    method PickHasher (line 26) | IHasher PickHasher<T>(string serviceId, string storageProviderInstance...

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/JenkinsHash.cs
  class JenkinsHash (line 10) | internal static class JenkinsHash
    method Mix (line 12) | private static void Mix(ref uint aa, ref uint bb, ref uint cc)
    method ComputeHash (line 34) | public static uint ComputeHash(ReadOnlySpan<byte> data)

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/Orleans3CompatibleHasher.cs
  class Orleans3CompatibleHasher (line 8) | internal class Orleans3CompatibleHasher : IHasher
    method Hash (line 18) | public int Hash(byte[] data) => Hash(data.AsSpan());
    method Hash (line 23) | public int Hash(ReadOnlySpan<byte> data)

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/Orleans3CompatibleStorageHashPicker.cs
  class Orleans3CompatibleStorageHashPicker (line 9) | public class Orleans3CompatibleStorageHashPicker : IStorageHasherPicker
    method Orleans3CompatibleStorageHashPicker (line 21) | public Orleans3CompatibleStorageHashPicker()
    method PickHasher (line 30) | public IHasher PickHasher<T>(

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/Orleans3CompatibleStringKeyHasher.cs
  class Orleans3CompatibleStringKeyHasher (line 10) | internal class Orleans3CompatibleStringKeyHasher : IHasher
    method Orleans3CompatibleStringKeyHasher (line 15) | public Orleans3CompatibleStringKeyHasher(Orleans3CompatibleHasher inne...
    method Hash (line 29) | public int Hash(byte[] data)
    method IsGrainTypeName (line 69) | private bool IsGrainTypeName(byte[] data)

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/OrleansDefaultHasher.cs
  class OrleansDefaultHasher (line 6) | public sealed class OrleansDefaultHasher: IHasher
    method Hash (line 16) | public int Hash(byte[] data) => (int)StableHash.ComputeHash(data);

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/RelationalStorageProviderQueries.cs
  class RelationalStorageProviderQueries (line 7) | public class RelationalStorageProviderQueries
    method RelationalStorageProviderQueries (line 36) | public RelationalStorageProviderQueries(string writeToStorage, string ...

FILE: src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/StorageHasherPicker.cs
  class StorageHasherPicker (line 13) | public class StorageHasherPicker: IStorageHasherPicker
    method StorageHasherPicker (line 25) | public StorageHasherPicker(IEnumerable<IHasher> hashProviders)
    method PickHasher (line 39) | public IHasher PickHasher<T>(string serviceId, string storageProviderI...

FILE: src/AdoNet/Orleans.Reminders.AdoNet/AdoNetRemindersProviderBuilder.cs
  class AdoNetRemindersProviderBuilder (line 14) | internal sealed class AdoNetRemindersProviderBuilder : IProviderBuilder<...
    method Configure (line 16) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...

FILE: src/AdoNet/Orleans.Reminders.AdoNet/Migrations/PostgreSQL-Reminders-3.6.0.sql
  function upsert_reminder_row (line 12) | CREATE OR REPLACE FUNCTION upsert_reminder_row(

FILE: src/AdoNet/Orleans.Reminders.AdoNet/MySQL-Reminders.sql
  type OrleansRemindersTable (line 2) | CREATE TABLE OrleansRemindersTable

FILE: src/AdoNet/Orleans.Reminders.AdoNet/Oracle-Reminders.sql
  type "ORLEANSREMINDERSTABLE" (line 2) | CREATE TABLE "ORLEANSREMINDERSTABLE"

FILE: src/AdoNet/Orleans.Reminders.AdoNet/PostgreSQL-Reminders.sql
  type OrleansRemindersTable (line 2) | CREATE TABLE OrleansRemindersTable
  function upsert_reminder_row (line 15) | CREATE FUNCTION upsert_reminder_row(
  function delete_reminder_row (line 142) | CREATE FUNCTION delete_reminder_row(

FILE: src/AdoNet/Orleans.Reminders.AdoNet/ReminderService/AdoNetReminderTable.cs
  class AdoNetReminderTable (line 9) | internal sealed class AdoNetReminderTable : IReminderTable
    method AdoNetReminderTable (line 15) | public AdoNetReminderTable(
    method Init (line 23) | public async Task Init()
    method ReadRows (line 28) | public Task<ReminderTableData> ReadRows(GrainId grainId)
    method ReadRows (line 33) | public Task<ReminderTableData> ReadRows(uint beginHash, uint endHash)
    method ReadRow (line 38) | public Task<ReminderEntry> ReadRow(GrainId grainId, string reminderName)
    method UpsertRow (line 43) | public Task<string> UpsertRow(ReminderEntry entry)
    method RemoveRow (line 53) | public Task<bool> RemoveRow(GrainId grainId, string reminderName, stri...
    method TestOnlyClearTable (line 58) | public Task TestOnlyClearTable()

FILE: src/AdoNet/Orleans.Reminders.AdoNet/ReminderService/AdoNetReminderTableOptions.cs
  class AdoNetReminderTableOptions (line 6) | public class AdoNetReminderTableOptions

FILE: src/AdoNet/Orleans.Reminders.AdoNet/ReminderService/AdoNetReminderTableOptionsValidator.cs
  class AdoNetReminderTableOptionsValidator (line 10) | public class AdoNetReminderTableOptionsValidator : IConfigurationValidator
    method AdoNetReminderTableOptionsValidator (line 14) | public AdoNetReminderTableOptionsValidator(IOptions<AdoNetReminderTabl...
    method ValidateConfiguration (line 20) | public void ValidateConfiguration()

FILE: src/AdoNet/Orleans.Reminders.AdoNet/SQLServer-Reminders.sql
  type OrleansRemindersTable (line 3) | CREATE TABLE OrleansRemindersTable

FILE: src/AdoNet/Orleans.Reminders.AdoNet/SiloBuilderReminderExtensions.cs
  class SiloBuilderReminderExtensions (line 14) | public static class SiloBuilderReminderExtensions
    method UseAdoNetReminderService (line 23) | public static ISiloBuilder UseAdoNetReminderService(
    method UseAdoNetReminderService (line 37) | public static ISiloBuilder UseAdoNetReminderService(
    method UseAdoNetReminderService (line 51) | public static IServiceCollection UseAdoNetReminderService(this IServic...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetBatchContainer.cs
  class AdoNetBatchContainer (line 10) | [GenerateSerializer]
    method AdoNetBatchContainer (line 14) | public AdoNetBatchContainer(StreamId streamId, List<object> events, Di...
    method GetEvents (line 49) | public IEnumerable<Tuple<T, StreamSequenceToken>> GetEvents<T>()
    method ImportRequestContext (line 58) | public bool ImportRequestContext()
    method FromMessage (line 76) | public static AdoNetBatchContainer FromMessage(Serializer<AdoNetBatchC...
    method ToMessagePayload (line 91) | public static byte[] ToMessagePayload(Serializer<AdoNetBatchContainer>...
    method ToString (line 104) | public override string ToString() => $"[{nameof(AdoNetBatchContainer)}...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetQueueAdapter.cs
  class AdoNetQueueAdapter (line 6) | internal partial class AdoNetQueueAdapter(string name, AdoNetStreamOptio...
    method CreateReceiver (line 25) | public IQueueAdapterReceiver CreateReceiver(QueueId queueId)
    method QueueMessageBatchAsync (line 34) | public async Task QueueMessageBatchAsync<T>(StreamId streamId, IEnumer...
    method LogFailedToQueueStreamMessage (line 67) | [LoggerMessage(1, LogLevel.Error, "Failed to queue stream message with...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetQueueAdapterFactory.cs
  class AdoNetQueueAdapterFactory (line 6) | internal class AdoNetQueueAdapterFactory : IQueueAdapterFactory
    method AdoNetQueueAdapterFactory (line 8) | public AdoNetQueueAdapterFactory(string name, AdoNetStreamOptions stre...
    method GetQueriesAsync (line 44) | private ValueTask<RelationalOrleansQueries> GetQueriesAsync()
    method CreateAdapter (line 73) | public async Task<IQueueAdapter> CreateAdapter()
    method GetDeliveryFailureHandler (line 80) | public async Task<IStreamFailureHandler> GetDeliveryFailureHandler(Que...
    method GetQueueAdapterCache (line 87) | public IQueueAdapterCache GetQueueAdapterCache() => _cache;
    method GetStreamQueueMapper (line 89) | public IStreamQueueMapper GetStreamQueueMapper() => _streamQueueMapper;
    method Create (line 94) | public static IQueueAdapterFactory Create(IServiceProvider serviceProv...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetQueueAdapterReceiver.cs
  class AdoNetQueueAdapterReceiver (line 6) | internal partial class AdoNetQueueAdapterReceiver(string providerId, str...
    method Initialize (line 23) | public Task Initialize(TimeSpan timeout) => Task.CompletedTask;
    method Shutdown (line 28) | public async Task Shutdown(TimeSpan timeout)
    method GetQueueMessagesAsync (line 49) | public async Task<IList<IBatchContainer>> GetQueueMessagesAsync(int ma...
    method MessagesDeliveredAsync (line 93) | public async Task MessagesDeliveredAsync(IList<IBatchContainer> messages)
    method LogDequeueFailed (line 128) | [LoggerMessage(1, LogLevel.Error, "Failed to get messages from ({Servi...
    method LogConfirmationFailed (line 131) | [LoggerMessage(2, LogLevel.Error, "Failed to confirm messages for ({Se...
    method LogShutdownFault (line 134) | [LoggerMessage(3, LogLevel.Warning, "Handled fault while shutting down...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetStreamConfirmation.cs
  type AdoNetStreamConfirmation (line 6) | internal record AdoNetStreamConfirmation(

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetStreamConfirmationAck.cs
  type AdoNetStreamConfirmationAck (line 6) | internal record AdoNetStreamConfirmationAck(

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetStreamDeadLetter.cs
  type AdoNetStreamDeadLetter (line 6) | internal record AdoNetStreamDeadLetter(

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetStreamFailureHandler.cs
  class AdoNetStreamFailureHandler (line 6) | internal partial class AdoNetStreamFailureHandler(bool faultOnFailure, A...
    method OnDeliveryFailure (line 18) | public Task OnDeliveryFailure(GuidId subscriptionId, string streamProv...
    method OnSubscriptionFailure (line 23) | public Task OnSubscriptionFailure(GuidId subscriptionId, string stream...
    method OnFailureAsync (line 28) | private async Task OnFailureAsync(string streamProviderName, StreamId ...
    method LogMovedMessage (line 50) | [LoggerMessage(1, LogLevel.Warning, "Moved failed delivery to dead let...
    method LogFailedToMoveMessage (line 53) | [LoggerMessage(2, LogLevel.Error, "Failed to move failed delivery to d...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetStreamMessage.cs
  type AdoNetStreamMessage (line 6) | internal record AdoNetStreamMessage(

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetStreamMessageAck.cs
  type AdoNetStreamMessageAck (line 7) | internal record AdoNetStreamMessageAck(

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetStreamOptions.cs
  class AdoNetStreamOptions (line 6) | public class AdoNetStreamOptions

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetStreamOptionsValidator.cs
  class AdoNetStreamOptionsValidator (line 8) | public class AdoNetStreamOptionsValidator(AdoNetStreamOptions options, s...
    method ValidateConfiguration (line 11) | public void ValidateConfiguration()

FILE: src/AdoNet/Orleans.Streaming.AdoNet/AdoNetStreamQueueMapper.cs
  class AdoNetStreamQueueMapper (line 6) | internal class AdoNetStreamQueueMapper(IConsistentRingStreamQueueMapper ...
    method GetAdoNetQueueId (line 31) | public string GetAdoNetQueueId(StreamId streamId) => _byStreamLookup.G...
    method GetAdoNetQueueId (line 36) | public string GetAdoNetQueueId(QueueId queueId) => _byQueueLookup.GetO...
    method GetAllAdoNetQueueIds (line 41) | public IEnumerable<string> GetAllAdoNetQueueIds()

FILE: src/AdoNet/Orleans.Streaming.AdoNet/Extensions.cs
  class Extensions (line 6) | internal static class Extensions
    method Int32Ceiling (line 9) | public static int Int32Ceiling(this double value) => (int)Math.Ceiling...
    method TotalSecondsCeiling (line 14) | public static int TotalSecondsCeiling(this TimeSpan value) => value.To...
    method SecondsCeiling (line 19) | public static TimeSpan SecondsCeiling(this TimeSpan value) => TimeSpan...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/Hosting/ClusterClientAdoNetStreamConfigurator.cs
  class ClusterClientAdoNetStreamConfigurator (line 8) | public class ClusterClientAdoNetStreamConfigurator : ClusterClientPersis...
    method ClusterClientAdoNetStreamConfigurator (line 10) | public ClusterClientAdoNetStreamConfigurator(string name, IClientBuild...
    method ConfigureAdoNet (line 29) | public ClusterClientAdoNetStreamConfigurator ConfigureAdoNet(Action<Op...
    method ConfigureCache (line 38) | public ClusterClientAdoNetStreamConfigurator ConfigureCache(int cacheS...
    method ConfigurePartitioning (line 45) | public ClusterClientAdoNetStreamConfigurator ConfigurePartitioning(int...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/Hosting/ClusterClientAdoNetStreamExtensions.cs
  class ClusterClientAdoNetStreamExtensions (line 6) | public static class ClusterClientAdoNetStreamExtensions
    method AddAdoNetStreams (line 11) | public static IClientBuilder AddAdoNetStreams(this IClientBuilder buil...
    method AddAdoNetStreams (line 26) | public static IClientBuilder AddAdoNetStreams(this IClientBuilder buil...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/Hosting/SiloAdoNetStreamConfigurator.cs
  class SiloAdoNetStreamConfigurator (line 8) | public class SiloAdoNetStreamConfigurator : SiloPersistentStreamConfigur...
    method SiloAdoNetStreamConfigurator (line 10) | public SiloAdoNetStreamConfigurator(string name, Action<Action<IServic...
    method ConfigureAdoNet (line 29) | public SiloAdoNetStreamConfigurator ConfigureAdoNet(Action<OptionsBuil...
    method ConfigureCache (line 38) | public SiloAdoNetStreamConfigurator ConfigureCache(int cacheSize = Sim...
    method ConfigurePartitioning (line 45) | public SiloAdoNetStreamConfigurator ConfigurePartitioning(int partitio...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/Hosting/SiloBuilderAdoNetStreamExtensions.cs
  class SiloBuilderAdoNetStreamExtensions (line 6) | public static class SiloBuilderAdoNetStreamExtensions
    method AddAdoNetStreams (line 11) | public static ISiloBuilder AddAdoNetStreams(this ISiloBuilder builder,...
    method AddAdoNetStreams (line 26) | public static ISiloBuilder AddAdoNetStreams(this ISiloBuilder builder,...

FILE: src/AdoNet/Orleans.Streaming.AdoNet/MySQL-Streaming.sql
  type OrleansStreamMessageSequence (line 1) | CREATE TABLE OrleansStreamMessageSequence
  type OrleansStreamMessage (line 11) | CREATE TABLE OrleansStreamMessage
  type _Batch (line 268) | CREATE TEMPORARY TABLE _Batch AS
  type _ItemsTable (line 361) | CREATE TEMPORARY TABLE _ItemsTable
  type _Batch (line 402) | CREATE TEMPORARY TABLE _Batch AS
  type Deleted (line 491) | CREATE TEMPORARY TABLE Deleted AS
  type _Batch (line 576) | CREATE TEMPORARY TABLE _Batch AS
  type _Batch (line 682) | CREATE TEMPORARY TABLE _Batch AS

FILE: src/AdoNet/Orleans.Streaming.AdoNet/PostgreSQL-Streaming.sql
  type OrleansStreamMessage (line 8) | CREATE TABLE OrleansStreamMessage
  type OrleansStreamDeadLetter (line 30) | CREATE TABLE OrleansStreamDeadLetter
  type OrleansStreamControl (line 54) | CREATE TABLE OrleansStreamControl
  function QueueStreamMessage (line 69) | CREATE OR REPLACE FUNCTION QueueStreamMessage
  function GetStreamMessages (line 139) | CREATE OR REPLACE FUNCTION GetStreamMessages
  function ConfirmStreamMessages (line 300) | CREATE OR REPLACE FUNCTION ConfirmStreamMessages

FILE: src/AdoNet/Orleans.Streaming.AdoNet/SQLServer-Streaming.sql
  type OrleansStreamMessage (line 38) | CREATE TABLE OrleansStreamMessage

FILE: src/AdoNet/Shared/MySQL-Main.sql
  type OrleansQuery (line 29) | CREATE TABLE OrleansQuery

FILE: src/AdoNet/Shared/Oracle-Main.sql
  type "ORLEANSQUERY" (line 30) | CREATE TABLE "ORLEANSQUERY"

FILE: src/AdoNet/Shared/PostgreSQL-Main.sql
  type OrleansQuery (line 34) | CREATE TABLE OrleansQuery

FILE: src/AdoNet/Shared/SQLServer-Main.sql
  type OrleansQuery (line 41) | CREATE TABLE OrleansQuery

FILE: src/AdoNet/Shared/Sqlite-Main.sql
  type OrleansQuery (line 30) | CREATE TABLE OrleansQuery

FILE: src/AdoNet/Shared/Storage/IRelationalStorage.cs
  type IRelationalStorage (line 29) | internal interface IRelationalStorage
    method ReadAsync (line 81) | Task<IEnumerable<TResult>> ReadAsync<TResult>(string query, Action<IDb...
    method ExecuteAsync (line 104) | Task<int> ExecuteAsync(string query, Action<IDbCommand> parameterProvi...

FILE: src/Azure/Orleans.Clustering.AzureStorage/AzureBasedMembershipTable.cs
  class AzureBasedMembershipTable (line 18) | internal partial class AzureBasedMembershipTable : IMembershipTable
    method AzureBasedMembershipTable (line 26) | public AzureBasedMembershipTable(
    method InitializeMembershipTable (line 37) | public async Task InitializeMembershipTable(bool tryInitTableVersion)
    method DeleteMembershipTableEntries (line 57) | public Task DeleteMembershipTableEntries(string clusterId)
    method CleanupDefunctSiloEntries (line 62) | public Task CleanupDefunctSiloEntries(DateTimeOffset beforeDate)
    method ReadRow (line 67) | public async Task<MembershipTableData> ReadRow(SiloAddress key)
    method ReadAll (line 83) | public async Task<MembershipTableData> ReadAll()
    method InsertRow (line 100) | public async Task<bool> InsertRow(MembershipEntry entry, TableVersion ...
    method UpdateRow (line 125) | public async Task<bool> UpdateRow(MembershipEntry entry, string etag, ...
    method UpdateIAmAlive (line 148) | public async Task UpdateIAmAlive(MembershipEntry entry)
    method Convert (line 165) | private MembershipTableData Convert(List<(SiloInstanceTableEntry Entit...
    method Parse (line 202) | private static MembershipEntry Parse(SiloInstanceTableEntry tableEntry)
    method Convert (line 274) | private static SiloInstanceTableEntry Convert(MembershipEntry memEntry...
    method ConvertPartial (line 327) | private static SiloInstanceTableEntry ConvertPartial(MembershipEntry m...
    type UtilsEnumerableToStringLogValue (line 338) | private readonly struct UtilsEnumerableToStringLogValue(IEnumerable<(S...
      method ToString (line 340) | public override string ToString() => Utils.EnumerableToString(entrie...
    method LogInformationCreatedNewTableVersionRow (line 343) | [LoggerMessage(
    method LogDebugReadMyEntry (line 349) | [LoggerMessage(
    method LogWarningIntermediateErrorReadingSiloEntry (line 355) | [LoggerMessage(
    method LogTraceReadAllTable (line 361) | [LoggerMessage(
    method LogWarningIntermediateErrorReadingAllSiloEntries (line 367) | [LoggerMessage(
    method LogDebugInsertRow (line 373) | [LoggerMessage(
    method LogWarningTableContention (line 379) | [LoggerMessage(
    method LogWarningInsertingMembershipEntry (line 386) | [LoggerMessage(
    method LogDebugUpdateRow (line 393) | [LoggerMessage(
    method LogWarningTableContentionEtag (line 399) | [LoggerMessage(
    method LogWarningUpdatingMembershipEntry (line 406) | [LoggerMessage(
    method LogDebugMergeEntry (line 413) | [LoggerMessage(
    method LogWarningUpdatingMembershipEntry (line 419) | [LoggerMessage(
    method LogErrorParsingMembershipTableDataIgnoring (line 426) | [LoggerMessage(
    method LogErrorParsingMembershipTableData (line 433) | [LoggerMessage(

FILE: src/Azure/Orleans.Clustering.AzureStorage/AzureGatewayListProvider.cs
  class AzureGatewayListProvider (line 12) | internal class AzureGatewayListProvider : IGatewayListProvider
    method AzureGatewayListProvider (line 19) | public AzureGatewayListProvider(ILoggerFactory loggerFactory, IOptions...
    method InitializeGatewayListProvider (line 27) | public async Task InitializeGatewayListProvider()
    method GetGateways (line 35) | public Task<IList<Uri>> GetGateways()

FILE: src/Azure/Orleans.Clustering.AzureStorage/AzureTableClusteringExtensions.cs
  class AzureTableClusteringExtensions (line 12) | public static class AzureTableClusteringExtensions
    method UseAzureStorageClustering (line 26) | public static ISiloBuilder UseAzureStorageClustering(
    method UseAzureStorageClustering (line 55) | public static ISiloBuilder UseAzureStorageClustering(
    method UseAzureStorageClustering (line 81) | public static IClientBuilder UseAzureStorageClustering(
    method UseAzureStorageClustering (line 110) | public static IClientBuilder UseAzureStorageClustering(

FILE: src/Azure/Orleans.Clustering.AzureStorage/AzureTableStorageClusteringProviderBuilder.cs
  class AzureTableStorageClusteringProviderBuilder (line 17) | internal sealed class AzureTableStorageClusteringProviderBuilder : IProv...
    method Configure (line 19) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...
    method Configure (line 62) | public void Configure(IClientBuilder builder, string name, IConfigurat...

FILE: src/Azure/Orleans.Clustering.AzureStorage/Options/AzureStorageClusteringOptions.cs
  class AzureStorageClusteringOptions (line 6) | public class AzureStorageClusteringOptions : AzureStorageOperationOptions
  class AzureStorageClusteringOptionsValidator (line 15) | public class AzureStorageClusteringOptionsValidator : AzureStorageOperat...
    method AzureStorageClusteringOptionsValidator (line 22) | public AzureStorageClusteringOptionsValidator(AzureStorageClusteringOp...

FILE: src/Azure/Orleans.Clustering.AzureStorage/Options/AzureStorageGatewayOptions.cs
  class AzureStorageGatewayOptions (line 3) | public class AzureStorageGatewayOptions : AzureStorageOperationOptions
  class AzureStorageGatewayOptionsValidator (line 11) | public class AzureStorageGatewayOptionsValidator : AzureStorageOperation...
    method AzureStorageGatewayOptionsValidator (line 18) | public AzureStorageGatewayOptionsValidator(AzureStorageGatewayOptions ...

FILE: src/Azure/Orleans.Clustering.AzureStorage/OrleansSiloInstanceManager.cs
  class OrleansSiloInstanceManager (line 16) | internal partial class OrleansSiloInstanceManager
    method OrleansSiloInstanceManager (line 30) | private OrleansSiloInstanceManager(
    method GetManager (line 44) | public static async Task<OrleansSiloInstanceManager> GetManager(
    method CreateTableVersionEntry (line 62) | public SiloInstanceTableEntry CreateTableVersionEntry(int tableVersion)
    method RegisterSiloInstance (line 73) | public void RegisterSiloInstance(SiloInstanceTableEntry entry)
    method UnregisterSiloInstance (line 80) | public Task<string> UnregisterSiloInstance(SiloInstanceTableEntry entry)
    method ActivateSiloInstance (line 87) | public Task<string> ActivateSiloInstance(SiloInstanceTableEntry entry)
    method ConvertToGatewayUri (line 99) | private static Uri ConvertToGatewayUri(SiloInstanceTableEntry gateway)
    method FindAllGatewayProxyEndpoints (line 113) | public async Task<IList<Uri>> FindAllGatewayProxyEndpoints()
    method DumpSiloInstanceTable (line 133) | public async Task<string> DumpSiloInstanceTable()
    method MergeTableEntryAsync (line 160) | internal Task<string> MergeTableEntryAsync(SiloInstanceTableEntry data)
    method ReadSingleTableEntryAsync (line 165) | internal Task<(SiloInstanceTableEntry, string)> ReadSingleTableEntryAs...
    method DeleteTableEntries (line 170) | internal async Task<int> DeleteTableEntries(string clusterId)
    method CleanupDefunctSiloEntries (line 181) | public async Task CleanupDefunctSiloEntries(DateTimeOffset beforeDate)
    method DeleteEntriesBatch (line 192) | private async Task DeleteEntriesBatch(List<(SiloInstanceTableEntry, st...
    method FindSiloEntryAndTableVersionRow (line 209) | internal async Task<List<(SiloInstanceTableEntry, string)>> FindSiloEn...
    method FindAllSiloEntries (line 228) | internal async Task<List<(SiloInstanceTableEntry, string)>> FindAllSil...
    method TryCreateTableVersionEntryAsync (line 246) | internal async Task<bool> TryCreateTableVersionEntryAsync()
    method InsertSiloEntryConditionally (line 277) | internal async Task<bool> InsertSiloEntryConditionally(SiloInstanceTab...
    method UpdateSiloEntryConditionally (line 303) | internal async Task<bool> UpdateSiloEntryConditionally(SiloInstanceTab...
    method LogErrorConnectingToAzureTable (line 321) | [LoggerMessage(
    method LogRegisterSiloInstance (line 328) | [LoggerMessage(
    method LogUnregisterSiloInstance (line 335) | [LoggerMessage(
    method LogActivateSiloInstance (line 342) | [LoggerMessage(
    method LogDebugSearchingGateway (line 349) | [LoggerMessage(
    method LogFoundGateway (line 356) | [LoggerMessage(
    method LogErrorSearchingGateway (line 363) | [LoggerMessage(
    method LogTraceInsertSiloEntryConditionallyFailed (line 370) | [LoggerMessage(
    method LogTraceUpdateSiloEntryConditionallyFailed (line 376) | [LoggerMessage(

FILE: src/Azure/Orleans.Clustering.AzureStorage/SiloInstanceTableEntry.cs
  class SiloInstanceTableEntry (line 11) | internal class SiloInstanceTableEntry : ITableEntity
    method ConstructRowKey (line 43) | public static string ConstructRowKey(SiloAddress silo)
    method UnpackRowKey (line 47) | internal static SiloAddress UnpackRowKey(string rowKey)
    method ToString (line 82) | public override string ToString()

FILE: src/Azure/Orleans.Clustering.AzureStorage/Utilities/TableStorageErrorCode.cs
  type TableStorageErrorCode (line 5) | [SuppressMessage("ReSharper", "InconsistentNaming")]

FILE: src/Azure/Orleans.Clustering.Cosmos/CosmosClusteringProviderBuilder.cs
  class CosmosClusteringProviderBuilder (line 13) | internal sealed class CosmosClusteringProviderBuilder : IProviderBuilder...
    method Configure (line 15) | public void Configure(ISiloBuilder builder, string? name, IConfigurati...
    method Configure (line 65) | public void Configure(IClientBuilder builder, string? name, IConfigura...

FILE: src/Azure/Orleans.Clustering.Cosmos/HostingExtensions.cs
  class HostingExtensions (line 10) | public static class HostingExtensions
    method UseCosmosClustering (line 18) | public static ISiloBuilder UseCosmosClustering(
    method UseCosmosClustering (line 32) | public static ISiloBuilder UseCosmosClustering(
    method UseCosmosClustering (line 45) | public static ISiloBuilder UseCosmosClustering(this ISiloBuilder builder)
    method UseCosmosGatewayListProvider (line 58) | public static IClientBuilder UseCosmosGatewayListProvider(
    method UseCosmosGatewayListProvider (line 71) | public static IClientBuilder UseCosmosGatewayListProvider(this IClient...
    method UseCosmosGatewayListProvider (line 84) | public static IClientBuilder UseCosmosGatewayListProvider(
    method UseCosmosClustering (line 99) | public static IServiceCollection UseCosmosClustering(
    method UseCosmosClustering (line 112) | public static IServiceCollection UseCosmosClustering(
    method UseCosmosGatewayListProvider (line 126) | public static IServiceCollection UseCosmosGatewayListProvider(
    method UseCosmosGatewayListProvider (line 139) | public static IServiceCollection UseCosmosGatewayListProvider(

FILE: src/Azure/Orleans.Clustering.Cosmos/Membership/CosmosGatewayListProvider.cs
  class CosmosGatewayListProvider (line 7) | internal partial class CosmosGatewayListProvider : IGatewayListProvider
    method CosmosGatewayListProvider (line 20) | public CosmosGatewayListProvider(
    method InitializeGatewayListProvider (line 36) | public async Task InitializeGatewayListProvider()
    method GetGateways (line 50) | public async Task<IList<Uri>> GetGateways()
    method ConvertToGatewayUri (line 78) | private static Uri ConvertToGatewayUri(SiloEntity gateway) =>
    method LogErrorInitializingGatewayListProvider (line 81) | [LoggerMessage(
    method LogErrorReadingGatewayListFromCosmosDb (line 87) | [LoggerMessage(

FILE: src/Azure/Orleans.Clustering.Cosmos/Membership/CosmosMembershipTable.cs
  class CosmosMembershipTable (line 6) | internal partial class CosmosMembershipTable : IMembershipTable
    method CosmosMembershipTable (line 20) | public CosmosMembershipTable(
    method InitializeMembershipTable (line 35) | public async Task InitializeMembershipTable(bool tryInitTableVersion)
    method DeleteMembershipTableEntries (line 78) | public async Task DeleteMembershipTableEntries(string clusterId)
    method CleanupDefunctSiloEntries (line 102) | public async Task CleanupDefunctSiloEntries(DateTimeOffset beforeDate)
    method ReadRow (line 128) | public async Task<MembershipTableData> ReadRow(SiloAddress key)
    method ReadAll (line 167) | public async Task<MembershipTableData> ReadAll()
    method InsertRow (line 215) | public async Task<bool> InsertRow(MembershipEntry entry, TableVersion ...
    method UpdateRow (line 237) | public async Task<bool> UpdateRow(MembershipEntry entry, string etag, ...
    method UpdateIAmAlive (line 261) | public async Task UpdateIAmAlive(MembershipEntry entry)
    method InitializeCosmosClient (line 297) | private async Task InitializeCosmosClient()
    method TryDeleteDatabase (line 311) | private async Task TryDeleteDatabase()
    method TryCreateCosmosResources (line 329) | private async Task TryCreateCosmosResources()
    method ReadClusterVersion (line 362) | private async Task<ClusterVersionEntity?> ReadClusterVersion()
    method ReadSilos (line 384) | private async Task<IReadOnlyList<SiloEntity>> ReadSilos(SiloStatus? st...
    method ConstructSiloEntityId (line 416) | private static string ConstructSiloEntityId(SiloAddress silo) => $"{si...
    method ParseEntity (line 418) | private static MembershipEntry ParseEntity(SiloEntity entity)
    method ConvertToEntity (line 463) | private static SiloEntity ConvertToEntity(MembershipEntry memEntry, st...
    method BuildVersionEntity (line 492) | private ClusterVersionEntity BuildVersionEntity(TableVersion tableVers...
    type MembershipEntryLogValue (line 503) | private readonly struct MembershipEntryLogValue(MembershipEntry member...
      method ToString (line 505) | public override string ToString() => membershipEntry.ToFullString();
    method LogDebugCreatedNewClusterVersionEntity (line 508) | [LoggerMessage(
    method LogErrorDeletingMembershipTableEntries (line 514) | [LoggerMessage(
    method LogErrorCleaningUpDefunctSiloEntries (line 520) | [LoggerMessage(
    method LogWarningFailureReadingSiloEntry (line 526) | [LoggerMessage(
    method LogErrorClusterVersionEntityDoesNotExist (line 532) | [LoggerMessage(
    method LogErrorReadingAllMembershipRecords (line 538) | [LoggerMessage(
    method LogWarningReadingEntries (line 544) | [LoggerMessage(
    method LogErrorInitializingCosmosClient (line 550) | [LoggerMessage(
    method LogErrorDeletingCosmosDBDatabase (line 556) | [LoggerMessage(
    method LogErrorReadingClusterVersionEntity (line 562) | [LoggerMessage(
    method LogErrorReadingSiloEntities (line 568) | [LoggerMessage(
    method LogWarningUnableToQueryEntry (line 574) | [LoggerMessage(

FILE: src/Azure/Orleans.Clustering.Cosmos/Models/BaseClusterEntity.cs
  class BaseClusterEntity (line 5) | internal abstract class BaseClusterEntity : BaseEntity

FILE: src/Azure/Orleans.Clustering.Cosmos/Models/ClusterVersionEntity.cs
  class ClusterVersionEntity (line 5) | internal class ClusterVersionEntity : BaseClusterEntity

FILE: src/Azure/Orleans.Clustering.Cosmos/Models/SiloEntity.cs
  class SiloEntity (line 5) | internal class SiloEntity : BaseClusterEntity

FILE: src/Azure/Orleans.Clustering.Cosmos/Options/CosmosClusteringOptions.cs
  class CosmosClusteringOptions (line 6) | public class CosmosClusteringOptions : CosmosOptions
    method CosmosClusteringOptions (line 13) | public CosmosClusteringOptions()
  class CosmosClusteringOptionsValidator (line 22) | public class CosmosClusteringOptionsValidator : CosmosOptionsValidator<C...
    method CosmosClusteringOptionsValidator (line 29) | public CosmosClusteringOptionsValidator(CosmosClusteringOptions option...

FILE: src/Azure/Orleans.DurableJobs.AzureStorage/AzureStorageJobShard.Log.cs
  class AzureStorageJobShard (line 6) | internal sealed partial class AzureStorageJobShard
    method LogInitializingShard (line 8) | [LoggerMessage(
    method LogShardInitialized (line 14) | [LoggerMessage(
    method LogAddingJob (line 20) | [LoggerMessage(
    method LogRemovingJob (line 26) | [LoggerMessage(
    method LogRetryingJob (line 32) | [LoggerMessage(
    method LogFlushingBatch (line 38) | [LoggerMessage(
    method LogBatchWritten (line 44) | [LoggerMessage(
    method LogUpdatingMetadata (line 50) | [LoggerMessage(
    method LogMetadataUpdated (line 56) | [LoggerMessage(
    method LogApproachingBlockLimit (line 62) | [LoggerMessage(
    method LogLargeBatch (line 68) | [LoggerMessage(
    method LogErrorWritingBatch (line 74) | [LoggerMessage(
    method LogErrorUpdatingMetadata (line 80) | [LoggerMessage(
    method LogStoppingProcessor (line 86) | [LoggerMessage(
    method LogProcessorStopped (line 92) | [LoggerMessage(
    method LogProcessingStorageQueue (line 98) | [LoggerMessage(
    method LogWaitingForBatch (line 104) | [LoggerMessage(

FILE: src/Azure/Orleans.DurableJobs.AzureStorage/AzureStorageJobShard.cs
  class AzureStorageJobShard (line 23) | internal sealed partial class AzureStorageJobShard : JobShard
    method AzureStorageJobShard (line 35) | public AzureStorageJobShard(string id, DateTimeOffset startTime, DateT...
    method PersistAddJobAsync (line 55) | protected override async Task PersistAddJobAsync(string jobId, string ...
    method PersistRemoveJobAsync (line 62) | protected override async Task PersistRemoveJobAsync(string jobId, Canc...
    method PersistRetryJobAsync (line 69) | protected override async Task PersistRetryJobAsync(string jobId, DateT...
    method UpdateBlobMetadata (line 76) | public async Task UpdateBlobMetadata(IDictionary<string, string> metad...
    method InitializeAsync (line 82) | public async ValueTask InitializeAsync(CancellationToken cancellationT...
    method EnqueueStorageOperationAsync (line 157) | private async Task EnqueueStorageOperationAsync(StorageOperation opera...
    method ProcessStorageOperationsAsync (line 163) | private async Task ProcessStorageOperationsAsync()
    method AppendJobOperationBatchAsync (line 276) | private async Task AppendJobOperationBatchAsync(List<StorageOperation>...
    method UpdateMetadataAsync (line 318) | private async Task UpdateMetadataAsync(IDictionary<string, string> met...
    method StopProcessorAsync (line 333) | internal async Task StopProcessorAsync(CancellationToken cancellationT...
    method DisposeAsync (line 356) | public override async ValueTask DisposeAsync()
  type StorageOperationType (line 364) | internal enum StorageOperationType
  class StorageOperation (line 370) | internal sealed class StorageOperation
    method CreateAppendOperation (line 377) | public static StorageOperation CreateAppendOperation(JobOperation jobO...
    method CreateMetadataOperation (line 386) | public static StorageOperation CreateMetadataOperation(IDictionary<str...

FILE: src/Azure/Orleans.DurableJobs.AzureStorage/AzureStorageJobShardManager.cs
  class AzureStorageJobShardManager (line 19) | public sealed partial class AzureStorageJobShardManager : JobShardManager
    method AzureStorageJobShardManager (line 38) | public AzureStorageJobShardManager(
    method AzureStorageJobShardManager (line 59) | public AzureStorageJobShardManager(
    method AssignJobShardsAsync (line 69) | public override async Task<List<Orleans.DurableJobs.IJobShard>> Assign...
    method CreateShardAsync (line 246) | public override async Task<Orleans.DurableJobs.IJobShard> CreateShardA...
    method UnregisterShardAsync (line 289) | public override async Task UnregisterShardAsync(Orleans.DurableJobs.IJ...
    method InitializeIfNeeded (line 339) | private async ValueTask InitializeIfNeeded(CancellationToken cancellat...
    method CreateMetadata (line 349) | private static Dictionary<string, string> CreateMetadata(IDictionary<s...
    method ParseMetadata (line 361) | private static (SiloAddress? owner, MembershipVersion membershipVersio...
    method LogInitializing (line 372) | [LoggerMessage(
    method LogInitialized (line 378) | [LoggerMessage(
    method LogAssigningShards (line 384) | [LoggerMessage(
    method LogShardTooNew (line 390) | [LoggerMessage(
    method LogShardStillOwned (line 396) | [LoggerMessage(
    method LogReclaimingShardFromCache (line 402) | [LoggerMessage(
    method LogClaimingShard (line 408) | [LoggerMessage(
    method LogShardOwnershipConflict (line 414) | [LoggerMessage(
    method LogShardAssigned (line 420) | [LoggerMessage(
    method LogAssignmentCompleted (line 426) | [LoggerMessage(
    method LogOwnershipTaken (line 432) | [LoggerMessage(
    method LogOwnershipFailed (line 438) | [LoggerMessage(
    method LogRegisteringShard (line 444) | [LoggerMessage(
    method LogShardIdCollision (line 450) | [LoggerMessage(
    method LogShardRegistrationRetry (line 456) | [LoggerMessage(
    method LogShardRegistered (line 462) | [LoggerMessage(
    method LogUnregisteringShard (line 468) | [LoggerMessage(
    method LogUnregisterWrongOwner (line 474) | [LoggerMessage(
    method LogShardOwnershipReleased (line 480) | [LoggerMessage(
    method LogShardDeleted (line 486) | [LoggerMessage(
    method LogPoisonedShardDetected (line 492) | [LoggerMessage(
    method LogShardAdopted (line 498) | [LoggerMessage(

FILE: src/Azure/Orleans.DurableJobs.AzureStorage/Hosting/AzureStorageDurableJobsExtensions.cs
  class AzureStorageDurableJobsExtensions (line 14) | public static class AzureStorageDurableJobsExtensions
    method UseAzureBlobDurableJobs (line 28) | public static ISiloBuilder UseAzureBlobDurableJobs(this ISiloBuilder b...
    method UseAzureBlobDurableJobs (line 46) | public static ISiloBuilder UseAzureBlobDurableJobs(this ISiloBuilder b...
    method UseAzureBlobDurableJobs (line 64) | public static IServiceCollection UseAzureBlobDurableJobs(this IService...
    method UseAzureBlobDurableJobs (line 86) | public static IServiceCollection UseAzureBlobDurableJobs(this IService...

FILE: src/Azure/Orleans.DurableJobs.AzureStorage/Hosting/AzureStorageJobShardOptions.cs
  class AzureStorageJobShardOptions (line 6) | public class AzureStorageJobShardOptions

FILE: src/Azure/Orleans.DurableJobs.AzureStorage/Hosting/AzureStorageJobShardOptionsValidator.cs
  class AzureStorageJobShardOptionsValidator (line 10) | public class AzureStorageJobShardOptionsValidator : IConfigurationValidator
    method AzureStorageJobShardOptionsValidator (line 20) | public AzureStorageJobShardOptionsValidator(AzureStorageJobShardOption...
    method ValidateConfiguration (line 27) | public void ValidateConfiguration()

FILE: src/Azure/Orleans.DurableJobs.AzureStorage/JobOperation.cs
  type JobOperation (line 12) | internal struct JobOperation
    type OperationType (line 17) | public enum OperationType
    method CreateAddOperation (line 64) | public static JobOperation CreateAddOperation(string id, string name, ...
    method CreateRemoveOperation (line 78) | public static JobOperation CreateRemoveOperation(string id)
    method CreateRetryOperation (line 92) | public static JobOperation CreateRetryOperation(string id, DateTimeOff...
  class JobOperationJsonContext (line 103) | [JsonSerializable(typeof(JobOperation))]

FILE: src/Azure/Orleans.DurableJobs.AzureStorage/NetstringJsonSerializer.cs
  class NetstringJsonSerializer (line 21) | public static class NetstringJsonSerializer<T>
    method Encode (line 32) | public static void Encode(T value, Stream stream, JsonTypeInfo<T> json...
    method DecodeAsync (line 91) | public static async IAsyncEnumerable<T> DecodeAsync(Stream stream, Jso...

FILE: src/Azure/Orleans.GrainDirectory.AzureStorage/AzureTableGrainDirectory.cs
  class AzureTableGrainDirectory (line 17) | public class AzureTableGrainDirectory : IGrainDirectory, ILifecycleParti...
    class GrainDirectoryEntity (line 22) | internal class GrainDirectoryEntity : ITableEntity
      method ToGrainAddress (line 32) | public GrainAddress ToGrainAddress()
      method FromGrainAddress (line 43) | public static GrainDirectoryEntity FromGrainAddress(string clusterId...
      method GrainIdToRowKey (line 57) | internal static string GrainIdToRowKey(GrainId grainId) => HttpUtili...
      method RowKeyToGrainId (line 59) | internal static GrainId RowKeyToGrainId(string rowKey) => GrainId.Pa...
    method AzureTableGrainDirectory (line 62) | public AzureTableGrainDirectory(
    method Lookup (line 73) | public async Task<GrainAddress?> Lookup(GrainId grainId)
    method Register (line 85) | public Task<GrainAddress?> Register(GrainAddress address) => Register(...
    method Register (line 87) | public async Task<GrainAddress?> Register(GrainAddress address, GrainA...
    method Unregister (line 119) | public async Task Unregister(GrainAddress address)
    method UnregisterMany (line 135) | public async Task UnregisterMany(List<GrainAddress> addresses)
    method UnregisterSilos (line 152) | public Task UnregisterSilos(List<SiloAddress> siloAddresses)
    method UnregisterManyBlock (line 158) | private async Task UnregisterManyBlock(List<GrainAddress> addresses)
    method InitializeIfNeeded (line 185) | public async Task InitializeIfNeeded(CancellationToken ct = default)
    method Participate (line 190) | public void Participate(ISiloLifecycle lifecycle)

FILE: src/Azure/Orleans.GrainDirectory.AzureStorage/Hosting/AzureTableGrainDirectoryExtensions.cs
  class AzureTableGrainDirectorySiloBuilderExtensions (line 9) | public static class AzureTableGrainDirectorySiloBuilderExtensions
    method UseAzureTableGrainDirectoryAsDefault (line 11) | public static ISiloBuilder UseAzureTableGrainDirectoryAsDefault(
    method UseAzureTableGrainDirectoryAsDefault (line 18) | public static ISiloBuilder UseAzureTableGrainDirectoryAsDefault(
    method AddAzureTableGrainDirectory (line 25) | public static ISiloBuilder AddAzureTableGrainDirectory(
    method AddAzureTableGrainDirectory (line 33) | public static ISiloBuilder AddAzureTableGrainDirectory(

FILE: src/Azure/Orleans.GrainDirectory.AzureStorage/Hosting/AzureTableGrainDirectoryServiceCollectionExtensions.cs
  class AzureTableGrainDirectoryServiceCollectionExtensions (line 15) | public static class AzureTableGrainDirectoryServiceCollectionExtensions
    method AddAzureTableGrainDirectory (line 17) | internal static IServiceCollection AddAzureTableGrainDirectory(

FILE: src/Azure/Orleans.GrainDirectory.AzureStorage/Hosting/AzureTableStorageGrainDirectoryProviderBuilder.cs
  class AzureTableStorageGrainDirectoryProviderBuilder (line 15) | internal sealed class AzureTableStorageGrainDirectoryProviderBuilder : I...
    method Configure (line 17) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...

FILE: src/Azure/Orleans.GrainDirectory.AzureStorage/Options/AzureTableGrainDirectoryOptions.cs
  class AzureTableGrainDirectoryOptions (line 5) | public class AzureTableGrainDirectoryOptions : AzureStorageOperationOptions
  class AzureTableGrainDirectoryOptionsValidator (line 14) | public class AzureTableGrainDirectoryOptionsValidator : AzureStorageOper...
    method AzureTableGrainDirectoryOptionsValidator (line 16) | public AzureTableGrainDirectoryOptionsValidator(AzureTableGrainDirecto...

FILE: src/Azure/Orleans.Journaling.AzureStorage/AzureAppendBlobLogStorage.cs
  class AzureAppendBlobLogStorage (line 11) | internal sealed partial class AzureAppendBlobLogStorage : IStateMachineS...
    method AzureAppendBlobLogStorage (line 23) | public AzureAppendBlobLogStorage(AppendBlobClient client, ILogger<Azur...
    method AppendAsync (line 33) | public async ValueTask AppendAsync(LogExtentBuilder value, Cancellatio...
    method DeleteAsync (line 53) | public async ValueTask DeleteAsync(CancellationToken cancellationToken)
    method ReadAsync (line 64) | public async IAsyncEnumerable<LogExtent> ReadAsync([EnumeratorCancella...
    method CopyFromSnapshotAsync (line 115) | private async Task<Response<BlobDownloadStreamingResult>> CopyFromSnap...
    method ReplaceAsync (line 134) | public async ValueTask ReplaceAsync(LogExtentBuilder value, Cancellati...
    method LogAppend (line 163) | [LoggerMessage(
    method LogRead (line 168) | [LoggerMessage(
    method LogReplace (line 173) | [LoggerMessage(

FILE: src/Azure/Orleans.Journaling.AzureStorage/AzureAppendBlobStateMachineStorageOptions.cs
  class AzureAppendBlobStateMachineStorageOptions (line 12) | public sealed class AzureAppendBlobStateMachineStorageOptions
    method ConfigureBlobServiceClient (line 68) | public void ConfigureBlobServiceClient(string connectionString)
    method ConfigureBlobServiceClient (line 77) | public void ConfigureBlobServiceClient(Uri serviceUri)
    method ConfigureBlobServiceClient (line 86) | public void ConfigureBlobServiceClient(Func<CancellationToken, Task<Bl...
    method ConfigureBlobServiceClient (line 94) | public void ConfigureBlobServiceClient(Uri serviceUri, TokenCredential...
    method ConfigureBlobServiceClient (line 104) | public void ConfigureBlobServiceClient(Uri serviceUri, AzureSasCredent...
    method ConfigureBlobServiceClient (line 114) | public void ConfigureBlobServiceClient(Uri serviceUri, StorageSharedKe...

FILE: src/Azure/Orleans.Journaling.AzureStorage/AzureAppendBlobStateMachineStorageProvider.cs
  class AzureAppendBlobStateMachineStorageProvider (line 8) | internal sealed class AzureAppendBlobStateMachineStorageProvider(
    method Initialize (line 16) | private async Task Initialize(CancellationToken cancellationToken)
    method Create (line 22) | public IStateMachineStorage Create(IGrainContext grainContext)
    method Participate (line 30) | public void Participate(ISiloLifecycle observer)

FILE: src/Azure/Orleans.Journaling.AzureStorage/AzureBlobStorageGrainJournalingProviderBuilder.cs
  class AzureBlobStorageGrainJournalingProviderBuilder (line 12) | internal sealed class AzureBlobStorageGrainJournalingProviderBuilder : I...
    method Configure (line 14) | public void Configure(ISiloBuilder builder, string? name, IConfigurati...

FILE: src/Azure/Orleans.Journaling.AzureStorage/AzureBlobStorageHostingExtensions.cs
  class AzureBlobStorageHostingExtensions (line 8) | public static class AzureBlobStorageHostingExtensions
    method AddAzureAppendBlobStateMachineStorage (line 10) | public static ISiloBuilder AddAzureAppendBlobStateMachineStorage(this ...
    method AddAzureAppendBlobStateMachineStorage (line 11) | public static ISiloBuilder AddAzureAppendBlobStateMachineStorage(this ...

FILE: src/Azure/Orleans.Journaling.AzureStorage/DefaultBlobContainerFactory.cs
  class DefaultBlobContainerFactory (line 13) | internal sealed class DefaultBlobContainerFactory(AzureAppendBlobStateMa...
    method GetBlobContainerClient (line 18) | public BlobContainerClient GetBlobContainerClient(GrainId grainId) => ...
    method InitializeAsync (line 21) | public async Task InitializeAsync(BlobServiceClient client, Cancellati...

FILE: src/Azure/Orleans.Journaling.AzureStorage/IBlobContainerFactory.cs
  type IBlobContainerFactory (line 9) | public interface IBlobContainerFactory
    method GetBlobContainerClient (line 16) | public BlobContainerClient GetBlobContainerClient(GrainId grainId);
    method InitializeAsync (line 24) | public Task InitializeAsync(BlobServiceClient client, CancellationToke...

FILE: src/Azure/Orleans.Persistence.AzureStorage/Hosting/AzureBlobGrainStorageServiceCollectionExtensions.cs
  class AzureBlobGrainStorageServiceCollectionExtensions (line 17) | public static class AzureBlobGrainStorageServiceCollectionExtensions
    method AddAzureBlobGrainStorageAsDefault (line 22) | public static IServiceCollection AddAzureBlobGrainStorageAsDefault(thi...
    method AddAzureBlobGrainStorage (line 30) | public static IServiceCollection AddAzureBlobGrainStorage(this IServic...
    method AddAzureBlobGrainStorageAsDefault (line 38) | public static IServiceCollection AddAzureBlobGrainStorageAsDefault(thi...
    method AddAzureBlobGrainStorage (line 46) | public static IServiceCollection AddAzureBlobGrainStorage(this IServic...

FILE: src/Azure/Orleans.Persistence.AzureStorage/Hosting/AzureBlobSiloBuilderExtensions.cs
  class AzureBlobSiloBuilderExtensions (line 8) | public static class AzureBlobSiloBuilderExtensions
    method AddAzureBlobGrainStorageAsDefault (line 13) | public static ISiloBuilder AddAzureBlobGrainStorageAsDefault(this ISil...
    method AddAzureBlobGrainStorage (line 21) | public static ISiloBuilder AddAzureBlobGrainStorage(this ISiloBuilder ...
    method AddAzureBlobGrainStorageAsDefault (line 29) | public static ISiloBuilder AddAzureBlobGrainStorageAsDefault(this ISil...
    method AddAzureBlobGrainStorage (line 37) | public static ISiloBuilder AddAzureBlobGrainStorage(this ISiloBuilder ...

FILE: src/Azure/Orleans.Persistence.AzureStorage/Hosting/AzureBlobStorageGrainStorageProviderBuilder.cs
  class AzureBlobStorageGrainStorageProviderBuilder (line 15) | internal sealed class AzureBlobStorageGrainStorageProviderBuilder : IPro...
    method Configure (line 17) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...

FILE: src/Azure/Orleans.Persistence.AzureStorage/Hosting/AzureTableSiloBuilderExtensions.cs
  class AzureTableSiloBuilderExtensions (line 13) | public static class AzureTableSiloBuilderExtensions
    method AddAzureTableGrainStorageAsDefault (line 18) | public static ISiloBuilder AddAzureTableGrainStorageAsDefault(this ISi...
    method AddAzureTableGrainStorage (line 26) | public static ISiloBuilder AddAzureTableGrainStorage(this ISiloBuilder...
    method AddAzureTableGrainStorageAsDefault (line 34) | public static ISiloBuilder AddAzureTableGrainStorageAsDefault(this ISi...
    method AddAzureTableGrainStorage (line 42) | public static ISiloBuilder AddAzureTableGrainStorage(this ISiloBuilder...
    method AddAzureTableGrainStorage (line 47) | internal static IServiceCollection AddAzureTableGrainStorage(

FILE: src/Azure/Orleans.Persistence.AzureStorage/Hosting/AzureTableStorageGrainStorageProviderBuilder.cs
  class AzureTableStorageGrainStorageProviderBuilder (line 17) | internal sealed class AzureTableStorageGrainStorageProviderBuilder : IPr...
    method Configure (line 19) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...

FILE: src/Azure/Orleans.Persistence.AzureStorage/Providers/AzureProviderErrorCode.cs
  type AzureProviderErrorCode (line 3) | internal enum AzureProviderErrorCode

FILE: src/Azure/Orleans.Persistence.AzureStorage/Providers/Storage/AzureBlobStorage.cs
  class AzureBlobGrainStorage (line 23) | public partial class AzureBlobGrainStorage : IGrainStorage, ILifecyclePa...
    method AzureBlobGrainStorage (line 33) | public AzureBlobGrainStorage(
    method ReadStateAsync (line 50) | public async Task ReadStateAsync<T>(string grainType, GrainId grainId,...
    method ResetGrainState (line 98) | private void ResetGrainState<T>(IGrainState<T> grainState)
    method GetBlobName (line 105) | private static string GetBlobName(string grainType, GrainId grainId) =...
    method WriteStateAsync (line 109) | public async Task WriteStateAsync<T>(string grainType, GrainId grainId...
    method ClearStateAsync (line 136) | public async Task ClearStateAsync<T>(string grainType, GrainId grainId...
    method WriteStateAndCreateContainerIfNotExists (line 183) | private async Task WriteStateAndCreateContainerIfNotExists<T>(string g...
    method DoOptimisticUpdate (line 219) | private static async Task<TResult> DoOptimisticUpdate<TState, TResult>...
    method Participate (line 231) | public void Participate(ISiloLifecycle lifecycle)
    method Init (line 237) | private async Task Init(CancellationToken ct)
    method ConvertToStorageFormat (line 266) | private BinaryData ConvertToStorageFormat<T>(T grainState) => this.gra...
    method ConvertFromStorageFormat (line 272) | private T? ConvertFromStorageFormat<T>(BinaryData contents) => this.gr...
    method CreateInstance (line 274) | private T CreateInstance<T>() => _activatorProvider.GetActivator<T>()....
    method LogTraceReading (line 276) | [LoggerMessage(
    method LogTraceBlobEmptyReading (line 283) | [LoggerMessage(
    method LogTraceDataRead (line 290) | [LoggerMessage(
    method LogErrorReading (line 297) | [LoggerMessage(
    method LogTraceBlobNotFoundReading (line 304) | [LoggerMessage(
    method LogTraceContainerNotFoundReading (line 311) | [LoggerMessage(
    method LogTraceWriting (line 318) | [LoggerMessage(
    method LogTraceDataWritten (line 325) | [LoggerMessage(
    method LogErrorWriting (line 332) | [LoggerMessage(
    method LogTraceClearing (line 339) | [LoggerMessage(
    method LogTraceCleared (line 346) | [LoggerMessage(
    method LogErrorClearing (line 353) | [LoggerMessage(
    method LogTraceContainerNotFound (line 360) | [LoggerMessage(
    method LogDebugInitializing (line 367) | [LoggerMessage(
    method LogInformationInitProvider (line 374) | [LoggerMessage(
    method LogErrorFromInit (line 381) | [LoggerMessage(
  class AzureBlobGrainStorageFactory (line 388) | public static class AzureBlobGrainStorageFactory
    method Create (line 390) | public static AzureBlobGrainStorage Create(IServiceProvider services, ...

FILE: src/Azure/Orleans.Persistence.AzureStorage/Providers/Storage/AzureBlobStorageOptions.cs
  class AzureBlobStorageOptions (line 14) | public class AzureBlobStorageOptions : IStorageProviderSerializerOptions
    method ConfigureBlobServiceClient (line 69) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
    method ConfigureBlobServiceClient (line 78) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
    method ConfigureBlobServiceClient (line 87) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
    method ConfigureBlobServiceClient (line 96) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
    method ConfigureBlobServiceClient (line 105) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
    method ConfigureBlobServiceClient (line 114) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
  class AzureBlobStorageOptionsValidator (line 124) | public class AzureBlobStorageOptionsValidator : IConfigurationValidator
    method AzureBlobStorageOptionsValidator (line 134) | public AzureBlobStorageOptionsValidator(AzureBlobStorageOptions option...
    method ValidateConfiguration (line 140) | public void ValidateConfiguration()

FILE: src/Azure/Orleans.Persistence.AzureStorage/Providers/Storage/AzureTableStorage.cs
  class AzureTableGrainStorage (line 28) | public partial class AzureTableGrainStorage : IGrainStorage, IRestExcept...
    method AzureTableGrainStorage (line 49) | public AzureTableGrainStorage(
    method ReadStateAsync (line 66) | public async Task ReadStateAsync<T>(string grainType, GrainId grainId,...
    method WriteStateAsync (line 92) | public async Task WriteStateAsync<T>(string grainType, GrainId grainId...
    method ClearStateAsync (line 125) | public async Task ClearStateAsync<T>(string grainType, GrainId grainId...
    method DoOptimisticUpdate (line 161) | private static async Task DoOptimisticUpdate(Func<Task> updateOperatio...
    method ConvertToStorageFormat (line 183) | internal void ConvertToStorageFormat<T>(T grainState, TableEntity entity)
    method CheckMaxDataSize (line 211) | private void CheckMaxDataSize(int dataSize, int maxDataSize)
    method SplitStringData (line 221) | private static IEnumerable<ReadOnlyMemory<char>> SplitStringData(ReadO...
    method SplitBinaryData (line 234) | private static IEnumerable<ReadOnlyMemory<byte>> SplitBinaryData(ReadO...
    method GetPropertyNames (line 247) | private static IEnumerable<string> GetPropertyNames(string basePropert...
    method ReadBinaryDataChunks (line 256) | private static IEnumerable<byte[]> ReadBinaryDataChunks(TableEntity en...
    method ReadBinaryData (line 284) | private static byte[] ReadBinaryData(TableEntity entity)
    method ReadStringDataChunks (line 298) | private static IEnumerable<string> ReadStringDataChunks(TableEntity en...
    method ReadStringData (line 312) | private static string ReadStringData(TableEntity entity)
    method ConvertFromStorageFormat (line 321) | internal T? ConvertFromStorageFormat<T>(TableEntity entity)
    method GetKeyString (line 360) | private string GetKeyString(GrainId grainId)
    class GrainStateTableDataManager (line 366) | private partial class GrainStateTableDataManager
      method GrainStateTableDataManager (line 372) | public GrainStateTableDataManager(AzureStorageOperationOptions optio...
      method InitTableAsync (line 379) | public Task InitTableAsync()
      method Read (line 384) | public async Task<TableEntity?> Read(string partitionKey, string row...
      method Write (line 414) | public async Task Write(TableEntity entity)
      method Delete (line 424) | public async Task Delete(TableEntity entity)
      method LogTraceReadingPartitionKeyRowKey (line 439) | [LoggerMessage(
      method LogTraceDataNotFoundReading (line 446) | [LoggerMessage(
      method LogTraceDataRead (line 453) | [LoggerMessage(
      method LogTraceDataNotFoundReadingException (line 460) | [LoggerMessage(
      method LogTraceWritingPartitionKeyRowKey (line 467) | [LoggerMessage(
      method LogTraceNotAttemptingDelete (line 474) | [LoggerMessage(
    method DecodeException (line 483) | public bool DecodeException(Exception e, out HttpStatusCode httpStatus...
    method Init (line 488) | private async Task Init(CancellationToken ct)
    method Close (line 507) | private Task Close(CancellationToken ct)
    method Participate (line 513) | public void Participate(ISiloLifecycle lifecycle)
    method CreateInstance (line 518) | private T CreateInstance<T>() => _activatorProvider.GetActivator<T>()....
    method LogTraceReadingGrainState (line 520) | [LoggerMessage(
    method LogTraceWritingGrainState (line 527) | [LoggerMessage(
    method LogErrorWriteGrainState (line 534) | [LoggerMessage(
    method LogTraceClearingGrainState (line 541) | [LoggerMessage(
    method LogErrorClearingGrainState (line 548) | [LoggerMessage(
    method LogErrorDataTooLarge (line 555) | [LoggerMessage(
    method LogErrorSimpleMessage (line 561) | [LoggerMessage(
    method LogDebugStorageInitializing (line 567) | [LoggerMessage(
    method LogInfoInitializingProvider (line 574) | [LoggerMessage(
    method LogErrorInitializationFailed (line 581) | [LoggerMessage(
  class AzureTableGrainStorageFactory (line 589) | public static class AzureTableGrainStorageFactory
    method Create (line 591) | public static AzureTableGrainStorage Create(IServiceProvider services,...

FILE: src/Azure/Orleans.Persistence.AzureStorage/Providers/Storage/AzureTableStorageOptions.cs
  class AzureTableStorageOptions (line 9) | public class AzureTableStorageOptions : AzureStorageOperationOptions, IS...
  class AzureTableGrainStorageOptionsValidator (line 40) | public class AzureTableGrainStorageOptionsValidator : AzureStorageOperat...
    method AzureTableGrainStorageOptionsValidator (line 47) | public AzureTableGrainStorageOptionsValidator(AzureTableStorageOptions...

FILE: src/Azure/Orleans.Persistence.AzureStorage/Providers/Storage/IBlobContainerFactory.cs
  type IBlobContainerFactory (line 11) | public interface IBlobContainerFactory
    method GetBlobContainerClient (line 18) | public BlobContainerClient GetBlobContainerClient(GrainId grainId);
    method InitializeAsync (line 25) | public Task InitializeAsync(BlobServiceClient client);
  class DefaultBlobContainerFactory (line 31) | internal class DefaultBlobContainerFactory : IBlobContainerFactory
    method DefaultBlobContainerFactory (line 40) | public DefaultBlobContainerFactory(AzureBlobStorageOptions options)
    method GetBlobContainerClient (line 46) | public BlobContainerClient GetBlobContainerClient(GrainId grainId)
    method InitializeAsync (line 50) | public async Task InitializeAsync(BlobServiceClient client)

FILE: src/Azure/Orleans.Persistence.AzureStorage/Storage/StorageExceptionExtensions.cs
  class StorageExceptionExtensions (line 7) | internal static class StorageExceptionExtensions
    method IsNotFound (line 9) | public static bool IsNotFound(this RequestFailedException requestFaile...
    method IsPreconditionFailed (line 14) | public static bool IsPreconditionFailed(this RequestFailedException re...
    method IsConflict (line 19) | public static bool IsConflict(this RequestFailedException requestFaile...
    method IsContainerNotFound (line 24) | public static bool IsContainerNotFound(this RequestFailedException req...
    method IsBlobNotFound (line 30) | public static bool IsBlobNotFound(this RequestFailedException requestF...

FILE: src/Azure/Orleans.Persistence.AzureStorage/Storage/TableStorageUpdateConditionNotSatisfiedException.cs
  class TableStorageUpdateConditionNotSatisfiedException (line 9) | [Serializable]
    method TableStorageUpdateConditionNotSatisfiedException (line 18) | public TableStorageUpdateConditionNotSatisfiedException(
    method TableStorageUpdateConditionNotSatisfiedException (line 36) | public TableStorageUpdateConditionNotSatisfiedException(
    method TableStorageUpdateConditionNotSatisfiedException (line 68) | public TableStorageUpdateConditionNotSatisfiedException()
    method TableStorageUpdateConditionNotSatisfiedException (line 75) | public TableStorageUpdateConditionNotSatisfiedException(string msg)
    method TableStorageUpdateConditionNotSatisfiedException (line 83) | public TableStorageUpdateConditionNotSatisfiedException(string msg, Ex...
    method CreateDefaultMessage (line 88) | private static string CreateDefaultMessage(
    method TableStorageUpdateConditionNotSatisfiedException (line 101) | [Obsolete]
    method GetObjectData (line 111) | [Obsolete]

FILE: src/Azure/Orleans.Persistence.Cosmos/CosmosConditionNotSatisfiedException.cs
  class CosmosConditionNotSatisfiedException (line 9) | [Serializable]
    method CosmosConditionNotSatisfiedException (line 18) | public CosmosConditionNotSatisfiedException(
    method CosmosConditionNotSatisfiedException (line 35) | public CosmosConditionNotSatisfiedException(
    method CosmosConditionNotSatisfiedException (line 66) | public CosmosConditionNotSatisfiedException()
    method CosmosConditionNotSatisfiedException (line 73) | public CosmosConditionNotSatisfiedException(string msg)
    method CosmosConditionNotSatisfiedException (line 81) | public CosmosConditionNotSatisfiedException(string msg, Exception exc)
    method CreateDefaultMessage (line 86) | private static string CreateDefaultMessage(
    method CosmosConditionNotSatisfiedException (line 96) | [Obsolete]
    method GetObjectData (line 106) | [Obsolete]

FILE: src/Azure/Orleans.Persistence.Cosmos/CosmosGrainStorage.cs
  class CosmosGrainStorage (line 11) | public sealed partial class CosmosGrainStorage : IGrainStorage, ILifecyc...
    method CosmosGrainStorage (line 28) | public CosmosGrainStorage(
    method ReadStateAsync (line 48) | public async Task ReadStateAsync<T>(string grainType, GrainId grainId,...
    method WriteStateAsync (line 99) | public async Task WriteStateAsync<T>(string grainType, GrainId grainId...
    method ClearStateAsync (line 169) | public async Task ClearStateAsync<T>(string grainType, GrainId grainId...
    method Participate (line 255) | public void Participate(ISiloLifecycle lifecycle)
    method GetKeyString (line 260) | private string GetKeyString(GrainId grainId) => $"{Sanitize(_serviceId...
    method BuildPartitionKey (line 262) | private ValueTask<string> BuildPartitionKey(string grainType, GrainId ...
    method Init (line 265) | private async Task Init(CancellationToken ct)
    method InitializeCosmosClient (line 299) | private async Task InitializeCosmosClient()
    method TryCreateResources (line 313) | private async Task TryCreateResources()
    method TryDeleteDatabase (line 354) | private async Task TryDeleteDatabase()
    method ResetGrainState (line 372) | private void ResetGrainState<T>(IGrainState<T> grainState)
    method CreateInstance (line 379) | private T CreateInstance<T>() => _activatorProvider.GetActivator<T>()....
    method LogTraceReadingState (line 381) | [LoggerMessage(
    method LogErrorReadingState (line 387) | [LoggerMessage(
    method LogTraceWritingState (line 393) | [LoggerMessage(
    method LogErrorWritingState (line 399) | [LoggerMessage(
    method LogTraceClearingState (line 405) | [LoggerMessage(
    method LogErrorClearingState (line 411) | [LoggerMessage(
    method LogDebugInit (line 417) | [LoggerMessage(
    method LogDebugInitializingProvider (line 423) | [LoggerMessage(
    method LogErrorInitializationFailed (line 429) | [LoggerMessage(
    method LogErrorInitializingClient (line 436) | [LoggerMessage(
    method LogErrorDeletingDatabase (line 442) | [LoggerMessage(
  class CosmosStorageFactory (line 449) | public static class CosmosStorageFactory
    method Create (line 451) | public static CosmosGrainStorage Create(IServiceProvider services, str...

FILE: src/Azure/Orleans.Persistence.Cosmos/CosmosStorageOptions.cs
  class CosmosGrainStorageOptions (line 8) | public class CosmosGrainStorageOptions : CosmosOptions
    method CosmosGrainStorageOptions (line 36) | public CosmosGrainStorageOptions()

FILE: src/Azure/Orleans.Persistence.Cosmos/HostingExtensions.cs
  class HostingExtensions (line 13) | public static class HostingExtensions
    method AddCosmosGrainStorageAsDefault (line 21) | public static ISiloBuilder AddCosmosGrainStorageAsDefault<TPartitionKe...
    method AddCosmosGrainStorage (line 35) | public static ISiloBuilder AddCosmosGrainStorage<TPartitionKeyProvider>(
    method AddCosmosGrainStorageAsDefault (line 51) | public static ISiloBuilder AddCosmosGrainStorageAsDefault(
    method AddCosmosGrainStorage (line 66) | public static ISiloBuilder AddCosmosGrainStorage(
    method AddCosmosGrainStorageAsDefault (line 86) | public static ISiloBuilder AddCosmosGrainStorageAsDefault(
    method AddCosmosGrainStorage (line 99) | public static ISiloBuilder AddCosmosGrainStorage(
    method AddCosmosGrainStorageAsDefault (line 114) | public static ISiloBuilder AddCosmosGrainStorageAsDefault<TPartitionKe...
    method AddCosmosGrainStorage (line 128) | public static ISiloBuilder AddCosmosGrainStorage<TPartitionKeyProvider>(
    method AddCosmosGrainStorageAsDefault (line 144) | public static ISiloBuilder AddCosmosGrainStorageAsDefault(
    method AddCosmosGrainStorage (line 158) | public static ISiloBuilder AddCosmosGrainStorage(
    method AddCosmosGrainStorageAsDefault (line 178) | public static ISiloBuilder AddCosmosGrainStorageAsDefault(
    method AddCosmosGrainStorage (line 191) | public static ISiloBuilder AddCosmosGrainStorage(
    method AddCosmosGrainStorageAsDefault (line 205) | public static IServiceCollection AddCosmosGrainStorageAsDefault(
    method AddCosmosGrainStorage (line 218) | public static IServiceCollection AddCosmosGrainStorage(
    method AddCosmosGrainStorageAsDefault (line 231) | public static IServiceCollection AddCosmosGrainStorageAsDefault(
    method AddCosmosGrainStorage (line 244) | public static IServiceCollection AddCosmosGrainStorage(

FILE: src/Azure/Orleans.Persistence.Cosmos/IPartitionKeyProvider.cs
  type IPartitionKeyProvider (line 6) | public interface IPartitionKeyProvider
    method GetPartitionKey (line 14) | ValueTask<string> GetPartitionKey(string grainType, GrainId grainId);
  class DefaultPartitionKeyProvider (line 17) | internal class DefaultPartitionKeyProvider : IPartitionKeyProvider
    method GetPartitionKey (line 19) | public ValueTask<string> GetPartitionKey(string grainType, GrainId gra...

FILE: src/Azure/Orleans.Persistence.Cosmos/Models/GrainStateEntity.cs
  class GrainStateEntity (line 5) | internal class GrainStateEntity<TState> : BaseEntity

FILE: src/Azure/Orleans.Reminders.AzureStorage/AzureStorageReminderServiceCollectionExtensions.cs
  class AzureStorageReminderServiceCollectionExtensions (line 12) | public static class AzureStorageReminderServiceCollectionExtensions
    method UseAzureTableReminderService (line 26) | public static IServiceCollection UseAzureTableReminderService(this ISe...
    method UseAzureTableReminderService (line 47) | public static IServiceCollection UseAzureTableReminderService(this ISe...
    method UseAzureTableReminderService (line 69) | public static IServiceCollection UseAzureTableReminderService(this ISe...

FILE: src/Azure/Orleans.Reminders.AzureStorage/AzureStorageReminderSiloBuilderReminderExtensions.cs
  class AzureStorageReminderSiloBuilderExtensions (line 10) | public static class AzureStorageReminderSiloBuilderExtensions
    method UseAzureTableReminderService (line 24) | public static ISiloBuilder UseAzureTableReminderService(this ISiloBuil...
    method UseAzureTableReminderService (line 42) | public static ISiloBuilder UseAzureTableReminderService(this ISiloBuil...
    method UseAzureTableReminderService (line 60) | public static ISiloBuilder UseAzureTableReminderService(this ISiloBuil...

FILE: src/Azure/Orleans.Reminders.AzureStorage/AzureTableStorageRemindersProviderBuilder.cs
  class AzureTableStorageRemindersProviderBuilder (line 17) | internal sealed class AzureTableStorageRemindersProviderBuilder : IProvi...
    method Configure (line 19) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...

FILE: src/Azure/Orleans.Reminders.AzureStorage/Storage/AzureBasedReminderTable.cs
  class AzureBasedReminderTable (line 14) | public sealed partial class AzureBasedReminderTable : IReminderTable
    method AzureBasedReminderTable (line 23) | public AzureBasedReminderTable(
    method StartAsync (line 39) | public async Task StartAsync(CancellationToken cancellationToken)
    method StopAsync (line 72) | public Task StopAsync(CancellationToken cancellationToken)
    method ConvertFromTableEntryList (line 78) | private ReminderTableData ConvertFromTableEntryList(List<(ReminderTabl...
    method ConvertFromTableEntry (line 98) | private ReminderEntry ConvertFromTableEntry(ReminderTableEntry tableEn...
    method ConvertToTableEntry (line 127) | private static ReminderTableEntry ConvertToTableEntry(ReminderEntry re...
    method TestOnlyClearTable (line 152) | public async Task TestOnlyClearTable()
    method ReadRows (line 159) | public async Task<ReminderTableData> ReadRows(GrainId grainId)
    method ReadRows (line 177) | public async Task<ReminderTableData> ReadRows(uint begin, uint end)
    method ReadRow (line 195) | public async Task<ReminderEntry> ReadRow(GrainId grainId, string remin...
    method UpsertRow (line 212) | public async Task<string> UpsertRow(ReminderEntry entry)
    method RemoveRow (line 235) | public async Task<bool> RemoveRow(GrainId grainId, string reminderName...
    type RingRangeLogValue (line 264) | private readonly struct RingRangeLogValue(uint Begin, uint End)
      method ToString (line 266) | public override string ToString() => RangeFactory.CreateRange(Begin,...
    method LogErrorCreatingAzureTable (line 269) | [LoggerMessage(
    method LogErrorReminderTableInitializationCanceled (line 276) | [LoggerMessage(
    method LogErrorInitializingReminderTable (line 282) | [LoggerMessage(
    method LogErrorParsingReminderEntry (line 288) | [LoggerMessage(
    method LogWarningAzureTable_ReadWrongReminder (line 295) | [LoggerMessage(
    method LogTraceReadForGrain (line 302) | [LoggerMessage(
    method LogWarningReadingReminders (line 308) | [LoggerMessage(
    method LogTraceReadInRange (line 315) | [LoggerMessage(
    method LogWarningReadingReminderRange (line 321) | [LoggerMessage(
    method LogDebugReadRow (line 328) | [LoggerMessage(
    method LogWarningReadingReminderRow (line 334) | [LoggerMessage(
    method LogDebugUpsertRow (line 341) | [LoggerMessage(
    method LogWarningReminderUpsertFailed (line 347) | [LoggerMessage(
    method LogWarningUpsertReminderEntry (line 354) | [LoggerMessage(
    method LogTraceRemoveRow (line 361) | [LoggerMessage(
    method LogWarningOnReminderDeleteRetry (line 367) | [LoggerMessage(
    method LogWarningWhenDeletingReminder (line 374) | [LoggerMessage(

FILE: src/Azure/Orleans.Reminders.AzureStorage/Storage/AzureTableReminderStorageOptions.cs
  class AzureTableReminderStorageOptions (line 4) | public class AzureTableReminderStorageOptions : AzureStorageOperationOpt...
  class AzureTableReminderStorageOptionsValidator (line 16) | public class AzureTableReminderStorageOptionsValidator : AzureStorageOpe...
    method AzureTableReminderStorageOptionsValidator (line 23) | public AzureTableReminderStorageOptionsValidator(AzureTableReminderSto...

FILE: src/Azure/Orleans.Reminders.AzureStorage/Storage/RemindersTableManager.cs
  class ReminderTableEntry (line 14) | internal sealed class ReminderTableEntry : ITableEntity
    method ConstructRowKey (line 29) | public static string ConstructRowKey(GrainId grainId, string reminderN...
    method ConstructRowKeyBounds (line 32) | public static (string LowerBound, string UpperBound) ConstructRowKeyBo...
    method ConstructPartitionKey (line 38) | public static string ConstructPartitionKey(string serviceId, GrainId g...
    method ConstructPartitionKey (line 41) | public static string ConstructPartitionKey(string serviceId, uint number)
    method ConstructPartitionKeyBounds (line 54) | public static (string LowerBound, string UpperBound) ConstructPartitio...
    method ToString (line 60) | public override string ToString() => $"Reminder [PartitionKey={Partiti...
  class RemindersTableManager (line 63) | internal sealed partial class RemindersTableManager : AzureTableDataMana...
    method RemindersTableManager (line 68) | public RemindersTableManager(
    method FindReminderEntries (line 79) | internal async Task<List<(ReminderTableEntry Entity, string ETag)>> Fi...
    method FindReminderEntries (line 112) | internal async Task<List<(ReminderTableEntry Entity, string ETag)>> Fi...
    method FindReminderEntry (line 120) | internal async Task<(ReminderTableEntry Entity, string ETag)> FindRemi...
    method FindAllReminderEntries (line 128) | private Task<List<(ReminderTableEntry Entity, string ETag)>> FindAllRe...
    method UpsertRow (line 133) | internal async Task<string> UpsertRow(ReminderTableEntry reminderEntry)
    method DeleteReminderEntryConditionally (line 151) | internal async Task<bool> DeleteReminderEntryConditionally(ReminderTab...
    method DeleteTableEntries (line 169) | internal async Task DeleteTableEntries()
    method LogTraceUpsertRowFailed (line 191) | [LoggerMessage(
    method LogTraceDeleteReminderEntryConditionallyFailed (line 197) | [LoggerMessage(

FILE: src/Azure/Orleans.Reminders.AzureStorage/Utilities/AzureReminderErrorCode.cs
  type AzureReminderErrorCode (line 5) | [SuppressMessage("ReSharper", "InconsistentNaming")]

FILE: src/Azure/Orleans.Reminders.Cosmos/CosmosReminderTable.cs
  class CosmosReminderTable (line 7) | internal partial class CosmosReminderTable : IReminderTable
    method CosmosReminderTable (line 20) | public CosmosReminderTable(
    method Init (line 34) | public async Task Init()
    method ReadRows (line 69) | public async Task<ReminderTableData> ReadRows(GrainId grainId)
    method ReadRows (line 108) | public async Task<ReminderTableData> ReadRows(uint begin, uint end)
    method ReadRow (line 151) | public async Task<ReminderEntry> ReadRow(GrainId grainId, string remin...
    method UpsertRow (line 182) | public async Task<string> UpsertRow(ReminderEntry entry)
    method RemoveRow (line 208) | public async Task<bool> RemoveRow(GrainId grainId, string reminderName...
    method TestOnlyClearTable (line 236) | public async Task TestOnlyClearTable()
    method InitializeCosmosClient (line 283) | private async Task InitializeCosmosClient()
    method TryDeleteDatabase (line 297) | private async Task TryDeleteDatabase()
    method TryCreateCosmosResources (line 315) | private async Task TryCreateCosmosResources()
    method FromEntity (line 342) | private ReminderEntry FromEntity(ReminderEntity entity)
    method ToEntity (line 354) | private ReminderEntity ToEntity(ReminderEntry entry)
    type UIntLogValue (line 369) | private readonly struct UIntLogValue(uint value)
      method ToString (line 371) | public override string ToString() => value.ToString("X");
    method LogDebugInitializingCosmosReminderTable (line 374) | [LoggerMessage(
    method LogTraceInitializingCosmosReminderTableTook (line 380) | [LoggerMessage(
    method LogErrorInitializationFailedForProviderCosmosReminderTable (line 386) | [LoggerMessage(
    method LogErrorFailureReadingRemindersForGrain (line 392) | [LoggerMessage(
    method LogErrorFailureReadingRemindersForService (line 398) | [LoggerMessage(
    method LogErrorFailureReadingReminder (line 404) | [LoggerMessage(
    method LogErrorFailureToUpsertReminder (line 410) | [LoggerMessage(
    method LogErrorFailureRemovingReminders (line 416) | [LoggerMessage(
    method LogErrorFailureToClearReminders (line 422) | [LoggerMessage(
    method LogErrorInitializingAzureCosmosDbClient (line 428) | [LoggerMessage(
    method LogErrorDeletingAzureCosmosDBDatabase (line 434) | [LoggerMessage(

FILE: src/Azure/Orleans.Reminders.Cosmos/CosmosReminderTableOptions.cs
  class CosmosReminderTableOptions (line 6) | public class CosmosReminderTableOptions : CosmosOptions
    method CosmosReminderTableOptions (line 13) | public CosmosReminderTableOptions()

FILE: src/Azure/Orleans.Reminders.Cosmos/HostingExtensions.cs
  class HostingExtensions (line 10) | public static class HostingExtensions
    method UseCosmosReminderService (line 24) | public static ISiloBuilder UseCosmosReminderService(this ISiloBuilder ...
    method UseCosmosReminderService (line 42) | public static ISiloBuilder UseCosmosReminderService(this ISiloBuilder ...
    method UseCosmosReminderService (line 60) | public static IServiceCollection UseCosmosReminderService(this IServic...
    method UseCosmosReminderService (line 75) | public static IServiceCollection UseCosmosReminderService(this IServic...

FILE: src/Azure/Orleans.Reminders.Cosmos/Models/ReminderEntity.cs
  class ReminderEntity (line 6) | internal class ReminderEntity : BaseEntity
    method ConstructId (line 36) | public static string ConstructId(GrainId grainId, string reminderName)
    method ConstructPartitionKey (line 49) | public static string ConstructPartitionKey(string serviceId, GrainId g...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Hosting/AzureQueueStreamProviderBuilder.cs
  class AzureQueueStreamProviderBuilder (line 17) | public sealed class AzureQueueStreamProviderBuilder : IProviderBuilder<I...
    method Configure (line 19) | public void Configure(ISiloBuilder builder, string name, IConfiguratio...
    method Configure (line 24) | public void Configure(IClientBuilder builder, string name, IConfigurat...
    method GetQueueOptionBuilder (line 29) | private static Action<OptionsBuilder<AzureQueueOptions>> GetQueueOptio...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Hosting/ClientBuilderExtensions.cs
  class ClientBuilderExtensions (line 7) | public static class ClientBuilderExtensions
    method AddAzureQueueStreams (line 12) | public static IClientBuilder AddAzureQueueStreams(this IClientBuilder ...
    method AddAzureQueueStreams (line 25) | public static IClientBuilder AddAzureQueueStreams(this IClientBuilder ...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Hosting/SiloBuilderExtensions.cs
  class SiloBuilderExtensions (line 10) | public static class SiloBuilderExtensions
    method AddAzureQueueStreams (line 15) | public static ISiloBuilder AddAzureQueueStreams(this ISiloBuilder buil...
    method AddAzureQueueStreams (line 27) | public static ISiloBuilder AddAzureQueueStreams(this ISiloBuilder buil...
    method UseAzureBlobLeaseProvider (line 37) | public static ISiloBuilder UseAzureBlobLeaseProvider(this ISiloBuilder...
    method ConfigureAzureBlobLeaseProviderServices (line 43) | private static void ConfigureAzureBlobLeaseProviderServices(IServiceCo...
    method UseAzureBlobLeaseProvider (line 55) | public static void UseAzureBlobLeaseProvider(this ISiloPersistentStrea...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Options/AzureBlobLeaseProviderOptions.cs
  class AzureBlobLeaseProviderOptions (line 16) | public class AzureBlobLeaseProviderOptions
    method ConfigureBlobServiceClient (line 50) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
    method ConfigureBlobServiceClient (line 59) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
    method ConfigureBlobServiceClient (line 68) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
    method ConfigureBlobServiceClient (line 77) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
    method ConfigureBlobServiceClient (line 86) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
    method ConfigureBlobServiceClient (line 95) | [Obsolete($"Set the {nameof(BlobServiceClient)} property directly.")]
  class AzureBlobLeaseProviderOptionsValidator (line 105) | public class AzureBlobLeaseProviderOptionsValidator : IConfigurationVali...
    method AzureBlobLeaseProviderOptionsValidator (line 114) | public AzureBlobLeaseProviderOptionsValidator(IOptions<AzureBlobLeaseP...
    method Create (line 125) | public static IConfigurationValidator Create(IServiceProvider services...
    method AzureBlobLeaseProviderOptionsValidator (line 136) | private AzureBlobLeaseProviderOptionsValidator(AzureBlobLeaseProviderO...
    method ValidateConfiguration (line 142) | public void ValidateConfiguration()

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Lease/AzureBlobLeaseProvider.cs
  class AzureBlobLeaseProvider (line 15) | public class AzureBlobLeaseProvider : ILeaseProvider
    method AzureBlobLeaseProvider (line 20) | public AzureBlobLeaseProvider(IOptions<AzureBlobLeaseProviderOptions> ...
    method AzureBlobLeaseProvider (line 25) | private AzureBlobLeaseProvider(AzureBlobLeaseProviderOptions options)
    method InitContainerIfNotExistsAsync (line 30) | private async Task InitContainerIfNotExistsAsync()
    method GetBlobClient (line 41) | private BlobClient GetBlobClient(string category, string resourceKey) ...
    method Acquire (line 43) | public async Task<AcquireLeaseResult[]> Acquire(string category, Lease...
    method Acquire (line 55) | private async Task<AcquireLeaseResult> Acquire(string category, LeaseR...
    method Release (line 82) | public async Task Release(string category, AcquiredLease[] acquiredLea...
    method Release (line 93) | private Task Release(string category, AcquiredLease acquiredLease)
    method Renew (line 99) | public async Task<AcquireLeaseResult[]> Renew(string category, Acquire...
    method Renew (line 111) | private async Task<AcquireLeaseResult> Renew(string category, Acquired...
    method Create (line 137) | public static ILeaseProvider Create(IServiceProvider services, string ...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/AzureQueueAdapter.cs
  class AzureQueueAdapter (line 13) | internal sealed class AzureQueueAdapter : IQueueAdapter
    method AzureQueueAdapter (line 26) | public AzureQueueAdapter(
    method CreateReceiver (line 40) | public IQueueAdapterReceiver CreateReceiver(QueueId queueId) => AzureQ...
    method QueueMessageBatchAsync (line 42) | public async Task QueueMessageBatchAsync<T>(StreamId streamId, IEnumer...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/AzureQueueAdapterFactory.cs
  class AzureQueueAdapterFactory (line 13) | public class AzureQueueAdapterFactory : IQueueAdapterFactory
    method AzureQueueAdapterFactory (line 27) | public AzureQueueAdapterFactory(
    method Init (line 43) | public virtual void Init()
    method CreateAdapter (line 50) | public virtual Task<IQueueAdapter> CreateAdapter()
    method GetQueueAdapterCache (line 62) | public virtual IQueueAdapterCache GetQueueAdapterCache()
    method GetStreamQueueMapper (line 68) | public IStreamQueueMapper GetStreamQueueMapper()
    method GetDeliveryFailureHandler (line 78) | public Task<IStreamFailureHandler> GetDeliveryFailureHandler(QueueId q...
    method Create (line 83) | public static AzureQueueAdapterFactory Create(IServiceProvider service...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/AzureQueueAdapterReceiver.cs
  class AzureQueueAdapterReceiver (line 17) | internal partial class AzureQueueAdapterReceiver : IQueueAdapterReceiver
    method Create (line 28) | public static IQueueAdapterReceiver Create(ILoggerFactory loggerFactor...
    method AzureQueueAdapterReceiver (line 38) | private AzureQueueAdapterReceiver(string azureQueueName, ILoggerFactor...
    method Initialize (line 47) | public Task Initialize(TimeSpan timeout)
    method Shutdown (line 56) | public async Task Shutdown(TimeSpan timeout)
    method GetQueueMessagesAsync (line 71) | public async Task<IList<IBatchContainer>> GetQueueMessagesAsync(int ma...
    method MessagesDeliveredAsync (line 103) | public async Task MessagesDeliveredAsync(IList<IBatchContainer> messages)
    method LogWarningOnDeleteQueueMessage (line 143) | [LoggerMessage(
    class PendingDelivery (line 150) | private class PendingDelivery
      method PendingDelivery (line 152) | public PendingDelivery(StreamSequenceToken token, QueueMessage message)

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/AzureQueueBatchContainer.cs
  class AzureQueueBatchContainer (line 11) | [Serializable]
    method AzureQueueBatchContainer (line 40) | [JsonConstructor]
    method AzureQueueBatchContainer (line 51) | public AzureQueueBatchContainer(StreamId streamId, List<object> events...
    method GetEvents (line 60) | public IEnumerable<Tuple<T, StreamSequenceToken>> GetEvents<T>()
    method ImportRequestContext (line 65) | public bool ImportRequestContext()
    method ToString (line 75) | public override string ToString()

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/AzureQueueBatchContainerV2.cs
  class AzureQueueBatchContainerV2 (line 14) | [Serializable]
    method AzureQueueBatchContainerV2 (line 40) | [JsonConstructor]
    method AzureQueueBatchContainerV2 (line 51) | public AzureQueueBatchContainerV2(StreamId streamId, List<object> even...
    method GetEvents (line 60) | public IEnumerable<Tuple<T, StreamSequenceToken>> GetEvents<T>()
    method ImportRequestContext (line 65) | public bool ImportRequestContext()
    method ToString (line 75) | public override string ToString()

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/AzureQueueStreamBuilder.cs
  type IAzureQueueStreamConfigurator (line 11) | public interface IAzureQueueStreamConfigurator : INamedServiceConfigurat...
  class AzureQueueStreamConfiguratorExtensions (line 13) | public static class AzureQueueStreamConfiguratorExtensions
    method ConfigureAzureQueue (line 15) | public static void ConfigureAzureQueue(this IAzureQueueStreamConfigura...
    method ConfigureQueueDataAdapter (line 20) | public static void ConfigureQueueDataAdapter(this IAzureQueueStreamCon...
    method ConfigureQueueDataAdapter (line 25) | public static void ConfigureQueueDataAdapter<TQueueDataAdapter>(this I...
  type ISiloAzureQueueStreamConfigurator (line 32) | public interface ISiloAzureQueueStreamConfigurator : IAzureQueueStreamCo...
  class SiloAzureQueueStreamConfiguratorExtensions (line 34) | public static class SiloAzureQueueStreamConfiguratorExtensions
    method ConfigureCacheSize (line 36) | public static void ConfigureCacheSize(this ISiloAzureQueueStreamConfig...
  class SiloAzureQueueStreamConfigurator (line 42) | public class SiloAzureQueueStreamConfigurator : SiloPersistentStreamConf...
    method SiloAzureQueueStreamConfigurator (line 44) | public SiloAzureQueueStreamConfigurator(string name, Action<Action<ISe...
  type IClusterClientAzureQueueStreamConfigurator (line 64) | public interface IClusterClientAzureQueueStreamConfigurator : IAzureQueu...
  class ClusterClientAzureQueueStreamConfigurator (line 66) | public class ClusterClientAzureQueueStreamConfigurator : ClusterClientPe...
    method ClusterClientAzureQueueStreamConfigurator (line 68) | public ClusterClientAzureQueueStreamConfigurator(string name, IClientB...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/AzureQueueStreamOptions.cs
  class AzureQueueOptions (line 16) | public class AzureQueueOptions
    method ConfigureQueueServiceClient (line 61) | [Obsolete($"Set the {nameof(QueueServiceClient)} property directly.")]
    method ConfigureQueueServiceClient (line 71) | [Obsolete($"Set the {nameof(QueueServiceClient)} property directly.")]
    method ConfigureQueueServiceClient (line 81) | [Obsolete($"Set the {nameof(QueueServiceClient)} property directly.")]
    method ConfigureQueueServiceClient (line 90) | [Obsolete($"Set the {nameof(QueueServiceClient)} property directly.")]
    method ConfigureQueueServiceClient (line 101) | [Obsolete($"Set the {nameof(QueueServiceClient)} property directly.")]
    method ConfigureQueueServiceClient (line 112) | [Obsolete($"Set the {nameof(QueueServiceClient)} property directly.")]
  class AzureQueueOptionsValidator (line 121) | public class AzureQueueOptionsValidator : IConfigurationValidator
    method AzureQueueOptionsValidator (line 126) | private AzureQueueOptionsValidator(AzureQueueOptions options, string n...
    method ValidateConfiguration (line 132) | public void ValidateConfiguration()
    method Create (line 144) | public static IConfigurationValidator Create(IServiceProvider services...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/AzureQueueStreamProviderUtils.cs
  class AzureQueueStreamProviderUtils (line 14) | public class AzureQueueStreamProviderUtils
    method GenerateDefaultAzureQueueNames (line 22) | public static List<string> GenerateDefaultAzureQueueNames(string servi...
    method DeleteAllUsedAzureQueues (line 35) | public static async Task DeleteAllUsedAzureQueues(ILoggerFactory logge...
    method DeleteAllUsedAzureQueues (line 48) | public static async Task DeleteAllUsedAzureQueues(ILoggerFactory logge...
    method ClearAllUsedAzureQueues (line 66) | public static async Task ClearAllUsedAzureQueues(ILoggerFactory logger...
    method ClearAllUsedAzureQueues (line 79) | public static async Task ClearAllUsedAzureQueues(ILoggerFactory logger...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/IAzureQueueDataAdapter.cs
  class AzureQueueDataAdapterV1 (line 15) | [SerializationCallbacks(typeof(OnDeserializedCallbacks))]
    method AzureQueueDataAdapterV1 (line 24) | public AzureQueueDataAdapterV1(Serializer serializer)
    method ToQueueMessage (line 32) | public string ToQueueMessage<T>(StreamId streamId, IEnumerable<T> even...
    method FromQueueMessage (line 42) | public IBatchContainer FromQueueMessage(string cloudMsg, long sequenceId)
    method OnDeserialized (line 49) | void IOnDeserialized.OnDeserialized(DeserializationContext context)
  class AzureQueueDataAdapterV2 (line 58) | [SerializationCallbacks(typeof(OnDeserializedCallbacks))]
    method AzureQueueDataAdapterV2 (line 67) | public AzureQueueDataAdapterV2(Serializer serializer)
    method ToQueueMessage (line 75) | public string ToQueueMessage<T>(StreamId streamId, IEnumerable<T> even...
    method FromQueueMessage (line 85) | public IBatchContainer FromQueueMessage(string cloudMsg, long sequenceId)
    method OnDeserialized (line 92) | void IOnDeserialized.OnDeserialized(DeserializationContext context)

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/PersistentStreams/AzureTableStorageStreamFailureHandler.cs
  class AzureTableStorageStreamFailureHandler (line 15) | public class AzureTableStorageStreamFailureHandler<TEntity> : IStreamFai...
    method AzureTableStorageStreamFailureHandler (line 32) | public AzureTableStorageStreamFailureHandler(Serializer<StreamSequence...
    method InitAsync (line 61) | public Task InitAsync()
    method OnDeliveryFailure (line 74) | public Task OnDeliveryFailure(GuidId subscriptionId, string streamProv...
    method OnSubscriptionFailure (line 88) | public Task OnSubscriptionFailure(GuidId subscriptionId, string stream...
    method OnFailure (line 94) | private async Task OnFailure(GuidId subscriptionId, string streamProvi...

FILE: src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/PersistentStreams/StreamDeliveryFailureEntity.cs
  class StreamDeliveryFailureEntity (line 12) | public class StreamDeliveryFailureEntity : ITableEntity
    method SetPartitionKey (line 47) | public virtual void SetPartitionKey(string deploymentId)
    method MakeDefaultPartitionKey (line 55) | public static string MakeDefaultPartitionKey(string streamProviderName...
    method SetRowkey (line 63) | public virtual void SetRowkey()
    method SetSequenceToken (line 73) | public virtual void SetSequenceToken(Serializer<StreamSequenceToken> s...
    method GetSequenceToken (line 82) | public virtual StreamSequenceToken GetSequenceToken(Serializer<StreamS...
    method ReverseOrderTimestampTicks (line 97) | protected static long ReverseOrderTimestampTicks()

FILE: src/Azure/Orleans.Streaming.AzureStorage/Storage/AzureQueueDataManager.cs
  class AzureQueueDefaultPolicies (line 27) | internal static class AzureQueueDefaultPolicies
    method AzureQueueDefaultPolicies (line 33) | static AzureQueueDefaultPolicies()
  class AzureQueueDataManager (line 47) | public partial class AzureQueueDataManager
    method AzureQueueDataManager (line 65) | public AzureQueueDataManager(ILoggerFactory loggerFactory, string queu...
    method ConfigureOptions (line 70) | private static AzureQueueOptions ConfigureOptions(string storageConnec...
    method AzureQueueDataManager (line 86) | public AzureQueueDataManager(ILoggerFactory loggerFactory, string queu...
    method GetQueueClient (line 97) | private ValueTask<QueueClient> GetQueueClient()
    method InitQueueAsync (line 111) | public async Task InitQueueAsync()
    method DeleteQueue (line 135) | public async Task DeleteQueue()
    method ClearQueue (line 161) | public async Task ClearQueue()
    method AddQueueMessage (line 193) | public async Task AddQueueMessage(string message)
    method PeekQueueMessage (line 215) | public async Task<PeekedMessage> PeekQueueMessage()
    method GetQueueMessage (line 241) | public async Task<QueueMessage> GetQueueMessage()
    method GetQueueMessages (line 269) | public async Task<IEnumerable<QueueMessage>> GetQueueMessages(int? cou...
    method DeleteQueueMessage (line 299) | public async Task DeleteQueueMessage(QueueMessage message)
    method GetAndDeleteQueueMessage (line 326) | internal async Task GetAndDeleteQueueMessage()
    method GetApproximateMessageCount (line 335) | public async Task<int> GetApproximateMessageCount()
    method CheckAlertSlowAccess (line 357) | private void CheckAlertSlowAccess(DateTime startOperation, string oper...
    method ReportErrorAndRethrow (line 366) | private void ReportErrorAndRethrow(Exception exc, string operation, Az...
    method GetCloudQueueClient (line 375) | private async Task<QueueClient> GetCloudQueueClient(AzureQueueOptions ...
    method SanitizeQueueName (line 389) | private static string SanitizeQueueName(string queueName)
    method ValidateQueueName (line 407) | private static void ValidateQueueName(string queueName)
    method LogInfoAzureQueueConnection (line 447) | [LoggerMessage(
    method LogTraceDeletingQueue (line 454) | [LoggerMessage(
    method LogInfoAzureQueueDeleted (line 460) | [LoggerMessage(
    method LogTraceClearingAQueue (line 467) | [LoggerMessage(
    method LogInfoAzureQueueClear (line 473) | [LoggerMessage(
    method LogTraceAddingMessage (line 480) | [LoggerMessage(
    method LogTracePeekingMessage (line 486) | [LoggerMessage(
    method LogTraceGettingMessage (line 492) | [LoggerMessage(
    method LogTraceGettingUpToMessages (line 498) | [LoggerMessage(
    method LogTraceDeletingAMessage (line 504) | [LoggerMessage(
    method LogTraceGetApproximateMessageCount (line 510) | [LoggerMessage(
    method LogWarningSlowAzureQueueAccess (line 516) | [LoggerMessage(
    method LogErrorCreatingAzureQueueClient (line 523) | [LoggerMessage(

FILE: src/Azure/Orleans.Streaming.AzureStorage/Utilities/AzureQueueErrorCode.cs
  type AzureQueueErrorCode (line 5) | [SuppressMessage("ReSharper", "InconsistentNaming")]

FILE: src/Azure/Orleans.Streaming.EventHubs/Hosting/ClientBuilderExtensions.cs
  class ClientBuilderExtensions (line 6) | public static class ClientBuilderExtensions
    method AddEventHubStreams (line 11) | public static IClientBuilder AddEventHubStreams(
    method AddEventHubStreams (line 24) | public static IClientBuilder AddEventHubStreams(

FILE: src/Azure/Orleans.Streaming.EventHubs/Hosting/DeveloperExtensions.cs
  class SiloBuilderExtensions (line 5) | public static class SiloBuilderExtensions
    method AddEventDataGeneratorStreams (line 10) | public static ISiloBuilder AddEventDataGeneratorStreams(

FILE: src/Azure/Orleans.Streaming.EventHubs/Hosting/SiloBuilderExtensions.cs
  class SiloBuilderExtensions (line 6) | public static class SiloBuilderExtensions
    method AddEventHubStreams (line 11) | public static ISiloBuilder AddEventHubStreams(
    method AddEventHubStreams (line 25) | public static ISiloBuilder AddEventHubStreams(

FILE: src/Azure/Orleans.Streaming.EventHubs/OrleansServiceBusErrorCode.cs
  type OrleansEventHubErrorCode (line 6) | internal enum OrleansEventHubErrorCode

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/EventDataGeneratorStreamProvider/EventDataGeneratorAdapterFactory.cs
  class EventDataGeneratorAdapterFactory (line 20) | public partial class EventDataGeneratorAdapterFactory : EventHubAdapterF...
    method EventDataGeneratorAdapterFactory (line 24) | public EventDataGeneratorAdapterFactory(
    method Init (line 41) | public override void Init()
    method InitEventHubClient (line 48) | protected override void InitEventHubClient()
    method GetPartitionIdsAsync (line 57) | protected override Task<string[]> GetPartitionIdsAsync()
    method EHGeneratorReceiverFactory (line 62) | private IEventHubReceiver EHGeneratorReceiverFactory(EventHubPartition...
    method RandomlyPlaceStreamToQueue (line 70) | private void RandomlyPlaceStreamToQueue(StreamRandomPlacementArg args)
    method StopProducingOnStream (line 93) | private void StopProducingOnStream(StreamId streamId)
    method GenerateEventHubPartitions (line 102) | public static string[] GenerateEventHubPartitions(int partitionCount)
    type Commands (line 113) | public enum Commands
    class StreamRandomPlacementArg (line 128) | [Serializable]
      method StreamRandomPlacementArg (line 149) | public StreamRandomPlacementArg(StreamId streamId, int randomNumber)
    method ExecuteCommand (line 162) | public virtual Task<object> ExecuteCommand(int command, object arg)
    method Create (line 178) | public new static EventDataGeneratorAdapterFactory Create(IServiceProv...
    method LogInfoStreamAssignedToQueue (line 195) | [LoggerMessage(
    method LogInfoCannotGetQueues (line 201) | [LoggerMessage(

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/EventDataGeneratorStreamProvider/EventDataGeneratorStreamOptions.cs
  class EventDataGeneratorStreamOptions (line 7) | public class EventDataGeneratorStreamOptions

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/EventDataGeneratorStreamProvider/EventHubPartitionDataGenerator.cs
  class SimpleStreamEventDataGenerator (line 17) | public partial class SimpleStreamEventDataGenerator : IStreamDataGenerat...
    method SimpleStreamEventDataGenerator (line 31) | public SimpleStreamEventDataGenerator(StreamId streamId, ILogger<Simpl...
    method TryReadEvents (line 41) | public bool TryReadEvents(int maxCount, out IEnumerable<EventData> eve...
    method GenerateEvent (line 80) | private static IEnumerable<int> GenerateEvent(int sequenceNumber)
    method CreateFactory (line 85) | public static Func<StreamId, IStreamDataGenerator<EventData>> CreateFa...
    method LogInfoGenerateData (line 90) | [LoggerMessage(
  class EventHubPartitionDataGenerator (line 100) | public partial class EventHubPartitionDataGenerator : IDataGenerator<Eve...
    method EventHubPartitionDataGenerator (line 115) | public EventHubPartitionDataGenerator(EventDataGeneratorStreamOptions ...
    method AddDataGeneratorForStream (line 123) | public void AddDataGeneratorForStream(StreamId streamId)
    method StopProducingOnStream (line 131) | public void StopProducingOnStream(StreamId streamId)
    method TryReadEvents (line 142) | public bool TryReadEvents(int maxCount, out IEnumerable<EventData> eve...
    method LogInfoOnStreamSetup (line 177) | [LoggerMessage(
    method LogInfoOnStreamStop (line 183) | [LoggerMessage(

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/EventDataGeneratorStreamProvider/EventHubPartitionGeneratorReceiver.cs
  class EventHubPartitionGeneratorReceiver (line 13) | public class EventHubPartitionGeneratorReceiver : IEventHubReceiver
    method EventHubPartitionGeneratorReceiver (line 20) | public EventHubPartitionGeneratorReceiver(IDataGenerator<EventData> ge...
    method ReceiveAsync (line 25) | public async Task<IEnumerable<EventData>> ReceiveAsync(int maxCount, T...
    method StopProducingOnStream (line 40) | public void StopProducingOnStream(StreamId streamId)
    method ConfigureDataGeneratorForStream (line 46) | public void ConfigureDataGeneratorForStream(StreamId streamId)
    method CloseAsync (line 52) | public Task CloseAsync()

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/EventDataGeneratorStreamProvider/IEventDataGenerator.cs
  type IDataGenerator (line 10) | public interface IDataGenerator<T>
    method TryReadEvents (line 18) | bool TryReadEvents(int maxCount, out IEnumerable<T> events);
  type IStreamDataGeneratingController (line 24) | public interface IStreamDataGeneratingController
    method AddDataGeneratorForStream (line 30) | void AddDataGeneratorForStream(StreamId streamId);
    method StopProducingOnStream (line 35) | void StopProducingOnStream(StreamId streamId);
  type IStreamDataGenerator (line 42) | public interface IStreamDataGenerator<T>: IDataGenerator<T>
  type IIntCounter (line 61) | public interface IIntCounter
    method Increment (line 70) | void Increment();
  class IntCounter (line 73) | internal class IntCounter : IIntCounter
    method Increment (line 77) | public void Increment()

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/EventDataGeneratorStreamProvider/NoOpCheckpointer.cs
  class NoOpCheckpointerFactory (line 7) | public class NoOpCheckpointerFactory : IStreamQueueCheckpointerFactory
    method Create (line 10) | public Task<IStreamQueueCheckpointer<string>> Create(string partition)
  class NoOpCheckpointer (line 20) | public class NoOpCheckpointer : IStreamQueueCheckpointer<string>
    method Load (line 25) | public Task<string> Load()
    method Update (line 29) | public void Update(string offset, DateTime utcNow)

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/CachePressureMonitors/AggregatedCachePressureMonitor.cs
  class AggregatedCachePressureMonitor (line 12) | public partial class AggregatedCachePressureMonitor : List<ICachePressur...
    method AggregatedCachePressureMonitor (line 26) | public AggregatedCachePressureMonitor(ILogger logger, ICacheMonitor mo...
    method RecordCachePressureContribution (line 37) | public void RecordCachePressureContribution(double cachePressureContri...
    method AddCachePressureMonitor (line 49) | public void AddCachePressureMonitor(ICachePressureMonitor monitor)
    method IsUnderPressure (line 59) | public bool IsUnderPressure(DateTime utcNow)
    method LogInfoIngestingMessagesTooFast (line 78) | [LoggerMessage(
    method LogInfoMessageIngestionIsHealthy (line 84) | [LoggerMessage(

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/CachePressureMonitors/AveragingCachePressureMonitor.cs
  class AveragingCachePressureMonitor (line 12) | public partial class AveragingCachePressureMonitor : ICachePressureMonitor
    method AveragingCachePressureMonitor (line 32) | public AveragingCachePressureMonitor(ILogger logger, ICacheMonitor mon...
    method AveragingCachePressureMonitor (line 42) | public AveragingCachePressureMonitor(double flowControlThreshold, ILog...
    method RecordCachePressureContribution (line 52) | public void RecordCachePressureContribution(double cachePressureContri...
    method IsUnderPressure (line 62) | public bool IsUnderPressure(DateTime utcNow)
    method CalculatePressure (line 72) | private void CalculatePressure()
    method LogDebugIngestingMessagesTooFast (line 102) | [LoggerMessage(
    method LogDebugMessageIngestionIsHealthy (line 108) | [LoggerMessage(

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/CachePressureMonitors/ICachePressureMonitor.cs
  type ICachePressureMonitor (line 10) | public interface ICachePressureMonitor
    method RecordCachePressureContribution (line 16) | void RecordCachePressureContribution(double cachePressureContribution);
    method IsUnderPressure (line 23) | bool IsUnderPressure(DateTime utcNow);

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/CachePressureMonitors/SlowConsumingPressureMonitor.cs
  class SlowConsumingPressureMonitor (line 10) | public partial class SlowConsumingPressureMonitor : ICachePressureMonitor
    method SlowConsumingPressureMonitor (line 44) | public SlowConsumingPressureMonitor(ILogger logger, ICacheMonitor moni...
    method SlowConsumingPressureMonitor (line 54) | public SlowConsumingPressureMonitor(TimeSpan pressureWindowSize, ILogg...
    method SlowConsumingPressureMonitor (line 65) | public SlowConsumingPressureMonitor(double flowControlThreshold, ILogg...
    method SlowConsumingPressureMonitor (line 77) | public SlowConsumingPressureMonitor(double flowControlThreshold, TimeS...
    method RecordCachePressureContribution (line 89) | public void RecordCachePressureContribution(double cachePressureContri...
    method IsUnderPressure (line 96) | public bool IsUnderPressure(DateTime utcNow)
    method LogDebugIngestingMessagesTooFast (line 129) | [LoggerMessage(
    method LogDebugMessageIngestionIsHealthy (line 135) | [LoggerMessage(

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventDataExtensions.cs
  class EventDataExtensions (line 11) | public static class EventDataExtensions
    method SetStreamNamespaceProperty (line 20) | public static void SetStreamNamespaceProperty(this EventData eventData...
    method GetStreamNamespaceProperty (line 30) | public static string GetStreamNamespaceProperty(this EventData eventData)
    method SerializeProperties (line 43) | public static byte[] SerializeProperties(this EventData eventData, Ser...
    method DeserializeProperties (line 52) | public static IDictionary<string, object> DeserializeProperties(this A...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventDataGeneratorStreamConfigurator.cs
  type IEventDataGeneratorStreamConfigurator (line 11) | public interface IEventDataGeneratorStreamConfigurator : ISiloRecoverabl...
  class EventDataGeneratorConfiguratorExtensions (line 13) | public static class EventDataGeneratorConfiguratorExtensions
    method UseDataAdapter (line 15) | public static void UseDataAdapter(this IEventDataGeneratorStreamConfig...
    method ConfigureCachePressuring (line 20) | public static void ConfigureCachePressuring(this IEventDataGeneratorSt...
  class EventDataGeneratorStreamConfigurator (line 26) | public class EventDataGeneratorStreamConfigurator : SiloRecoverableStrea...
    method EventDataGeneratorStreamConfigurator (line 28) | public EventDataGeneratorStreamConfigurator(string name,

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubAdapterFactory.cs
  class EventHubAdapterFactory (line 21) | public class EventHubAdapterFactory : IQueueAdapterFactory, IQueueAdapte...
    method EventHubAdapterFactory (line 105) | public EventHubAdapterFactory(
    method Init (line 129) | public virtual void Init()
    method InitCheckpointerFactory (line 160) | private void InitCheckpointerFactory()
    method CreateAdapter (line 168) | public async Task<IQueueAdapter> CreateAdapter()
    method GetQueueAdapterCache (line 182) | public IQueueAdapterCache GetQueueAdapterCache()
    method GetStreamQueueMapper (line 191) | public IStreamQueueMapper GetStreamQueueMapper()
    method GetDeliveryFailureHandler (line 202) | public Task<IStreamFailureHandler> GetDeliveryFailureHandler(QueueId q...
    method QueueMessageBatchAsync (line 216) | public virtual Task QueueMessageBatchAsync<T>(StreamId streamId, IEnum...
    method CreateReceiver (line 229) | public IQueueAdapterReceiver CreateReceiver(QueueId queueId)
    method CreateQueueCache (line 238) | public IQueueCache CreateQueueCache(QueueId queueId)
    method GetOrCreateReceiver (line 243) | private EventHubAdapterReceiver GetOrCreateReceiver(QueueId queueId)
    method InitEventHubClient (line 248) | protected virtual void InitEventHubClient()
    method CreateCacheFactory (line 261) | protected virtual IEventHubQueueCacheFactory CreateCacheFactory(EventH...
    method MakeReceiver (line 268) | private EventHubAdapterReceiver MakeReceiver(QueueId queueId)
    method GetPartitionIdsAsync (line 299) | protected virtual async Task<string[]> GetPartitionIdsAsync()
    method Create (line 304) | public static EventHubAdapterFactory Create(IServiceProvider services,...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubAdapterReceiver.cs
  class EventHubPartitionSettings (line 21) | public class EventHubPartitionSettings
  class EventHubAdapterReceiver (line 36) | internal partial class EventHubAdapterReceiver : IQueueAdapterReceiver, ...
    method GetMaxAddCount (line 64) | public int GetMaxAddCount()
    method EventHubAdapterReceiver (line 69) | public EventHubAdapterReceiver(EventHubPartitionSettings settings,
    method Initialize (line 89) | public Task Initialize(TimeSpan timeout)
    method Initialize (line 104) | private async Task Initialize()
    method GetQueueMessagesAsync (line 130) | public async Task<IList<IBatchContainer>> GetQueueMessagesAsync(int ma...
    method AddToCache (line 195) | public void AddToCache(IList<IBatchContainer> messages)
    method TryPurgeFromCache (line 200) | public bool TryPurgeFromCache(out IList<IBatchContainer> purgedItems)
    method GetCacheCursor (line 211) | public IQueueCacheCursor GetCacheCursor(StreamId streamId, StreamSeque...
    method IsUnderPressure (line 216) | public bool IsUnderPressure()
    method MessagesDeliveredAsync (line 221) | public Task MessagesDeliveredAsync(IList<IBatchContainer> messages)
    method Shutdown (line 226) | public async Task Shutdown(TimeSpan timeout)
    method CreateReceiver (line 266) | private static IEventHubReceiver CreateReceiver(EventHubPartitionSetti...
    method ConfigureDataGeneratorForStream (line 275) | internal void ConfigureDataGeneratorForStream(StreamId streamId)
    method StopProducingOnStream (line 280) | internal void StopProducingOnStream(StreamId streamId)
    class StreamActivityNotificationBatch (line 285) | [GenerateSerializer]
      method StreamActivityNotificationBatch (line 294) | public StreamActivityNotificationBatch(StreamPosition position)
      method GetEvents (line 299) | public IEnumerable<Tuple<T, StreamSequenceToken>> GetEvents<T>() { t...
      method ImportRequestContext (line 300) | public bool ImportRequestContext() { throw new NotSupportedException...
    class Cursor (line 303) | private class Cursor : IQueueCacheCursor
      method Cursor (line 309) | public Cursor(IEventHubQueueCache cache, StreamId streamId, StreamSe...
      method Dispose (line 315) | public void Dispose()
      method GetCurrent (line 319) | public IBatchContainer GetCurrent(out Exception exception)
      method MoveNext (line 325) | public bool MoveNext()
      method Refresh (line 337) | public void Refresh(StreamSequenceToken token)
      method RecordDeliveryFailure (line 341) | public void RecordDeliveryFailure()
    method LogInfoInitializingEventHubPartition (line 346) | [LoggerMessage(
    method LogInfoStoppingReadingFromEventHubPartition (line 352) | [LoggerMessage(
    method LogWarningRetryingInitializationOfEventHubPartition (line 358) | [LoggerMessage(
    method LogWarningFailedToReadFromEventHubPartition (line 365) | [LoggerMessage(

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubBatchContainer.cs
  class EventHubBatchContainer (line 15) | [Serializable]
    method GetPayload (line 45) | private Body GetPayload() => payload ?? (payload = this.Serializer.Des...
    class Body (line 47) | [Serializable]
    method EventHubBatchContainer (line 60) | public EventHubBatchContainer(EventHubMessage eventHubMessage, Seriali...
    method EventHubBatchContainer (line 67) | [GeneratedActivatorConstructor]
    method GetEvents (line 78) | public IEnumerable<Tuple<T, StreamSequenceToken>> GetEvents<T>()
    method ImportRequestContext (line 88) | public bool ImportRequestContext()
    method ToEventData (line 101) | public static EventData ToEventData<T>(Serializer bodySerializer, Stre...
    method UpdateEventData (line 117) | public static void UpdateEventData<T>(EventData eventData, Serializer ...
    method CreateEventDataBody (line 123) | private static BinaryData CreateEventDataBody<T>(Serializer bodySerial...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubCheckpointer.cs
  class EventHubCheckpointerFactory (line 12) | public class EventHubCheckpointerFactory : IStreamQueueCheckpointerFactory
    method EventHubCheckpointerFactory (line 19) | public EventHubCheckpointerFactory(string providerName, AzureTableStre...
    method Create (line 27) | public Task<IStreamQueueCheckpointer<string>> Create(string partition)
    method CreateFactory (line 32) | public static IStreamQueueCheckpointerFactory CreateFactory(IServicePr...
  class EventHubCheckpointer (line 43) | public partial class EventHubCheckpointer : IStreamQueueCheckpointer<str...
    method Create (line 67) | public static async Task<IStreamQueueCheckpointer<string>> Create(Azur...
    method EventHubCheckpointer (line 74) | private EventHubCheckpointer(AzureTableStreamCheckpointerOptions optio...
    method Initialize (line 97) | private Task Initialize()
    method Load (line 106) | public async Task<string> Load()
    method Update (line 122) | public void Update(string offset, DateTime utcNow)
    method LogCreatingEventHubCheckpointer (line 142) | [LoggerMessage(

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubCheckpointerOptions.cs
  class AzureTableStreamCheckpointerOptions (line 6) | public class AzureTableStreamCheckpointerOptions : AzureStorageOperation...
  class AzureTableStreamCheckpointerOptionsValidator (line 22) | public class AzureTableStreamCheckpointerOptionsValidator : AzureStorage...
    method AzureTableStreamCheckpointerOptionsValidator (line 24) | public AzureTableStreamCheckpointerOptionsValidator(AzureTableStreamCh...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubConstants.cs
  class EventHubConstants (line 3) | internal class EventHubConstants

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubDataAdapter.cs
  class EventHubDataAdapter (line 13) | public class EventHubDataAdapter : IEventHubDataAdapter
    method EventHubDataAdapter (line 20) | public EventHubDataAdapter(Serialization.Serializer serializer)
    method GetBatchContainer (line 30) | public virtual IBatchContainer GetBatchContainer(ref CachedMessage cac...
    method GetBatchContainer (line 41) | protected virtual IBatchContainer GetBatchContainer(EventHubMessage ev...
    method GetSequenceToken (line 51) | public virtual StreamSequenceToken GetSequenceToken(ref CachedMessage ...
    method ToQueueMessage (line 56) | public virtual EventData ToQueueMessage<T>(StreamId streamId, IEnumera...
    method FromQueueMessage (line 62) | public virtual CachedMessage FromQueueMessage(StreamPosition streamPos...
    method GetStreamPosition (line 75) | public virtual StreamPosition GetStreamPosition(string partition, Even...
    method GetOffset (line 86) | public virtual string GetOffset(CachedMessage lastItemPurged)
    method GetPartitionKey (line 98) | public virtual string GetPartitionKey(StreamId streamId) => streamId.G...
    method GetStreamIdentity (line 105) | public virtual StreamId GetStreamIdentity(EventData queueMessage)
    method EncodeMessageIntoSegment (line 113) | protected virtual ArraySegment<byte> EncodeMessageIntoSegment(EventDat...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubMessage.cs
  class EventHubMessage (line 11) | [Serializable]
    method EventHubMessage (line 26) | public EventHubMessage(StreamId streamId, string partitionKey, string ...
    method EventHubMessage (line 42) | public EventHubMessage(CachedMessage cachedMessage, Serialization.Seri...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubPartitionCheckpointEntity.cs
  class EventHubPartitionCheckpointEntity (line 7) | internal class EventHubPartitionCheckpointEntity : ITableEntity
    method EventHubPartitionCheckpointEntity (line 15) | public EventHubPartitionCheckpointEntity()
    method Create (line 20) | public static EventHubPartitionCheckpointEntity Create(string streamPr...
    method MakePartitionKey (line 29) | public static string MakePartitionKey(string streamProviderName, strin...
    method MakeRowKey (line 35) | public static string MakeRowKey(string partition)

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubQueueCache.cs
  class EventHubQueueCache (line 14) | public partial class EventHubQueueCache : IEventHubQueueCache
    method EventHubQueueCache (line 49) | public EventHubQueueCache(
    method SignalPurge (line 76) | public void SignalPurge()
    method AddCachePressureMonitor (line 85) | public void AddCachePressureMonitor(ICachePressureMonitor monitor)
    method Dispose (line 95) | public void Dispose()
    method GetMaxAddCount (line 103) | public int GetMaxAddCount()
    method Add (line 114) | public List<StreamPosition> Add(List<EventData> messages, DateTime deq...
    method GetCursor (line 134) | public object GetCursor(StreamId streamId, StreamSequenceToken sequenc...
    method TryGetNextMessage (line 145) | public bool TryGetNextMessage(object cursorObj, out IBatchContainer me...
    method OnPurge (line 162) | private void OnPurge(CachedMessage? lastItemPurged, CachedMessage? new...
    method TryCalculateCachePressureContribution (line 183) | private bool TryCalculateCachePressureContribution(StreamSequenceToken...
    method GetSegment (line 204) | private ArraySegment<byte> GetSegment(int size)
    type DateTimeLogRecord (line 223) | private readonly struct DateTimeLogRecord(DateTime ts)
      method ToString (line 225) | public override string ToString() => LogFormatter.PrintDate(ts);
    method LogDebugCachePeriod (line 228) | [LoggerMessage(

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubQueueCacheFactory.cs
  class EventHubQueueCacheFactory (line 13) | public class EventHubQueueCacheFactory : IEventHubQueueCacheFactory
    method EventHubQueueCacheFactory (line 39) | public EventHubQueueCacheFactory(
    method CreateCache (line 63) | public IEventHubQueueCache CreateCache(string partition, IStreamQueueC...
    method CreateBufferPool (line 75) | protected virtual IObjectPool<FixedSizeBuffer> CreateBufferPool(Stream...
    method AddCachePressureMonitors (line 97) | protected virtual void AddCachePressureMonitors(
    method CreateCache (line 130) | protected virtual IEventHubQueueCache CreateCache(

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubSequenceToken.cs
  type IEventHubPartitionLocation (line 12) | public interface IEventHubPartitionLocation
  class EventHubSequenceToken (line 34) | [Serializable]
    method EventHubSequenceToken (line 51) | public EventHubSequenceToken(string eventHubOffset, long sequenceNumbe...
    method EventHubSequenceToken (line 63) | public EventHubSequenceToken() : base()
    method ToString (line 70) | public override string ToString()

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubSequenceTokenV2.cs
  class EventHubSequenceTokenV2 (line 14) | [Serializable]
    method EventHubSequenceTokenV2 (line 24) | public EventHubSequenceTokenV2(string eventHubOffset, long sequenceNum...
    method EventHubSequenceTokenV2 (line 35) | public EventHubSequenceTokenV2() : base()

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubStreamBuilder.cs
  type IEventHubStreamConfigurator (line 10) | public interface IEventHubStreamConfigurator : INamedServiceConfigurator {}
  class EventHubStreamConfiguratorExtensions (line 12) | public static class EventHubStreamConfiguratorExtensions
    method ConfigureEventHub (line 14) | public static void ConfigureEventHub(this IEventHubStreamConfigurator ...
    method UseDataAdapter (line 19) | public static void UseDataAdapter(this IEventHubStreamConfigurator con...
  type ISiloEventHubStreamConfigurator (line 25) | public interface ISiloEventHubStreamConfigurator : IEventHubStreamConfig...
  class SiloEventHubStreamConfiguratorExtensions (line 28) | public static class SiloEventHubStreamConfiguratorExtensions
    method ConfigureCheckpointer (line 30) | public static void ConfigureCheckpointer<TOptions>(this ISiloEventHubS...
    method ConfigurePartitionReceiver (line 36) | public static void ConfigurePartitionReceiver(this ISiloEventHubStream...
    method ConfigureCachePressuring (line 41) | public static void ConfigureCachePressuring(this ISiloEventHubStreamCo...
    method UseAzureTableCheckpointer (line 46) | public static void UseAzureTableCheckpointer(this ISiloEventHubStreamC...
  class SiloEventHubStreamConfigurator (line 52) | public class SiloEventHubStreamConfigurator : SiloRecoverableStreamConfi...
    method SiloEventHubStreamConfigurator (line 54) | public SiloEventHubStreamConfigurator(string name,
  type IClusterClientEventHubStreamConfigurator (line 66) | public interface IClusterClientEventHubStreamConfigurator : IEventHubStr...
  class ClusterClientEventHubStreamConfigurator (line 68) | public class ClusterClientEventHubStreamConfigurator : ClusterClientPers...
    method ClusterClientEventHubStreamConfigurator (line 70) | public ClusterClientEventHubStreamConfigurator(string name, IClientBui...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubStreamOptions.cs
  class EventHubOptions (line 14) | public class EventHubOptions
    method ConfigureEventHubConnection (line 46) | public void ConfigureEventHubConnection(string connectionString, strin...
    method ConfigureEventHubConnection (line 64) | public void ConfigureEventHubConnection(string fullyQualifiedNamespace...
    method ConfigureEventHubConnection (line 87) | public void ConfigureEventHubConnection(string fullyQualifiedNamespace...
    method ConfigureEventHubConnection (line 110) | public void ConfigureEventHubConnection(string fullyQualifiedNamespace...
    method ConfigureEventHubConnection (line 131) | public void ConfigureEventHubConnection(EventHubConnection connection,...
    method ConfigureEventHubConnection (line 143) | public void ConfigureEventHubConnection(CreateConnectionDelegate creat...
    method ValidateValues (line 151) | private static void ValidateValues(string eventHubName, string consume...
  class EventHubOptionsValidator (line 165) | public class EventHubOptionsValidator : IConfigurationValidator
    method EventHubOptionsValidator (line 169) | public EventHubOptionsValidator(EventHubOptions options, string name)
    method ValidateConfiguration (line 174) | public void ValidateConfiguration()
  class StreamCheckpointerConfigurationValidator (line 193) | public class StreamCheckpointerConfigurationValidator : IConfigurationVa...
    method StreamCheckpointerConfigurationValidator (line 197) | public StreamCheckpointerConfigurationValidator(IServiceProvider servi...
    method ValidateConfiguration (line 202) | public void ValidateConfiguration()
  class EventHubReceiverOptions (line 210) | public class EventHubReceiverOptions
  class EventHubStreamCachePressureOptions (line 223) | public class EventHubStreamCachePressureOptions

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/IEventHubDataAdapter.cs
  type IEventHubDataAdapter (line 9) | public interface IEventHubDataAdapter : IQueueDataAdapter<EventData>, IC...
    method FromQueueMessage (line 11) | CachedMessage FromQueueMessage(StreamPosition position, EventData queu...
    method GetStreamPosition (line 13) | StreamPosition GetStreamPosition(string partition, EventData queueMess...
    method GetOffset (line 15) | string GetOffset(CachedMessage cachedMessage);
    method GetPartitionKey (line 17) | string GetPartitionKey(StreamId streamId);
    method GetStreamIdentity (line 19) | StreamId GetStreamIdentity(EventData queueMessage);

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/IEventHubQueueCache.cs
  type IEventHubQueueCache (line 12) | public interface IEventHubQueueCache : IQueueFlowController, IDisposable
    method Add (line 20) | List<StreamPosition> Add(List<EventData> message, DateTime dequeueTime...
    method GetCursor (line 28) | object GetCursor(StreamId streamId, StreamSequenceToken sequenceToken);
    method TryGetNextMessage (line 35) | bool TryGetNextMessage(object cursorObj, out IBatchContainer message);
    method AddCachePressureMonitor (line 41) | void AddCachePressureMonitor(ICachePressureMonitor monitor);
    method SignalPurge (line 46) | void SignalPurge();

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/IEventHubQueueCacheFactory.cs
  type IEventHubQueueCacheFactory (line 9) | public interface IEventHubQueueCacheFactory
    method CreateCache (line 14) | IEventHubQueueCache CreateCache(string partition, IStreamQueueCheckpoi...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/IEventHubReceiver.cs
  type IEventHubReceiver (line 15) | public interface IEventHubReceiver
    method ReceiveAsync (line 23) | Task<IEnumerable<EventData>> ReceiveAsync(int maxCount, TimeSpan waitT...
    method CloseAsync (line 29) | Task CloseAsync();
  class EventHubReceiverProxy (line 35) | internal partial class EventHubReceiverProxy : IEventHubReceiver
    method EventHubReceiverProxy (line 39) | public EventHubReceiverProxy(EventHubPartitionSettings partitionSettin...
    method ReceiveAsync (line 79) | public async Task<IEnumerable<EventData>> ReceiveAsync(int maxCount, T...
    method CloseAsync (line 84) | public async Task CloseAsync()
    method LogInfoStartingRead (line 89) | [LoggerMessage(
    method LogInfoStartingReadLatest (line 95) | [LoggerMessage(
    method LogInfoStartingReadBegin (line 101) | [LoggerMessage(

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/StatisticMonitors/DefaultEventHubBlockPoolMonitor.cs
  class DefaultEventHubBlockPoolMonitor (line 9) | public class DefaultEventHubBlockPoolMonitor : DefaultBlockPoolMonitor
    method DefaultEventHubBlockPoolMonitor (line 15) | public DefaultEventHubBlockPoolMonitor(EventHubBlockPoolMonitorDimensi...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/StatisticMonitors/DefaultEventHubCacheMonitor.cs
  class DefaultEventHubCacheMonitor (line 9) | public class DefaultEventHubCacheMonitor : DefaultCacheMonitor
    method DefaultEventHubCacheMonitor (line 15) | public DefaultEventHubCacheMonitor(EventHubCacheMonitorDimensions dime...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/StatisticMonitors/DefaultEventHubReceiverMonitor.cs
  class DefaultEventHubReceiverMonitor (line 9) | public class DefaultEventHubReceiverMonitor : DefaultQueueAdapterReceive...
    method DefaultEventHubReceiverMonitor (line 15) | public DefaultEventHubReceiverMonitor(EventHubReceiverMonitorDimension...

FILE: src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/StatisticMonitors/MonitorAggregationDimentions.cs
  class EventHubMonitorAggregationDimensions (line 8) | public class EventHubMonitorAggregationDimensions
    method EventHubMonitorAggregationDimensions (line 19) | public EventHubMonitorAggregationDimensions(string ehHubPath)
    method EventHubMonitorAggregationDimensions (line 28) | public EventHubMonitorAggregationDimensions(EventHubMonitorAggregation...
    method EventHubMonitorAggregationDimensions (line 36) | public EventHubMonitorAggregationDimensions()
  class EventHubReceiverMonitorDimensions (line 44) | public class EventHubReceiverMonitorDimensions : EventHubMonitorAggregat...
    method EventHubReceiverMonitorDimensions (line 56) | public EventHubReceiverMonitorDimensions(EventHubMonitorAggregationDim...
    method EventHubReceiverMonitorDimensions (line 65) | public EventHubReceiverMonitorDimensions()
  class EventHubCacheMonitorDimensions (line 73) | public class EventHubCacheMonitorDimensions : EventHubReceiverMonitorDim...
    method EventHubCacheMonitorDimensions (line 86) | public EventHubCacheMonitorDimensions(EventHubMonitorAggregationDimens...
    method EventHubCacheMonitorDimensions (line 95) | public EventHubCacheMonitorDimensions()
  class EventHubBlockPoolMonitorDimensions (line 103) | public class EventHubBlockPoolMonitorDimensions : EventHubMonitorAggrega...
    method EventHubBlockPoolMonitorDimensions (line 115) | public EventHubBlockPoolMonitorDimensions(EventHubMonitorAggregationDi...
    method EventHubBlockPoolMonitorDimensions (line 124) | public EventHubBlockPoolMonitorDimensions()

FILE: src/Azure/Orleans.Transactions.AzureStorage/Hosting/AzureTableTransactionServicecollectionExtensions.cs
  class AzureTableTransactionServicecollectionExtensions (line 16) | public static class AzureTableTransactionServicecollectionExtensions
    method AddAzureTableTransactionalStateStorage (line 18) | internal static IServiceCollection AddAzureTableTransactionalStateStor...

FILE: src/Azure/Orleans.Transactions.AzureStorage/Hosting/AzureTableTransactionsSiloBuilderExtensions.cs
  class AzureTableTransactionSiloBuilderExtensions (line 8) | public static class AzureTableTransactionSiloBuilderExtensions
    method AddAzureTableTransactionalStateStorageAsDefault (line 13) | public static ISiloBuilder AddAzureTableTransactionalStateStorageAsDef...
    method AddAzureTableTransactionalStateStorage (line 21) | public static ISiloBuilder AddAzureTableTransactionalStateStorage(this...
    method AddAzureTableTransactionalStateStorageAsDefault (line 29) | public static ISiloBuilder AddAzureTableTransactionalStateStorageAsDef...
    method AddAzureTableTransactionalStateStorage (line 37) | public static ISiloBuilder AddAzureTableTransactionalStateStorage(this...

FILE: src/Azure/Orleans.Transactions.AzureStorage/TransactionalState/AzureTableTransactionalStateOptions.cs
  class AzureTableTransactionalStateOptions (line 5) | public class AzureTableTransactionalStateOptions : AzureStorageOperation...
  class AzureTableTransactionalStateOptionsValidator (line 22) | public class AzureTableTransactionalStateOptionsValidator : AzureStorage...
    method AzureTableTransactionalStateOptionsValidator (line 29) | public AzureTableTransactionalStateOptionsValidator(AzureTableTransact...

FILE: src/Azure/Orleans.Transactions.AzureStorage/TransactionalState/AzureTableTransactionalStateStorage.cs
  class AzureTableTransactionalStateStorage (line 13) | public partial class AzureTableTransactionalStateStorage<TState> : ITran...
    method AzureTableTransactionalStateStorage (line 24) | public AzureTableTransactionalStateStorage(TableClient table, string p...
    method Load (line 37) | public async Task<TransactionalStorageLoadResponse<TState>> Load()
    method Store (line 116) | public async Task<string> Store(string expectedETag, TransactionalStat...
    method FindState (line 215) | private bool FindState(long sequenceId, out int pos)
    method ReadKey (line 234) | private async Task<KeyEntity> ReadKey()
    method ReadStates (line 249) | private async Task<List<KeyValuePair<long, StateEntity>>> ReadStates()
    class BatchOperation (line 262) | private class BatchOperation
      method BatchOperation (line 271) | public BatchOperation(ILogger logger, KeyEntity key, TableClient table)
      method Add (line 282) | public async ValueTask Add(TableTransactionAction operation)
      method Flush (line 315) | public async Task Flush()
    method LogDebugLoadedV0Fresh (line 358) | [LoggerMessage(
    method LogCriticalPartitionError (line 364) | [LoggerMessage(
    type StatesLogRecord (line 370) | private readonly struct StatesLogRecord(List<KeyValuePair<long, StateE...
      method ToString (line 372) | public override string ToString() => string.Join(",", states.Select(...
    method LogDebugLoadedPartitionKeyRows (line 375) | [LoggerMessage(
    method LogErrorTransactionalStateLoadFailed (line 381) | [LoggerMessage(
    method LogTraceDeleteTransaction (line 387) | [LoggerMessage(
    method LogTraceUpdateTransaction (line 393) | [LoggerMessage(
    method LogTraceInsertTransaction (line 399) | [LoggerMessage(
    method LogTraceInsertWithCount (line 405) | [LoggerMessage(
    method LogTraceUpdateWithCount (line 411) | [LoggerMessage(
    method LogDebugStoredETag (line 417) | [LoggerMessage(
    method LogTraceBatchOpOk (line 423) | [LoggerMessage(
    method LogTraceBatchOpFailed (line 429) | [LoggerMessage(
    method LogErrorTransactionalStateStoreFailed (line 435) | [LoggerMessage(

FILE: src/Azure/Orleans.Transactions.AzureStorage/TransactionalState/AzureTableTransactionalStateStorageFactory.cs
  class AzureTableTransactionalStateStorageFactory (line 15) | public class AzureTableTransactionalStateStorageFactory : ITransactional...
    method Create (line 24) | public static ITransactionalStateStorageFactory Create(IServiceProvide...
    method AzureTableTransactionalStateStorageFactory (line 30) | public AzureTableTransactionalStateStorageFactory(string name, AzureTa...
    method Create (line 39) | public ITransactionalStateStorage<TState> Create<TState>(string stateN...
    method Participate (line 45) | public void Participate(ISiloLifecycle lifecycle)
    method MakePartitionKey (line 50) | private string MakePartitionKey(IGrainContext context, string stateName)
    method CreateTable (line 57) | private async Task CreateTable()
    method Init (line 66) | private Task Init(CancellationToken cancellationToken)

FILE: src/Azure/Orleans.Transactions.AzureStorage/TransactionalState/KeyEntity.cs
  class KeyEntity (line 7) | internal class KeyEntity : ITableEntity
    method KeyEntity (line 11) | public KeyEntity()

FILE: src/Azure/Orleans.Transactions.AzureStorage/TransactionalState/StateEntity.cs
  type StateEntity (line 12) | internal readonly struct StateEntity
    method StateEntity (line 25) | public StateEntity(TableEntity entity) => Entity = entity;
    method MakeRowKey (line 32) | public static string MakeRowKey(long sequenceId)
    method Create (line 64) | public static StateEntity Create<T>(JsonSerializerSettings JsonSettings,
    method GetState (line 80) | public T GetState<T>(JsonSerializerSettings jsonSettings)
    method SetState (line 85) | public void SetState<T>(T state, JsonSerializerSettings jsonSettings)
    method SetStateInternal (line 90) | private void SetStateInternal(string stringData)
    method GetStateInternal (line 124) | private string GetStateInternal()
    method GetPropertyOrDefault (line 143) | private object GetPropertyOrDefault(string key)
    method CheckMaxDataSize (line 149) | private static void CheckMaxDataSize(int dataSize, int maxDataSize)
    method GetPropertyNames (line 158) | private static IEnumerable<string> GetPropertyNames()

FILE: src/Azure/Shared/Cosmos/BaseEntity.cs
  class BaseEntity (line 17) | internal abstract class BaseEntity

FILE: src/Azure/Shared/Cosmos/CosmosIdSanitizer.cs
  class CosmosIdSanitizer (line 15) | internal static class CosmosIdSanitizer
    method Sanitize (line 23) | public static string Sanitize(string input)
    method Unsanitize (line 58) | public static string Unsanitize(string input)

FILE: src/Azure/Shared/Cosmos/CosmosOptions.cs
  class CosmosOptions (line 22) | public abstract class CosmosOptions
    method ConfigureCosmosClient (line 72) | public void ConfigureCosmosClient(string connectionString)
    method ConfigureCosmosClient (line 83) | public void ConfigureCosmosClient(string accountEndpoint, AzureKeyCred...
    method ConfigureCosmosClient (line 94) | public void ConfigureCosmosClient(string accountEndpoint, TokenCredent...
    method ConfigureCosmosClient (line 105) | public void ConfigureCosmosClient(string accountEndpoint, string authK...
    method ConfigureCosmosClient (line 114) | public void ConfigureCosmosClient(Func<IServiceProvider, ValueTask<Cos...
  type ICosmosOperationExecutor (line 128) | public interface ICosmosOperationExecutor
    method ExecuteOperation (line 138) | Task<TResult> ExecuteOperation<TArg, TResult>(Func<TArg, Task<TResult>...
  class DefaultCosmosOperationExecutor (line 141) | internal sealed class DefaultCosmosOperationExecutor : ICosmosOperationE...
    method ExecuteOperation (line 145) | public async Task<TResult> ExecuteOperation<TArg, TResult>(Func<TArg, ...

FILE: src/Azure/Shared/Cosmos/CosmosOptionsValidator.cs
  class CosmosOptionsValidator (line 19) | public class CosmosOptionsValidator<TOptions> : IConfigurationValidator ...
    method CosmosOptionsValidator (line 29) | public CosmosOptionsValidator(TOptions options, string name)
    method ValidateConfiguration (line 36) | public void ValidateConfiguration()

FILE: src/Azure/Shared/Storage/AzureStorageOperationOptions.cs
  class AzureStorageOperationOptionsValidator (line 142) | public class AzureStorageOperationOptionsValidator<TOptions> : IConfigur...
    method AzureStorageOperationOptionsValidator (line 144) | public AzureStorageOperationOptionsValidator(TOptions options, string ...
    method ValidateConfiguration (line 153) | public virtual void ValidateConfiguration()

FILE: src/Cassandra/Orleans.Clustering.Cassandra/CassandraClusteringTable.cs
  class CassandraClusteringTable (line 14) | internal sealed class CassandraClusteringTable : IMembershipTable
    method CassandraClusteringTable (line 25) | public CassandraClusteringTable(
    method InitializeMembershipTable (line 42) | async Task IMembershipTable.InitializeMembershipTable(bool tryInitTabl...
    method DeleteMembershipTableEntries (line 58) | async Task IMembershipTable.DeleteMembershipTableEntries(string cluste...
    method InsertRow (line 70) | async Task<bool> IMembershipTable.InsertRow(MembershipEntry entry, Tab...
    method UpdateRow (line 91) | async Task<bool> IMembershipTable.UpdateRow(MembershipEntry entry, str...
    method GetMembershipEntry (line 97) | private static MembershipEntry? GetMembershipEntry(Row row)
    method GetMembershipTableData (line 131) | private async Task<MembershipTableData> GetMembershipTableData(RowSet ...
    method ReadAll (line 163) | async Task<MembershipTableData> IMembershipTable.ReadAll()
    method ReadRow (line 168) | async Task<MembershipTableData> IMembershipTable.ReadRow(SiloAddress key)
    method UpdateIAmAlive (line 173) | async Task IMembershipTable.UpdateIAmAlive(MembershipEntry entry)
    method CleanupDefunctSiloEntries (line 194) | public async Task CleanupDefunctSiloEntries(DateTimeOffset beforeDate)

FILE: src/Cassandra/Orleans.Clustering.Cassandra/CassandraGatewayListProvider.cs
  class CassandraGatewayListProvider (line 14) | internal sealed class CassandraGatewayListProvider : IGatewayListProvider
    method CassandraGatewayListProvider (line 31) | public CassandraGatewayListProvider(
    method InitializeGatewayListProvider (line 50) | async Task IGatewayListProvider.InitializeGatewayListProvider()
    method GetGateways (line 63) | async Task<IList<Uri>> IGatewayListProvider.GetGateways()

FILE: src/Cassandra/Orleans.Clustering.Cassandra/Hosting/CassandraClusteringOptions.cs
  class CassandraClusteringOptions (line 12) | public class CassandraClusteringOptions
    method GetCassandraTtlSeconds (line 38) | internal int? GetCassandraTtlSeconds(ClusterMembershipOptions clusterM...
    method ConfigureClient (line 51) | public void ConfigureClient(string connectionString, string keyspace =...
    method ConfigureClient (line 69) | public void ConfigureClient(Func<IServiceProvider, Task<ISession>> con...

FILE: src/Cassandra/Orleans.Clustering.Cassandra/Hosting/CassandraMembershipHostingExtensions.cs
  class CassandraMembershipHostingExtensions (line 15) | public static class CassandraMembershipHostingExtensions
    method UseCassandraClustering (line 22) | public static IClientBuilder UseCassandraClustering(this IClientBuilde...
    method UseCassandraClustering (line 34) | public static IClientBuilder UseCassandraClustering(this IClientBuilde...
    method UseCassandraClustering (line 47) | public static IClientBuilder UseCassandraClustering(this IClientBuilde...
    method UseCassandraClustering (line 61) | public static IClientBuilder UseCassandraClustering(this IClientBuilde...
    method UseCassandraClustering (line 74) | public static ISiloBuilder UseCassandraClustering(this ISiloBuilder bu...
    method UseCassandraClustering (line 86) | public static ISiloBuilder UseCassandraClustering(this ISiloBuilder bu...
    method UseCassandraClustering (line 99) | public static ISiloBuilder UseCassandraClustering(this ISiloBuilder bu...
    method UseCassandraClustering (line 113) | public static ISiloBuilder UseCassandraClustering(this ISiloBuilder bu...

FILE: src/Cassandra/Orleans.Clustering.Cassandra/OrleansQueries.cs
  class OrleansQueries (line 14) | internal sealed class OrleansQueries
    method CreateInstance (line 30) | public static Task<OrleansQueries> CreateInstance(ISession session)
    method OrleansQueries (line 35) | private OrleansQueries(ISession session)
    method EnsureTableExistsAsync (line 43) | internal async Task EnsureTableExistsAsync(TimeSpan maxRetryDelay, int...
    method EnsureClusterVersionExistsAsync (line 65) | internal async Task EnsureClusterVersionExistsAsync(TimeSpan maxRetryD...
    method DoesClusterVersionAlreadyExistAsync (line 87) | private async Task<bool> DoesClusterVersionAlreadyExistAsync(string cl...
    method DoesTableAlreadyExistAsync (line 101) | private async Task<bool> DoesTableAlreadyExistAsync()
    method MakeTableAsync (line 119) | private async Task MakeTableAsync(int? ttlSeconds)
    method CheckIfClusterVersionExists (line 129) | public IStatement CheckIfClusterVersionExists(string clusterIdentifier...
    method CheckIfTableExists (line 134) | public IStatement CheckIfTableExists(string keyspace, ConsistencyLevel...
    method EnsureTableExists (line 144) | public IStatement EnsureTableExists(int? defaultTimeToLiveSeconds) => ...
    method InsertMembership (line 171) | public async ValueTask<IStatement> InsertMembership(string clusterIden...
    method InsertMembershipVersion (line 208) | public async ValueTask<IStatement> InsertMembershipVersion(string clus...
    method DeleteMembershipTableEntries (line 224) | public async ValueTask<IStatement> DeleteMembershipTableEntries(string...
    method UpdateIAmAliveTime (line 233) | public async ValueTask<IStatement> UpdateIAmAliveTime(string clusterId...
    method UpdateIAmAliveTimeWithTtL (line 266) | public async ValueTask<IStatement> UpdateIAmAliveTimeWithTtL(
    method DeleteMembershipEntry (line 319) | public async ValueTask<IStatement> DeleteMembershipEntry(string cluste...
    method UpdateMembership (line 339) | public async ValueTask<IStatement> UpdateMembership(string clusterIden...
    method MembershipReadVersion (line 370) | public async ValueTask<IStatement> MembershipReadVersion(string cluste...
    method MembershipReadAll (line 384) | public async ValueTask<IStatement> MembershipReadAll(string clusterIde...
    method MembershipReadRow (line 408) | public async ValueTask<IStatement> MembershipReadRow(string clusterIde...
    method GatewaysQuery (line 441) | public async ValueTask<IStatement> GatewaysQuery(string clusterIdentif...
    method PrepareStatementAsync (line 466) | private async ValueTask<PreparedStatement> PrepareStatementAsync(strin...
    method GetSuspectTimesString (line 473) | private static string? GetSuspectTimesString(MembershipEntry entry) =>

FILE: src/Dashboard/Orleans.Dashboard.Abstractions/NoProfilingAttribute.cs
  class NoProfilingAttribute (line 27) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inheri...

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/alert.tsx
  type AlertProps (line 3) | interface AlertProps {
  class Alert (line 9) | class Alert extends React.Component<AlertProps> {
    method constructor (line 10) | constructor(props: AlertProps) {
    method handleClick (line 15) | handleClick() {
    method render (line 21) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/brand-header.tsx
  function BrandHeader (line 4) | function BrandHeader() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/checkbox-filter.tsx
  type Settings (line 3) | interface Settings {
  type CheckboxFilterProps (line 8) | interface CheckboxFilterProps {
  type CheckboxFilterState (line 14) | interface CheckboxFilterState {
  class CheckboxFilter (line 18) | class CheckboxFilter extends React.Component<CheckboxFilterProps, Checkb...
    method constructor (line 19) | constructor(props: CheckboxFilterProps) {
    method handleChangeFilter (line 30) | handleChangeFilter(e: React.MouseEvent<HTMLAnchorElement>) {
    method render (line 44) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/counter-widget.tsx
  type CounterWidgetProps (line 3) | interface CounterWidgetProps {
  class CounterWidget (line 11) | class CounterWidget extends React.Component<CounterWidgetProps> {
    method constructor (line 12) | constructor(props: CounterWidgetProps) {
    method renderMore (line 17) | renderMore() {
    method render (line 26) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/display-grain-state.tsx
  type DisplayGrainStateProps (line 3) | interface DisplayGrainStateProps {
  class DisplayGrainState (line 7) | class DisplayGrainState extends React.Component<DisplayGrainStateProps> {
    method constructor (line 8) | constructor(props: DisplayGrainStateProps) {
    method render (line 12) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/gauge-widget.tsx
  type GaugeWidgetProps (line 4) | interface GaugeWidgetProps {
  type GaugeWidgetState (line 11) | interface GaugeWidgetState {
  class GaugeWidget (line 15) | class GaugeWidget extends React.Component<GaugeWidgetProps, GaugeWidgetS...
    method constructor (line 18) | constructor(props: GaugeWidgetProps) {
    method getWidth (line 27) | getWidth() {
    method getColour (line 33) | getColour(alpha: number): string {
    method renderChart (line 43) | renderChart() {
    method render (line 78) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/grain-method-table.tsx
  type GrainMethodValue (line 4) | interface GrainMethodValue {
  type GrainMethodTableProps (line 10) | interface GrainMethodTableProps {
  class GrainMethodTable (line 15) | class GrainMethodTable extends React.Component<GrainMethodTableProps> {
    method constructor (line 16) | constructor(props: GrainMethodTableProps) {
    method renderRow (line 21) | renderRow(value: GrainMethodValue) {
    method render (line 38) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/grain-table.tsx
  type GrainStat (line 4) | interface GrainStat {
  type AggregatedGrainStat (line 14) | interface AggregatedGrainStat {
  type GrainTableProps (line 23) | interface GrainTableProps {
  type GrainTableState (line 28) | interface GrainTableState {
  class GrainTable (line 33) | class GrainTable extends React.Component<GrainTableProps, GrainTableStat...
    method constructor (line 34) | constructor(props: GrainTableProps) {
    method getSorter (line 43) | getSorter(): ((a: AggregatedGrainStat, b: AggregatedGrainStat) => numb...
    method handleChangeSort (line 76) | handleChangeSort(e: React.MouseEvent<HTMLTableHeaderCellElement>) {
    method render (line 139) | render() {
  function sortByActivationCountAsc (line 253) | function sortByActivationCountAsc(a: AggregatedGrainStat, b: AggregatedG...
  function sortByActivationCountDesc (line 257) | function sortByActivationCountDesc(a: AggregatedGrainStat, b: Aggregated...
  function sortByGrainAsc (line 261) | function sortByGrainAsc(a: AggregatedGrainStat, b: AggregatedGrainStat):...
  function sortBygrainDesc (line 271) | function sortBygrainDesc(a: AggregatedGrainStat, b: AggregatedGrainStat)...
  function sortByExceptionRateAsc (line 275) | function sortByExceptionRateAsc(a: AggregatedGrainStat, b: AggregatedGra...
  function sortByExceptionRateDesc (line 279) | function sortByExceptionRateDesc(a: AggregatedGrainStat, b: AggregatedGr...
  function sortBytotalCallsAsc (line 283) | function sortBytotalCallsAsc(a: AggregatedGrainStat, b: AggregatedGrainS...
  function sortBytotalCallsDec (line 287) | function sortBytotalCallsDec(a: AggregatedGrainStat, b: AggregatedGrainS...
  function sortByTotalAwaitTimeAsc (line 291) | function sortByTotalAwaitTimeAsc(a: AggregatedGrainStat, b: AggregatedGr...
  function sortByTotalAwaitTimeDesc (line 301) | function sortByTotalAwaitTimeDesc(a: AggregatedGrainStat, b: AggregatedG...

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/loading.tsx
  class Loading (line 3) | class Loading extends React.Component {
    method render (line 4) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/menu.tsx
  type MenuSectionProps (line 3) | interface MenuSectionProps {
  type MenuItem (line 11) | interface MenuItem {
  type MenuProps (line 19) | interface MenuProps {
  class MenuSection (line 23) | class MenuSection extends React.Component<MenuSectionProps> {
    method render (line 24) | render() {
  class Menu (line 40) | class Menu extends React.Component<MenuProps> {
    method render (line 41) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/multi-series-chart-widget.tsx
  type MultiSeriesChartWidgetProps (line 6) | interface MultiSeriesChartWidgetProps {
  type MultiSeriesChartWidgetState (line 10) | interface MultiSeriesChartWidgetState {
  class MultiSeriesChartWidget (line 16) | class MultiSeriesChartWidget extends React.Component<MultiSeriesChartWid...
    method constructor (line 19) | constructor(props: MultiSeriesChartWidgetProps) {
    method componentDidMount (line 27) | componentDidMount() {
    method componentDidUpdate (line 31) | componentDidUpdate(prevProps: MultiSeriesChartWidgetProps, prevState: ...
    method getDimensions (line 39) | getDimensions() {
    method renderChart (line 47) | renderChart() {
    method render (line 93) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/page.tsx
  type PageProps (line 3) | interface PageProps {
  class Page (line 9) | class Page extends React.Component<PageProps> {
    method render (line 10) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/panel.tsx
  type PanelProps (line 3) | interface PanelProps {
  class Panel (line 10) | class Panel extends React.Component<PanelProps> {
    method render (line 11) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/preferences.tsx
  type Settings (line 6) | interface Settings {
  type PreferencesProps (line 11) | interface PreferencesProps {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/properties-widget.tsx
  type PropertiesWidgetProps (line 3) | interface PropertiesWidgetProps {
  class PropertiesWidget (line 7) | class PropertiesWidget extends React.Component<PropertiesWidgetProps> {
    method constructor (line 8) | constructor(props: PropertiesWidgetProps) {
    method renderRow (line 13) | renderRow(key: string) {
    method render (line 24) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/reminder-table.tsx
  type ReminderData (line 3) | interface ReminderData {
  type ReminderTableProps (line 12) | interface ReminderTableProps {
  type ReminderTableState (line 16) | interface ReminderTableState {
  class ReminderTable (line 24) | class ReminderTable extends React.Component<ReminderTableProps, Reminder...
    method constructor (line 25) | constructor(props: ReminderTableProps) {
    method handleChange (line 39) | handleChange(e: React.ChangeEvent<HTMLInputElement>) {
    method renderReminder (line 45) | renderReminder(reminderData: ReminderData, index: number) {
    method filterData (line 68) | filterData(data: ReminderData[]): ReminderData[] {
    method render (line 93) | render() {

FILE: src/Dashboard/Orleans.Dashboard.App/src/components/theme-buttons.tsx
  type ThemeButtonsProps (line 3) | interface ThemeButtonsProps {
  type ThemeButtonsState (line 9) | interface ThemeButtonsState {
  class ThemeButtons (line 13) | class ThemeButtons extends React.Component<ThemeButtonsProps, ThemeButto...
    method constructor (line 14) | constructor(props: ThemeButtonsProps) {
    method pickLight (line 23) | pickLight
Copy disabled (too large) Download .json
Condensed preview — 3194 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (18,186K chars).
[
  {
    "path": ".azure/pipelines/build.yaml",
    "chars": 2502,
    "preview": "trigger:\n  branches:\n    include:\n    - main\n    - 3.x\n  paths:\n    exclude:\n    - samples\n\nschedules:\n- cron: \"0 0 * * "
  },
  {
    "path": ".azure/pipelines/github-mirror.yaml",
    "chars": 1567,
    "preview": "trigger:\n  branches:\n    include:\n    - '*'\n\npr: none\n\nschedules:\n- cron: '0 */2 * * *'\n  displayName: Scheduled sync\n  "
  },
  {
    "path": ".azure/pipelines/nightly-main.yaml",
    "chars": 1905,
    "preview": "trigger: none\npr: none\n\nschedules:\n- cron: \"0 0 * * *\"\n  displayName: Publish nightly packages\n  branches:\n    include:\n"
  },
  {
    "path": ".azure/pipelines/templates/build.yaml",
    "chars": 11007,
    "preview": "parameters:\n  - name: build_configuration\n    displayName: Build configuration\n    type: string\n    default: Release\n   "
  },
  {
    "path": ".azure/pipelines/templates/vars.yaml",
    "chars": 1778,
    "preview": "# It seems that variables must be defined in their own file when using templates\n\nvariables:\n  build_flags: ' /m /v:m'\n "
  },
  {
    "path": ".azuredevops/dependabot.yml",
    "chars": 182,
    "preview": "version: 2\r\n\r\n# Disabling dependabot on Azure DevOps as this is a mirrored repo. Updates should go through github.\r\nenab"
  },
  {
    "path": ".config/1espt/PipelineAutobaseliningConfig.yml",
    "chars": 1450,
    "preview": "## DO NOT MODIFY THIS FILE MANUALLY. This is part of auto-baselining from 1ES Pipeline Templates. Go to [https://aka.ms/"
  },
  {
    "path": ".config/guardian/.gdnbaselines",
    "chars": 6874,
    "preview": "{\r\n  \"properties\": {\r\n    \"helpUri\": \"https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fu"
  },
  {
    "path": ".config/tsaoptions.json",
    "chars": 338,
    "preview": "{\n  \"areaPath\": \"DevDiv\\\\ASP.NET Core\\\\Orleans\",\n  \"codebaseName\": \"Orleans\",\n  \"instanceUrl\": \"https://devdiv.visualstu"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 989,
    "preview": "// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:\n// https://github.co"
  },
  {
    "path": ".editorconfig",
    "chars": 27807,
    "preview": "; EditorConfig to support per-solution formatting.\n; Use the EditorConfig VS add-in to make this work.\n; http://editorco"
  },
  {
    "path": ".gitattributes",
    "chars": 448,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n\n# St"
  },
  {
    "path": ".github/copilot-instructions.md",
    "chars": 3457,
    "preview": "## General\n\n* Make only high confidence suggestions when reviewing code changes.\n* Always use the latest version C#, cur"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 253,
    "preview": "version: 2\r\nupdates:\r\n  - package-ecosystem: \"dotnet-sdk\"\r\n    directory: \"/\"\r\n    schedule:\r\n      interval: \"weekly\"\r\n"
  },
  {
    "path": ".github/eventhubs-emulator/Config.json",
    "chars": 2166,
    "preview": "{\n  \"UserConfig\": {\n    \"NamespaceConfig\": [\n      {\n        \"Type\": \"EventHub\",\n        \"Name\": \"emulatorNs1\",\n        "
  },
  {
    "path": ".github/policies/resourceManagement.yml",
    "chars": 6224,
    "preview": "id: \r\nname: GitOps.PullRequestIssueManagement\r\ndescription: GitOps.PullRequestIssueManagement primitive\r\nowner: \r\nresour"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 24646,
    "preview": "name: .NET CI\non:\n  workflow_dispatch:\n  push:\n    branches:\n      - main\n  pull_request:\n    branches:\n      - main\n  m"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 1114,
    "preview": "name: CodeQL\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n    branches:\n      - main\n  merge_group:\n    types"
  },
  {
    "path": ".github/workflows/generate-api-diffs.yml",
    "chars": 1299,
    "preview": "name: Generate API Diffs\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron: '0 16 * * *' # 8am PST (16:00 UTC)\n\npermissio"
  },
  {
    "path": ".github/workflows/locker.yml",
    "chars": 1002,
    "preview": "name: Locker - Lock stale issues and PRs\non:\n  schedule:\n    - cron: '0 9 * * *' # Once per day, early morning PT\n\n  wor"
  },
  {
    "path": ".gitignore",
    "chars": 3139,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# Tool"
  },
  {
    "path": "Build.cmd",
    "chars": 78,
    "preview": "powershell -NoProfile -ExecutionPolicy unrestricted -Command \"./build.ps1 %1\"\n"
  },
  {
    "path": "CODE-OF-CONDUCT.md",
    "chars": 259,
    "preview": "# Code of Conduct\n\nThis project has adopted the code of conduct defined by the Contributor Covenant\nto clarify expected "
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 5776,
    "preview": "# Contributing to Orleans\n\nSome notes and guidelines for developers who want to contribute to Orleans.\n\n## Contributing "
  },
  {
    "path": "Directory.Build.props",
    "chars": 5456,
    "preview": "<Project>\n  <!-- Set the repository root into a variable -->\n  <PropertyGroup>\n    <SourceRoot>$(MSBuildThisFileDirector"
  },
  {
    "path": "Directory.Build.targets",
    "chars": 1317,
    "preview": "<Project>\n  <!-- Set InformationVersion here, since $(Version) is already set at this point. -->\n  <PropertyGroup>\n    <"
  },
  {
    "path": "Directory.Packages.props",
    "chars": 12545,
    "preview": "<Project>\n  <PropertyGroup>\n    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>\n    <CentralPackag"
  },
  {
    "path": "LICENSE",
    "chars": 1078,
    "preview": "The MIT License (MIT)\n\nCopyright (c) .NET Foundation\n\nPermission is hereby granted, free of charge, to any person obtain"
  },
  {
    "path": "NuGet.Config",
    "chars": 1182,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <packageSources>\n    <clear />\n    <!-- Feeds to use to restor"
  },
  {
    "path": "Orleans.slnx",
    "chars": 12873,
    "preview": "<Solution>\n  <Folder Name=\"/playground/\">\n    <Project Path=\"playground/ActivationSheddingToy/ActivationSheddingToy.cspr"
  },
  {
    "path": "Parallel-Tests.ps1",
    "chars": 2604,
    "preview": "param(\n    [string[]] $directories,\n    [string] $testFilter = $null)\n\n. .\\common.ps1\n\nInstall-Dotnet\n\n$maxDegreeOfParal"
  },
  {
    "path": "README.md",
    "chars": 17280,
    "preview": "<p align=\"center\">\n  <image src=\"https://raw.githubusercontent.com/dotnet/orleans/gh-pages/assets/logo_full.png\" alt=\"Or"
  },
  {
    "path": "SUPPORT.md",
    "chars": 1855,
    "preview": "# Support\n\n## How to file issues and get help  \n\nThis project uses GitHub [Issues](https://github.com/dotnet/orleans/iss"
  },
  {
    "path": "Test.cmd",
    "chars": 1747,
    "preview": "@if not defined _echo @echo off\nsetlocal\n\nif not defined BuildConfiguration SET BuildConfiguration=Debug\n\nSET CMDHOME=%~"
  },
  {
    "path": "TestAll.cmd",
    "chars": 632,
    "preview": "@setlocal\n@ECHO off\n\nSET CMDHOME=%~dp0\n@REM Remove trailing backslash \\\nset CMDHOME=%CMDHOME:~0,-1%\n\n@REM Due to more of"
  },
  {
    "path": "build.ps1",
    "chars": 1779,
    "preview": "# --------------------\n# Orleans build script\n# --------------------\n\n. ./common.ps1\n\n$scriptDir = Split-Path $script:My"
  },
  {
    "path": "common.ps1",
    "chars": 1688,
    "preview": "function Install-Dotnet \n{\n   $installDotnet = $true\n   try \n   {\n       # Check that the dotnet.exe command exists\n    "
  },
  {
    "path": "distributed-tests.yml",
    "chars": 5740,
    "preview": "variables:\n  clusterId: '{{ \"now\" | date: \"%s\" }}'\n  serviceId: '{{ \"now\" | date: \"%s\" }}'\n  framework: net8.0\n\njobs:\n  "
  },
  {
    "path": "es-metadata.yml",
    "chars": 181,
    "preview": "schemaVersion: 0.0.1\nisProduction: true\naccountableOwners:\n  service: 29f743e3-3a8f-4955-89e1-dcd58905919a\nrouting:\n  de"
  },
  {
    "path": "global.json",
    "chars": 73,
    "preview": "{\n  \"sdk\": {\n    \"rollForward\": \"major\",\n    \"version\": \"10.0.103\"\n  }\n}\n"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.AppHost/ActivationRebalancing.AppHost.csproj",
    "chars": 848,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Sdk Name=\"Aspire.AppHost.Sdk\" Version=\"13.0.0\" />\n\n  <PropertyGroup>\n    <OutputTy"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.AppHost/Program.cs",
    "chars": 537,
    "preview": "using Aspire.Hosting;\n\nvar builder = DistributedApplication.CreateBuilder(args);\n\nvar redis = builder.AddRedis(\"orleans-"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.AppHost/Properties/launchSettings.json",
    "chars": 1003,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/launchsettings.json\",\n  \"profiles\": {\n    \"https\": {\n      \"commandName\": \""
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.AppHost/appsettings.Development.json",
    "chars": 119,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  }\n}\n"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.AppHost/appsettings.json",
    "chars": 158,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\",\n      \"Aspir"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.Cluster/ActivationRebalancing.Cluster.csproj",
    "chars": 585,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net10.0</Targ"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.Cluster/Program.cs",
    "chars": 1879,
    "preview": "using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\n"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.Frontend/ActivationRebalancing.Frontend.csproj",
    "chars": 694,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>net10.0</TargetFramework>\n    <Nullable>en"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.Frontend/Controllers/StatsController.cs",
    "chars": 967,
    "preview": "using Microsoft.AspNetCore.Mvc;\nusing Orleans.Runtime;\nusing Orleans;\n\nnamespace ActivationRebalancing.Frontend.Controll"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.Frontend/Program.cs",
    "chars": 418,
    "preview": "using Orleans.Hosting;\n\nvar builder = WebApplication.CreateBuilder(args);\n\nbuilder.AddKeyedRedisClient(\"orleans-redis\");"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.Frontend/Properties/launchSettings.json",
    "chars": 308,
    "preview": "{\n  \"profiles\": {\n    \"http\": {\n      \"commandName\": \"Project\",\n      \"dotnetRunMessages\": true,\n      \"launchBrowser\": "
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.Frontend/appsettings.Development.json",
    "chars": 119,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  }\n}\n"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.Frontend/appsettings.json",
    "chars": 142,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  },\n  "
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.Frontend/wwwroot/index.html",
    "chars": 15958,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, in"
  },
  {
    "path": "playground/ActivationRebalancing/ActivationRebalancing.Frontend/wwwroot/worker.js",
    "chars": 938,
    "preview": "self.onmessage = function (e) {\n  try {\n    const data = e.data;\n    const totalActivations = data.reduce((sum, d) => su"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.AppHost/ActivationRepartitioning.AppHost.csproj",
    "chars": 812,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Sdk Name=\"Aspire.AppHost.Sdk\" Version=\"13.0.0\" />\n\n  <PropertyGroup>\n    <OutputT"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.AppHost/Program.cs",
    "chars": 379,
    "preview": "using Aspire.Hosting;\nusing Projects;\n\nvar builder = DistributedApplication.CreateBuilder(args);\n\nvar redis = builder.Ad"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.AppHost/Properties/launchSettings.json",
    "chars": 1003,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/launchsettings.json\",\n  \"profiles\": {\n    \"https\": {\n      \"commandName\": \""
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.AppHost/appsettings.Development.json",
    "chars": 119,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  }\n}\n"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.AppHost/appsettings.json",
    "chars": 158,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\",\n      \"Aspir"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/ActivationRepartitioning.Frontend.csproj",
    "chars": 591,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>net10.0</TargetFramework>\n    <Nullable>en"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/Data/ClusterDiagnosticsService.cs",
    "chars": 6125,
    "preview": "using System.Diagnostics;\nusing System.Runtime.InteropServices;\nusing Orleans.Core.Internal;\n\nnamespace ActivationRepart"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/Program.cs",
    "chars": 5082,
    "preview": "using ActivationRepartitioning.Frontend.Data;\nusing Microsoft.AspNetCore.Mvc;\nusing Orleans.Configuration;\nusing Orleans"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/Properties/launchSettings.json",
    "chars": 927,
    "preview": "{\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      "
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/appsettings.Development.json",
    "chars": 145,
    "preview": "{\n  \"DetailedErrors\": true,\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/appsettings.json",
    "chars": 142,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  },\n  "
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/wwwroot/css/open-iconic/FONT-LICENSE",
    "chars": 4017,
    "preview": "SIL OPEN FONT LICENSE Version 1.1\n\nCopyright (c) 2014 Waybury\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to "
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/wwwroot/css/open-iconic/ICON-LICENSE",
    "chars": 1073,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2014 Waybury\n\nPermission is hereby granted, free of charge, to any person obtaining"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/wwwroot/css/open-iconic/README.md",
    "chars": 3535,
    "preview": "[Open Iconic v1.1.1](https://github.com/iconic/open-iconic)\n===========\n\n### Open Iconic is the open source sibling of ["
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/wwwroot/css/site.css",
    "chars": 2910,
    "preview": "@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');\n\nhtml, body {\n    font-family: 'Helvetica Neue', Helv"
  },
  {
    "path": "playground/ActivationRepartitioning/ActivationRepartitioning.Frontend/wwwroot/index.html",
    "chars": 10707,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-w"
  },
  {
    "path": "playground/ActivationSheddingToy/ActivationSheddingToy.csproj",
    "chars": 678,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net10.0</Targ"
  },
  {
    "path": "playground/ActivationSheddingToy/ActivationSheddingToyHostedService.cs",
    "chars": 4072,
    "preview": "using Microsoft.Extensions.Hosting;\nusing Orleans;\nusing Orleans.Runtime;\nusing Orleans.Statistics;\n\ninternal sealed cla"
  },
  {
    "path": "playground/ActivationSheddingToy/Program.cs",
    "chars": 976,
    "preview": "using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\nusing Orleans.Configuration;\nusing O"
  },
  {
    "path": "playground/ChaoticCluster/ChaoticCluster.AppHost/ChaoticCluster.AppHost.csproj",
    "chars": 607,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Sdk Name=\"Aspire.AppHost.Sdk\" Version=\"13.0.0\" />\n\n  <PropertyGroup>\n    <OutputTy"
  },
  {
    "path": "playground/ChaoticCluster/ChaoticCluster.AppHost/Program.cs",
    "chars": 149,
    "preview": "using Projects;\n\nvar builder = DistributedApplication.CreateBuilder(args);\n\nbuilder.AddProject<ChaoticCluster_Silo>(\"sil"
  },
  {
    "path": "playground/ChaoticCluster/ChaoticCluster.AppHost/Properties/launchSettings.json",
    "chars": 1003,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/launchsettings.json\",\n  \"profiles\": {\n    \"https\": {\n      \"commandName\": \""
  },
  {
    "path": "playground/ChaoticCluster/ChaoticCluster.AppHost/appsettings.Development.json",
    "chars": 119,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\"\n    }\n  }\n}\n"
  },
  {
    "path": "playground/ChaoticCluster/ChaoticCluster.AppHost/appsettings.json",
    "chars": 158,
    "preview": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Warning\",\n      \"Aspir"
  },
  {
    "path": "playground/ChaoticCluster/ChaoticCluster.ServiceDefaults/ChaoticCluster.ServiceDefaults.csproj",
    "chars": 868,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net10.0</TargetFramework>\n    <ImplicitUsings>"
  },
  {
    "path": "playground/ChaoticCluster/ChaoticCluster.ServiceDefaults/Extensions.cs",
    "chars": 4053,
    "preview": "using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Diagnostics.HealthChecks;\nusing Microsoft.Extensions.Depe"
  },
  {
    "path": "playground/ChaoticCluster/ChaoticCluster.Silo/ChaoticCluster.Silo.csproj",
    "chars": 802,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net10.0</Targ"
  },
  {
    "path": "playground/ChaoticCluster/ChaoticCluster.Silo/Program.cs",
    "chars": 5357,
    "preview": "using System.Diagnostics;\nusing ChaoticCluster.Silo;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Ext"
  },
  {
    "path": "playground/ChaoticCluster/ChaoticCluster.Silo/SiloBuilderConfigurator.cs",
    "chars": 807,
    "preview": "using Orleans.TestingHost;\n\nnamespace ChaoticCluster.Silo;\n\nclass SiloBuilderConfigurator : ISiloConfigurator\n    {\n    "
  },
  {
    "path": "playground/DashboardCohosted/DashboardCohosted.csproj",
    "chars": 712,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</T"
  },
  {
    "path": "playground/DashboardCohosted/Program.cs",
    "chars": 441,
    "preview": "using Orleans.Dashboard;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n// Configure Orleans\nbuilder.UseOrleans(sil"
  },
  {
    "path": "playground/DashboardCohosted/Properties/launchSettings.json",
    "chars": 280,
    "preview": "{\n  \"profiles\": {\n    \"DashboardCohosted\": {\n      \"commandName\": \"Project\",\n      \"launchBrowser\": true,\n      \"environ"
  },
  {
    "path": "playground/DashboardCohosted/README.md",
    "chars": 2717,
    "preview": "# Orleans Dashboard - Cohosted Example\n\nThis example demonstrates how to cohost the Orleans Dashboard within the same we"
  },
  {
    "path": "playground/DashboardSeparateHost/DashboardSeparateHost.csproj",
    "chars": 712,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</T"
  },
  {
    "path": "playground/DashboardSeparateHost/Program.cs",
    "chars": 1393,
    "preview": "using Orleans.Configuration;\nusing Orleans.Dashboard;\nusing Orleans.Runtime.MembershipService.SiloMetadata;\nusing System"
  },
  {
    "path": "playground/DashboardSeparateHost/Properties/launchSettings.json",
    "chars": 284,
    "preview": "{\n  \"profiles\": {\n    \"DashboardSeparateHost\": {\n      \"commandName\": \"Project\",\n      \"launchBrowser\": true,\n      \"env"
  },
  {
    "path": "playground/DashboardSeparateHost/README.md",
    "chars": 3674,
    "preview": "# Orleans Dashboard - Separate Host Example\n\nThis example demonstrates how to host the Orleans Dashboard in a separate w"
  },
  {
    "path": "playground/Directory.Build.props",
    "chars": 689,
    "preview": "<Project>\n  <PropertyGroup>\n    <_ParentDirectoryBuildPropsPath Condition=\"'$(_DirectoryBuildPropsFile)' != ''\">$([Syste"
  },
  {
    "path": "samples/README.md",
    "chars": 13319,
    "preview": "# Orleans Samples\n\n> [!IMPORTANT]\n> 📢 This collection of samples has been moved to the official [`dotnet/samples` reposi"
  },
  {
    "path": "sign/NuGet.Config",
    "chars": 721,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <packageSources>\n    <clear />\n    <add key=\"dotnet-eng\" value"
  },
  {
    "path": "sign/Sign.proj",
    "chars": 3545,
    "preview": "<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under t"
  },
  {
    "path": "sign/Sign.props",
    "chars": 5289,
    "preview": "<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under t"
  },
  {
    "path": "sign/packages.config",
    "chars": 264,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<packages>\n  <package id=\"Microsoft.DotNet.SignTool\" version=\"6.0.0-beta.20630.2"
  },
  {
    "path": "spelling.dic",
    "chars": 30,
    "preview": "Parsable\nstackalloc\nImpl\naddr\n"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/AWSUtilsHostingExtensions.cs",
    "chars": 3940,
    "preview": "using Microsoft.Extensions.DependencyInjection;\nusing Orleans.Clustering.DynamoDB;\nusing Orleans.Configuration;\nusing Or"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/DynamoDBClusteringProviderBuilder.cs",
    "chars": 5555,
    "preview": "using System;\nusing Microsoft.Extensions.Configuration;\nusing Orleans;\nusing Orleans.Hosting;\nusing Orleans.Providers;\n\n"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/Membership/DynamoDBGatewayListProvider.cs",
    "chars": 4212,
    "preview": "using Amazon.DynamoDBv2;\nusing Amazon.DynamoDBv2.Model;\nusing Microsoft.Extensions.Logging;\nusing Microsoft.Extensions.O"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/Membership/DynamoDBGatewayListProviderHelper.cs",
    "chars": 3238,
    "preview": "using System;\nusing System.Linq;\nusing Orleans.Configuration;\n\nnamespace Orleans.Clustering.DynamoDB\n{\n    /// <inheritd"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/Membership/DynamoDBMembershipHelper.cs",
    "chars": 3727,
    "preview": "using Orleans.Configuration;\nusing System;\nusing System.Linq;\n\nnamespace Orleans.Clustering.DynamoDB\n{\n    /// <inheritd"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/Membership/DynamoDBMembershipTable.cs",
    "chars": 30020,
    "preview": "using Amazon.DynamoDBv2;\nusing Amazon.DynamoDBv2.Model;\nusing Microsoft.Extensions.Logging;\nusing Microsoft.Extensions.O"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/Membership/SiloInstanceRecord.cs",
    "chars": 8997,
    "preview": "using Amazon.DynamoDBv2.Model;\nusing System;\nusing System.Collections.Generic;\nusing System.Net;\nusing System.Text;\n\nnam"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/Options/DynamoDBClusteringOptions.cs",
    "chars": 1185,
    "preview": "using Orleans.Clustering.DynamoDB;\n\nnamespace Orleans.Configuration\n{\n    public class DynamoDBClusteringOptions : Dynam"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/Options/DynamoDBClusteringSiloOptions.cs",
    "chars": 278,
    "preview": "namespace Orleans.Configuration\n{\n    public class DynamoDBClusteringSiloOptions\n    {\n        /// <summary>\n        //"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/Options/DynamoDBGatewayOptions.cs",
    "chars": 1182,
    "preview": "using Orleans.Clustering.DynamoDB;\n\nnamespace Orleans.Configuration\n{\n    public class DynamoDBGatewayOptions : DynamoDB"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/Orleans.Clustering.DynamoDB.csproj",
    "chars": 1444,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <PackageReadmeFile>README.md</PackageReadmeFile>\n    <PackageId>"
  },
  {
    "path": "src/AWS/Orleans.Clustering.DynamoDB/README.md",
    "chars": 2948,
    "preview": "# Microsoft Orleans Clustering for DynamoDB\n\n## Introduction\nMicrosoft Orleans Clustering for DynamoDB provides cluster "
  },
  {
    "path": "src/AWS/Orleans.Persistence.DynamoDB/Hosting/DynamoDBGrainStorageProviderBuilder.cs",
    "chars": 4073,
    "preview": "using System;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft."
  },
  {
    "path": "src/AWS/Orleans.Persistence.DynamoDB/Hosting/DynamoDBGrainStorageServiceCollectionExtensions.cs",
    "chars": 2735,
    "preview": "using System;\nusing Microsoft.Extensions.DependencyInjection;\nusing Orleans.Runtime;\nusing Orleans.Storage;\nusing Micros"
  },
  {
    "path": "src/AWS/Orleans.Persistence.DynamoDB/Hosting/DynamoDBGrainStorageSiloBuilderExtensions.cs",
    "chars": 1894,
    "preview": "using System;\nusing Microsoft.Extensions.Options;\nusing Orleans.Configuration;\nusing Orleans.Providers;\n\nnamespace Orlea"
  },
  {
    "path": "src/AWS/Orleans.Persistence.DynamoDB/Options/DynamoDBStorageOptions.cs",
    "chars": 3979,
    "preview": "using System;\nusing Orleans.Persistence.DynamoDB;\nusing Orleans.Runtime;\nusing Orleans.Storage;\n\nnamespace Orleans.Confi"
  },
  {
    "path": "src/AWS/Orleans.Persistence.DynamoDB/Orleans.Persistence.DynamoDB.csproj",
    "chars": 1450,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <PackageReadmeFile>README.md</PackageReadmeFile>\n    <PackageId>"
  },
  {
    "path": "src/AWS/Orleans.Persistence.DynamoDB/Provider/DynamoDBGrainStorage.cs",
    "chars": 19377,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Text;\nusing Syst"
  },
  {
    "path": "src/AWS/Orleans.Persistence.DynamoDB/README.md",
    "chars": 2935,
    "preview": "# Microsoft Orleans Persistence for DynamoDB\n\n## Introduction\nMicrosoft Orleans Persistence for DynamoDB provides grain "
  },
  {
    "path": "src/AWS/Orleans.Reminders.DynamoDB/DynamoDBRemindersProviderBuilder.cs",
    "chars": 2867,
    "preview": "using Microsoft.Extensions.Configuration;\nusing Orleans;\nusing Orleans.Hosting;\nusing Orleans.Providers;\n\n[assembly: Reg"
  },
  {
    "path": "src/AWS/Orleans.Reminders.DynamoDB/DynamoDBServiceCollectionReminderExtensions.cs",
    "chars": 1227,
    "preview": "using Microsoft.Extensions.DependencyInjection;\nusing Orleans.Configuration;\nusing Orleans.Reminders.DynamoDB;\nusing Sys"
  },
  {
    "path": "src/AWS/Orleans.Reminders.DynamoDB/DynamoDBSiloBuilderReminderExtensions.cs",
    "chars": 928,
    "preview": "using Orleans.Configuration;\nusing System;\n\nnamespace Orleans.Hosting\n{\n    /// <summary>\n    /// Silo host builder exte"
  },
  {
    "path": "src/AWS/Orleans.Reminders.DynamoDB/Orleans.Reminders.DynamoDB.csproj",
    "chars": 1644,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <PackageReadmeFile>README.md</PackageReadmeFile>\n    <PackageId>"
  },
  {
    "path": "src/AWS/Orleans.Reminders.DynamoDB/README.md",
    "chars": 4004,
    "preview": "# Microsoft Orleans Reminders for DynamoDB\n\n## Introduction\nMicrosoft Orleans Reminders for DynamoDB provides persistenc"
  },
  {
    "path": "src/AWS/Orleans.Reminders.DynamoDB/Reminders/DynamoDBReminderTable.cs",
    "chars": 19216,
    "preview": "using Amazon.DynamoDBv2;\nusing Amazon.DynamoDBv2.Model;\nusing Microsoft.Extensions.Logging;\nusing Microsoft.Extensions.O"
  },
  {
    "path": "src/AWS/Orleans.Reminders.DynamoDB/Reminders/DynamoDbReminderServiceOptions.cs",
    "chars": 369,
    "preview": "namespace Orleans.Configuration\n{\n    /// <summary>\n    /// Configuration for Amazon DynamoDB reminder storage.\n    /// "
  },
  {
    "path": "src/AWS/Orleans.Reminders.DynamoDB/Reminders/DynamoDbReminderStorageOptions.cs",
    "chars": 1293,
    "preview": "using Orleans.Reminders.DynamoDB;\n\nnamespace Orleans.Configuration\n{\n    /// <summary>\n    /// Configuration for Amazon "
  },
  {
    "path": "src/AWS/Orleans.Reminders.DynamoDB/Reminders/DynamoDbReminderStorageOptionsExtensions.cs",
    "chars": 4945,
    "preview": "using System;\nusing System.Linq;\n\nnamespace Orleans.Configuration\n{\n    /// <summary>\n    /// Configuration for Amazon D"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Hosting/ClientBuilderExtensions.cs",
    "chars": 994,
    "preview": "using System;\nusing Orleans.Configuration;\n\nnamespace Orleans.Hosting\n{\n    public static class ClientBuilderExtensions"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Hosting/SiloBuilderExtensions.cs",
    "chars": 1022,
    "preview": "using System;\nusing Orleans.Configuration;\n\nnamespace Orleans.Hosting\n{\n    public static class SiloBuilderExtensions\n  "
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Orleans.Streaming.SQS.csproj",
    "chars": 1044,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <PackageReadmeFile>README.md</PackageReadmeFile>\n    <PackageId>"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/README.md",
    "chars": 4017,
    "preview": "# Microsoft Orleans Streaming for Amazon SQS\n\n## Introduction\nMicrosoft Orleans Streaming for Amazon SQS provides a stre"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Storage/SQSStorage.cs",
    "chars": 9400,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Amazon.Runtime;\nu"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Streams/SQSAdapter.cs",
    "chars": 2910,
    "preview": "using Orleans.Streams;\nusing OrleansAWSUtils.Storage;\nusing System;\nusing System.Collections.Concurrent;\nusing System.Co"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Streams/SQSAdapterFactory.cs",
    "chars": 4213,
    "preview": "using System;\nusing System.Threading.Tasks;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.L"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Streams/SQSAdapterReceiver.cs",
    "chars": 5143,
    "preview": "using Orleans;\nusing Orleans.Streams;\nusing OrleansAWSUtils.Storage;\nusing System;\nusing System.Collections.Generic;\nusi"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Streams/SQSBatchContainer.cs",
    "chars": 3714,
    "preview": "using Amazon.SQS.Model;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing Orleans.Providers.Streams.Common;\nusing"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Streams/SQSStreamBuilder.cs",
    "chars": 2702,
    "preview": "using System;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Options;\nusing Orleans.Configur"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Streams/SQSStreamProviderUtils.cs",
    "chars": 1425,
    "preview": "using System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.Extensions.Logging;\n"
  },
  {
    "path": "src/AWS/Orleans.Streaming.SQS/Streams/SqsStreamOptions.cs",
    "chars": 148,
    "preview": "\nnamespace Orleans.Configuration\n{\n    public class SqsOptions\n    {\n        [Redact]\n        public string ConnectionS"
  },
  {
    "path": "src/AWS/Shared/AWSUtils.cs",
    "chars": 1863,
    "preview": "using Amazon;\nusing System;\n\n#if CLUSTERING_DYNAMODB\nnamespace Orleans.Clustering.DynamoDB\n#elif PERSISTENCE_DYNAMODB\nna"
  },
  {
    "path": "src/AWS/Shared/Storage/DynamoDBClientOptions.cs",
    "chars": 1053,
    "preview": "#if CLUSTERING_DYNAMODB\nnamespace Orleans.Clustering.DynamoDB\n#elif PERSISTENCE_DYNAMODB\nnamespace Orleans.Persistence.D"
  },
  {
    "path": "src/AWS/Shared/Storage/DynamoDBStorage.cs",
    "chars": 52587,
    "preview": "using Amazon.DynamoDBv2;\nusing Amazon.DynamoDBv2.Model;\nusing Amazon.Runtime;\nusing Microsoft.Extensions.Logging;\nusing "
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/AdoNetClusteringProviderBuilder.cs",
    "chars": 2860,
    "preview": "using System;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft."
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/AdoNetHostingExtensions.cs",
    "chars": 5613,
    "preview": "using System;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Options;\nusing Orleans.Messagin"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Messaging/AdoNetClusteringTable.cs",
    "chars": 12967,
    "preview": "using System;\nusing System.Threading.Tasks;\nusing Microsoft.Extensions.Logging;\nusing Microsoft.Extensions.Options;\nusin"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Messaging/AdoNetGatewayListProvider.cs",
    "chars": 2807,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Microsoft.Extensions.Logging;\nusing "
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Migrations/MySQL-Clustering-3.7.0.sql",
    "chars": 277,
    "preview": "INSERT INTO OrleansQuery(QueryKey, QueryText)\nVALUES\n(\n    'CleanupDefunctSiloEntriesKey','\n    DELETE FROM OrleansMembe"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Migrations/Oracle-Clustering-3.7.0.sql",
    "chars": 295,
    "preview": "INSERT INTO OrleansQuery(QueryKey, QueryText)\nVALUES\n(\n  'DeleteMembershipTableEntriesKey','\n  BEGIN\n    DELETE FROM Orl"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Migrations/PostgreSQL-Clustering-3.6.0.sql",
    "chars": 5073,
    "preview": "-- Run this migration for upgrading the PostgreSQL clustering table and routines for deployments created before 3.6.0\n\nB"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Migrations/PostgreSQL-Clustering-3.7.0.sql",
    "chars": 278,
    "preview": "INSERT INTO OrleansQuery(QueryKey, QueryText)\nVALUES\n(\n    'CleanupDefunctSiloEntriesKey','\n    DELETE FROM OrleansMembe"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Migrations/SQLServer-Clustering-3.7.0.sql",
    "chars": 400,
    "preview": "INSERT INTO OrleansQuery(QueryKey, QueryText)\nSELECT\n    'CleanupDefunctSiloEntriesKey',\n    'DELETE FROM OrleansMembers"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/MySQL-Clustering.sql",
    "chars": 6801,
    "preview": "-- For each deployment, there will be only one (active) membership version table version column which will be updated pe"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Options/AdoNetClusteringClientOptions.cs",
    "chars": 421,
    "preview": "namespace Orleans.Configuration\n{\n    public class AdoNetClusteringClientOptions\n    {\n        /// <summary>\n        //"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Options/AdoNetClusteringClientOptionsValidator.cs",
    "chars": 1259,
    "preview": "using Microsoft.Extensions.Options;\nusing Orleans.Runtime;\nusing Orleans.Runtime.MembershipService;\n\nnamespace Orleans.C"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Options/AdoNetClusteringSiloOptions.cs",
    "chars": 501,
    "preview": "namespace Orleans.Configuration\n{\n    /// <summary>\n    /// Options for ADO.NET clustering\n    /// </summary>\n    publi"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Options/AdoNetReminderTableOptionsValidator.cs",
    "chars": 1245,
    "preview": "using Microsoft.Extensions.Options;\nusing Orleans.Runtime;\nusing Orleans.Runtime.MembershipService;\n\nnamespace Orleans.C"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Oracle-Clustering.sql",
    "chars": 8243,
    "preview": "-- For each deployment, there will be only one (active) membership version table version column which will be updated pe"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/Orleans.Clustering.AdoNet.csproj",
    "chars": 1104,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <PackageId>Microsoft.Orleans.Clustering.AdoNet</PackageId>\n    <"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/PostgreSQL-Clustering.sql",
    "chars": 9539,
    "preview": "-- For each deployment, there will be only one (active) membership version table version column which will be updated pe"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/README.md",
    "chars": 5240,
    "preview": "# Microsoft Orleans Clustering Provider for ADO.NET\n\n## Introduction\nMicrosoft Orleans Clustering Provider for ADO.NET a"
  },
  {
    "path": "src/AdoNet/Orleans.Clustering.AdoNet/SQLServer-Clustering.sql",
    "chars": 6640,
    "preview": "-- For each deployment, there will be only one (active) membership version table version column which will be updated pe"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/AdoNetGrainDirectory.cs",
    "chars": 7470,
    "preview": "namespace Orleans.GrainDirectory.AdoNet;\n\ninternal sealed partial class AdoNetGrainDirectory(string name, AdoNetGrainDir"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/AdoNetGrainDirectoryEntry.cs",
    "chars": 1235,
    "preview": "namespace Orleans.GrainDirectory.AdoNet;\n\n/// <summary>\n/// The model that represents a grain activation in an ADONET gr"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/AdoNetGrainDirectoryOptions.cs",
    "chars": 470,
    "preview": "namespace Orleans.GrainDirectory.AdoNet;\n\n/// <summary>\n/// Options for the ADO.NET Grain Directory.\n/// </summary>\npubl"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/GlobalSuppressions.cs",
    "chars": 623,
    "preview": "// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Pro"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/Hosting/AdoNetGrainDirectoryProviderBuilder.cs",
    "chars": 1392,
    "preview": "using static System.String;\n\n[assembly: RegisterProvider(\"AdoNet\", \"GrainDirectory\", \"Silo\", typeof(AdoNetGrainDirectory"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/Hosting/AdoNetGrainDirectoryServiceCollectionExtensions.cs",
    "chars": 1075,
    "preview": "using Orleans.Runtime.Hosting;\n\nnamespace Orleans.Hosting;\n\n/// <summary>\n/// <see cref=\"IServiceCollection\"/> extension"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/Hosting/AdoNetGrainDirectorySiloBuilderExtensions.cs",
    "chars": 1239,
    "preview": "namespace Orleans.Hosting;\n\npublic static class AdoNetGrainDirectorySiloBuilderExtensions\n{\n    public static ISiloBuild"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/MySQL-GrainDirectory.sql",
    "chars": 5407,
    "preview": "/*\nOrleans Grain Directory.\nThis table stores the location of all grains in the cluster.\n\nNOTE:\nThe combination of Clust"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/Options/AdoNetGrainDirectoryOptionsValidator.cs",
    "chars": 1147,
    "preview": "using static System.String;\n\nnamespace Orleans.Configuration;\n\n/// <summary>\n/// Validates <see cref=\"AdoNetGrainDirecto"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/Orleans.GrainDirectory.AdoNet.csproj",
    "chars": 1290,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <PackageId>Microsoft.Orleans.GrainDirectory.AdoNet</PackageId>"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/PostgreSQL-GrainDirectory.sql",
    "chars": 4615,
    "preview": "/*\nOrleans Grain Directory.\nThis table stores the location of all grains in the cluster.\n\nNOTE:\nThe combination of Clust"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/Properties/Usings.cs",
    "chars": 707,
    "preview": "global using System;\nglobal using System.Collections.Generic;\nglobal using System.ComponentModel.DataAnnotations;\nglobal"
  },
  {
    "path": "src/AdoNet/Orleans.GrainDirectory.AdoNet/SQLServer-GrainDirectory.sql",
    "chars": 5599,
    "preview": "/*\nOrleans Grain Directory.\nThis table stores the location of all grains in the cluster.\n\nNOTE:\nThe combination of Clust"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/AdoNetGrainStorageProviderBuilder.cs",
    "chars": 1918,
    "preview": "using System;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft."
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Migrations/PostgreSQL-Persistence-3.6.0.sql",
    "chars": 4980,
    "preview": "-- Run this migration for upgrading the PostgreSQL persistence table and routines for deployments created before 3.6.0\n\n"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/MySQL-Persistence.sql",
    "chars": 14256,
    "preview": "-- The design criteria for this table are:\n--\n-- 1. It can contain arbitrary content serialized as binary, XML or JSON. "
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Options/AdoNetGrainStorageOptions.cs",
    "chars": 4772,
    "preview": "using Microsoft.Extensions.Options;\nusing Orleans.Persistence.AdoNet.Storage;\nusing Orleans.Runtime;\nusing Orleans.Stora"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Oracle-Persistence.sql",
    "chars": 14064,
    "preview": "-- The design criteria for this table are:\n--\n-- 1. It can contain arbitrary content serialized as binary, XML or JSON. "
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Orleans.Persistence.AdoNet.csproj",
    "chars": 1295,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <PackageId>Microsoft.Orleans.Persistence.AdoNet</PackageId>\n    "
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/PostgreSQL-Persistence.sql",
    "chars": 8154,
    "preview": "CREATE TABLE OrleansStorage\n(\n    grainidhash integer NOT NULL,\n    grainidn0 bigint NOT NULL,\n    grainidn1 bigint NOT "
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/README.md",
    "chars": 4247,
    "preview": "# Microsoft Orleans Persistence for ADO.NET\n\n## Introduction\nMicrosoft Orleans Persistence for ADO.NET provides grain pe"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/SQLServer-Persistence.sql",
    "chars": 14093,
    "preview": "-- The design criteria for this table are:\n--\n-- 1. It can contain arbitrary content serialized as binary, XML or JSON. "
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Sqlite-Persistence.sql",
    "chars": 8839,
    "preview": "-- The design criteria for this table are:\n--\n-- 1. It can contain arbitrary content serialized as binary, XML or JSON. "
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/AdoGrainKey.cs",
    "chars": 3441,
    "preview": "using System;\nusing System.Globalization;\nusing System.Text;\n\n\nnamespace Orleans.Storage\n{\n    /// <summary>\n    /// Thi"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/AdoNetGrainStorage.cs",
    "chars": 30096,
    "preview": "using Orleans.Persistence.AdoNet.Storage;\nusing Orleans.Providers;\nusing Orleans.Runtime;\nusing System;\nusing System.Col"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/AdoNetGrainStorageServiceCollectionExtensions.cs",
    "chars": 3993,
    "preview": "using System;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.DependencyInjection.Extensions;"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/AdoNetGrainStorageSiloBuilderExtensions.cs",
    "chars": 2982,
    "preview": "using System;\nusing Microsoft.Extensions.Options;\nusing Orleans.Configuration;\nusing Orleans.Providers;\n\nnamespace Orlea"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/IHasher.cs",
    "chars": 733,
    "preview": "namespace Orleans.Storage\n{\n    /// <summary>\n    /// An interface for all the hashing operations currently in Orleans "
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/IStorageHashPicker.cs",
    "chars": 1392,
    "preview": "using Orleans.Runtime;\nusing System.Collections.Generic;\n\n\nnamespace Orleans.Storage\n{\n    /// <summary>\n    /// A picke"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/JenkinsHash.cs",
    "chars": 2944,
    "preview": "using System;\n\nnamespace Orleans.Storage\n{\n    // Based on the version in http://home.comcast.net/~bretm/hash/7.html, wh"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/Orleans3CompatibleHasher.cs",
    "chars": 1027,
    "preview": "using System;\n\nnamespace Orleans.Storage\n{\n    /// <summary>\n    /// Orleans v3-compatible hasher implementation for non"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/Orleans3CompatibleStorageHashPicker.cs",
    "chars": 1563,
    "preview": "using System.Collections.Generic;\nusing Orleans.Runtime;\n\nnamespace Orleans.Storage\n{\n    /// <summary>\n    /// Orleans "
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/Orleans3CompatibleStringKeyHasher.cs",
    "chars": 3838,
    "preview": "using System;\nusing System.Buffers;\nusing System.Text;\n\nnamespace Orleans.Storage\n{\n    /// <summary>\n    /// Orleans v3"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/OrleansDefaultHasher.cs",
    "chars": 576,
    "preview": "namespace Orleans.Storage\n{\n    /// <summary>\n    /// A default implementation uses the same hash as Orleans in grains p"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/RelationalStorageProviderQueries.cs",
    "chars": 1811,
    "preview": "namespace Orleans.Storage;\n\n/// <summary>\n/// A container class for the queries currently used by the <see cref=\"AdoNetG"
  },
  {
    "path": "src/AdoNet/Orleans.Persistence.AdoNet/Storage/Provider/StorageHasherPicker.cs",
    "chars": 1306,
    "preview": "using Orleans.Runtime;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing Syste"
  },
  {
    "path": "src/AdoNet/Orleans.Reminders.AdoNet/AdoNetRemindersProviderBuilder.cs",
    "chars": 1587,
    "preview": "using System;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft."
  },
  {
    "path": "src/AdoNet/Orleans.Reminders.AdoNet/Migrations/PostgreSQL-Reminders-3.6.0.sql",
    "chars": 1510,
    "preview": "-- Run this migration for upgrading the PostgreSQL reminder table and routines for deployments created before 3.6.0\n\nBEG"
  },
  {
    "path": "src/AdoNet/Orleans.Reminders.AdoNet/MySQL-Reminders.sql",
    "chars": 3304,
    "preview": "-- Orleans Reminders table - https://learn.microsoft.com/dotnet/orleans/grains/timers-and-reminders\nCREATE TABLE Orleans"
  }
]

// ... and 2994 more files (download for full content)

About this extraction

This page contains the full source code of the dotnet/orleans GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3194 files (16.6 MB), approximately 4.5M tokens, and a symbol index with 37670 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!