internal static TenantPartitionHint Deserialize(byte[] buffer) { if (buffer == null) { throw new ArgumentNullException("buffer"); } int num = 0; int num2 = SerializedValue.ParseInt32(buffer, ref num); if (num2 < 1) { throw new InvalidSerializedFormatException("Invalid version for the serialized blob: " + num2.ToString()); } TenantPartitionHint.SerializedTenantHintFlags serializedTenantHintFlags = (TenantPartitionHint.SerializedTenantHintFlags)SerializedValue.ParseInt32(buffer, ref num); Guid?guid = null; if ((serializedTenantHintFlags & TenantPartitionHint.SerializedTenantHintFlags.ExternalDirectoryOrganizationIdPresent) == TenantPartitionHint.SerializedTenantHintFlags.ExternalDirectoryOrganizationIdPresent) { guid = new Guid?(SerializedValue.ParseGuid(buffer, ref num)); } string text = SerializedValue.ParseString(buffer, ref num); string text2 = SerializedValue.ParseString(buffer, ref num); if (text != null && text2 != null) { PartitionId partitionId = new PartitionId(text2); return(new TenantPartitionHint(partitionId, text)); } if (guid != null) { return(new TenantPartitionHint(guid.Value)); } return(new TenantPartitionHint(TenantPartitionHint.ExternalDirectoryOrganizationIdForRootOrg)); }
private static int Serialize(byte[] buffer, TenantPartitionHint hint) { int num = 0; num += SerializedValue.SerializeInt32(1, buffer, num); TenantPartitionHint.SerializedTenantHintFlags serializedTenantHintFlags = TenantPartitionHint.SerializedTenantHintFlags.None; if (hint.externalDirectoryOrganizationId != null) { serializedTenantHintFlags |= TenantPartitionHint.SerializedTenantHintFlags.ExternalDirectoryOrganizationIdPresent; } num += SerializedValue.SerializeInt32((int)serializedTenantHintFlags, buffer, num); if (hint.externalDirectoryOrganizationId != null) { num += SerializedValue.SerializeGuid(hint.externalDirectoryOrganizationId.Value, buffer, num); } num += SerializedValue.SerializeString(hint.tenantName, buffer, num); string value = null; if (hint.partitionId != null && hint.partitionId.ForestFQDN != null) { value = hint.partitionId.ForestFQDN; } return(num + SerializedValue.SerializeString(value, buffer, num)); }