Sıralanan Veri

Hizmet sistemi yönetilirken :javadoc: sabit veri işlemcisi veriyi depolamak için iyi bir yöntemdir, bilgisayar başlatılırken devam etmez. Fakat, :javadoc: her veri işlemcisi :javadoc: veri serilerinin ara birimini tamamlar ve böylelikle veri deposu sıralanabilir :javadoc: ve veri oluşturucu tarafından seriden paralele çevrilir. :javadoc.

Ön dönüşüm veri yönlendiricisinden genel yapıya çevrildikten sonra veri deposu daha ileriye yönlendirebilir.

Veri Deposu ve Veri Görüntüsü

Bir :javadoc: Veri Görüntüsü herhangi bir veri çeşidini depolamak için genel amaçlı bir yapıdır. Veri görüntüsü bir değer olarak çoklu değerleri destekleyebilir ve hatta iç içe geçirilebilir, böylelikle sıralama yapısı için izin verilir. Her değer bir veri sorgusu tarafında :javadoc: tanımlanır. Veri deposu veri görüntüsünün bir kök dizinidir.

Her veri sıralaması veri deposuna dönüşür ve oluşturulan depoların bilgilerini sağlar. Örneğin sağlıklı verilerde ki oluşumu kapsayıcı olarak adlandırılan iki değerden oluşan veri deposuna sonuç verecektir,bunlardan biri akım için, bir diğeri maksimum sağlıklı veri için şahsi anahtarların veri sorgusu tarafından tanımlanır.

import org.spongepowered.api.data.DataContainer;
import org.spongepowered.api.data.key.Keys;

DataContainer serializedHealth = healthData.toContainer();
double currentHealth = serializedHealth.getDouble(Keys.HEALTH.getQuery()).get();
currentHealth == healthData.health().get();  // true

Bu depolama sağlıklı veri örneğine geri dönüşümü eşleşen veri kurucusu :javadoc: tarafından yapılır. Bunlar yönetici veri tarafından kaydedilir ve yönetilir. Bu bir geçerli oyun oluşumu tarafından :javadoc: ya da yararlı parazit sınıfını :javadoc: kullanarak elde edilebilir. Veri yöneticisi verilen sınıfı seriden paralele dönüştürmek için ve ayrıca özet veri yöneticisi metodunu almak uygun veri kurucusunu elde etmek için uygun yöntemi sağlar ve bu seriden paralele çevirme işlemi bir adımda yapılır. Her iki takip edilen kod örneği de fonksiyonel olarak eşdeğerdir.

Kod örneği: Seriden paralele çevirme. uzun yol

import org.spongepowered.api.data.DataView;
import org.spongepowered.api.data.manipulator.mutable.entity.HealthData;
import org.spongepowered.api.util.persistence.DataBuilder;

import java.util.Optional;

public Optional<HealthData> deserializeHealth(DataView container) {
    final Optional<DataBuilder<HealthData>> builder = Sponge.getDataManager().getBuilder(HealthData.class);
    if (builder.isPresent()) {
        return builder.get().build(container);
    }
    return Optional.empty();
}

Kod örneği: Seriden paralele çevirme, kısa yol

import org.spongepowered.api.data.manipulator.mutable.entity.HealthData;

public Optional<HealthData> deserializeHealth(DataView container) {
    return Sponge.getDataManager().deserialize(HealthData.class, container);
}

Sağlanan veri deposu boşsa ya da sağlıklı veri için yönetilen veri yapımcısı yoksa seriden paralele çevirme sağlığı fonksiyonu isteğe bağlı boşluğa dönüşür. Verilen veri deposunda geçersiz veri varsa, :javadoc: harici geçersiz veri atılır.

Veri çevirici

Çerezde genellikle veri görüntüsü belleği uygulaması :javadoc: ve :javadoc: sadece bellekte bulunan veri deposu belleği kullanılır ve böylelikle başlatılan sunucu tarafından zorlanmaz. Kalıcı olarak veri deposunu yüklemek için, bu öncelikle temsili depolamaya dönüştürülmek zorundadır.

Veri çevirici yapı düzenlemesini kullanarak :javadoc: veri çeviricisi yöntemini :javadoc:, yapı düzenlemesi :javadoc: ve benzerinden veri görüntüsüne dönüştürebiliriz. Yapı düzenlemesi, sonradan yazılabilir ve sürekli dosyalardan yapı belleği kullanılarak :doc: okunabilir.

Kod örneği: düzenleme için sağlıklı veri örneğinin serileştirmek

import ninja.leaping.configurate.ConfigurationNode;
import org.spongepowered.api.data.persistence.DataTranslator;
import org.spongepowered.api.data.persistence.DataTranslators;

public ConfigurationNode translateToConfig(HealthData data) {
    final DataTranslator<ConfigurationNode> translator = DataTranslators.CONFIGURATION_NODE;
    final DataView container = data.toContainer();
    return translator.translate(container);
}

Kod örneği: düzenlemeden sağlıklı bir veri örneği ayarlamak

import java.util.Optional;

public Optional<HealthData> translateFromConfig(ConfigurationNode node) {
    final DataTranslator<ConfigurationNode> translator = DataTranslators.CONFIGURATION_NODE;
    final DataView container = translator.translate(node);
    return deserializeHealth(container);
}