GlobalState.fromReader constructor

GlobalState.fromReader(
  1. TeleportObjectReader reader
)

Implementation

factory GlobalState.fromReader(TeleportObjectReader reader) {
    final instance = GlobalState();
    TeleportField? field;
    while ((field = reader.next()) != null) {
        if (field!.isNull) continue;
        switch (field.fieldId) {
            case fieldIdClients: {
                final dr = field.asDictionary();
                final map = <int, Context>{};
                TeleportDictEntry? en;
                while ((en = dr.next()) != null) {
                    final entry = en!;
                    map[entry.keyAsInt32()] = Context.fromReader(entry.valueAsField().asObject());
                }
                instance.clients = map;
                break;
            }
            case fieldIdFunctions: {
                final dr = field.asDictionary();
                final map = <int, List<ActionFunctionRegister>>{};
                TeleportDictEntry? en;
                while ((en = dr.next()) != null) {
                    final entry = en!;
                    map[entry.keyAsInt32()] = _readGlobalStateArray0(entry.valueAsField().asArray());
                }
                instance.functions = map;
                break;
            }
            case fieldIdUIStreams: {
                final dr = field.asDictionary();
                final map = <String, UIStreamState>{};
                TeleportDictEntry? en;
                while ((en = dr.next()) != null) {
                    final entry = en!;
                    map[entry.keyAsString()] = UIStreamState.fromReader(entry.valueAsField().asObject());
                }
                instance.uIStreams = map;
                break;
            }
            case fieldIdAudioStreams: {
                final dr = field.asDictionary();
                final map = <String, AudioStreamState>{};
                TeleportDictEntry? en;
                while ((en = dr.next()) != null) {
                    final entry = en!;
                    map[entry.keyAsString()] = AudioStreamState.fromReader(entry.valueAsField().asObject());
                }
                instance.audioStreams = map;
                break;
            }
            case fieldIdVideoStreams: {
                final dr = field.asDictionary();
                final map = <String, VideoStreamState>{};
                TeleportDictEntry? en;
                while ((en = dr.next()) != null) {
                    final entry = en!;
                    map[entry.keyAsString()] = VideoStreamState.fromReader(entry.valueAsField().asObject());
                }
                instance.videoStreams = map;
                break;
            }
            case fieldIdSpaceId: {
                instance.spaceId = field.asString();
                break;
            }
            case fieldIdIkonServerId: {
                instance.ikonServerId = field.asString();
                break;
            }
            case fieldIdAppSessionId: {
                instance.appSessionId = field.asString();
                break;
            }
            case fieldIdSessionIdentityHash: {
                instance.sessionIdentityHash = field.asString();
                break;
            }
            case fieldIdSpaceUrl: {
                instance.spaceUrl = field.asString();
                break;
            }
            case fieldIdSessionUrl: {
                instance.sessionUrl = field.asString();
                break;
            }
            case fieldIdFirstUserId: {
                instance.firstUserId = field.asString();
                break;
            }
            case fieldIdPrimaryUserId: {
                instance.primaryUserId = field.asString();
                break;
            }
            case fieldIdOrganisationName: {
                instance.organisationName = field.asString();
                break;
            }
            case fieldIdSpaceName: {
                instance.spaceName = field.asString();
                break;
            }
            case fieldIdServerRunType: {
                instance.serverRunType = ServerRunType.fromValue(field.asInt32());
                break;
            }
            case fieldIdPublicAccess: {
                instance.publicAccess = field.asBool();
                break;
            }
            case fieldIdDebugMode: {
                instance.debugMode = field.asBool();
                break;
            }
            case retiredFieldIdSessionHash: {
                final bag = instance.retiredFields ??= GlobalStateRetiredFields();
                bag.sessionHash = field.asString();
                break;
            }
            case retiredFieldIdSessionChannelUrl: {
                final bag = instance.retiredFields ??= GlobalStateRetiredFields();
                bag.sessionChannelUrl = field.asString();
                break;
            }
            case retiredFieldIdChannelUrl: {
                final bag = instance.retiredFields ??= GlobalStateRetiredFields();
                bag.channelUrl = field.asString();
                break;
            }
            case retiredFieldIdServerSessionId: {
                final bag = instance.retiredFields ??= GlobalStateRetiredFields();
                bag.serverSessionId = field.asString();
                break;
            }
        }
    }
    return instance;
}