示例#1
0
        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));
        }
示例#2
0
        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));
        }