przepływ tensorowy:: porcja:: Uprząż ładowarki
#include <loader_harness.h>
LoaderHarness jest widget z Menedżera zastosowań trzymać się i rozmowa do ładowarki , gdy to jest jej właścicielem.
Streszczenie
Śledzi całkowitą państwowe o Servable takie, że menedżer może określić, które państwo przejścia, aby w jakich godzinach.
Implementacja menedżera może również dodać dodatkowy stan do każdej wiązki. Na przykład menedżer może umieścić tutaj metadane listy ACL lub cyklu życia. Własność utrzymuje uprząż.
Ta klasa jest bezpieczna wątkowo.
Konstruktory i destruktory | |
---|---|
LoaderHarness (const ServableId & id, std::unique_ptr< Loader > loader, const Options & options) | |
LoaderHarness (const ServableId & id, std::unique_ptr< Loader > loader, std::unique_ptr< T > additional_state, const Options & options) Konstruktor do stworzenia uprzęży z dodatkowym stanem, którego potrzebuje manager. | |
~LoaderHarness () Dozwolone jest zniszczenie, jeśli bieżący stan jest jednym z kNew, kDisabled lub kError. |
Typy publiczne | |
---|---|
State { | wyliczenie Stan servable bazowych, z perspektywy LoaderHarness oraz do celów komunikacji pomiędzy nim i menedżera . |
Funkcje publiczne | |
---|---|
DoneQuiescing () | Status Zmienia stan na kQuiesced, co oznacza, że w interfejsie użytkownika nie ma już aktywnych uchwytów do tego serwowalnego. |
Error (const Status & status) | void Zmienia stan na kError i wywołuje 'options_.error_callback'. |
Load () | Status Przejścia do kLoading delegaci do Servable :: load (), a następnie przejścia albo kReady jeśli load () się powiedzie, lub kError (i options_ powołuje. |
LoadApproved () | Status Przejścia do kLoadApproved. |
LoadRequested () | Status Zmienia stan wiązki na kLoadRequested, jeśli jej bieżący stan to kNew. |
StartQuiescing () | Status Przełącza stan na kQuiescing, co oznacza, że nie chcielibyśmy udostępniać więcej uchwytów temu serwowalnemu. |
Unload () | Status Przejścia do kUnloading delegaci do Servable :: rozładować (), a następnie przejść do kDisabled gdy Unload () jest wykonywana. |
UnloadRequested () | Status Zmienia stan wiązki na kUnloadRequested, jeśli jej bieżący stan to kReady. |
additional_state () | T * Pobiera dodatkowy stan. |
cancel_load_retry () | bool |
id () const | ServableId Zwraca identyfikator podstawowego elementu udostępnianego. |
loader () const | Loader * Zwraca wskaźnik do opakowanego modułu ładującego. |
loader_state_snapshot () | ServableStateSnapshot< T > Zwraca bieżącą migawkę stanu ogólnego podstawowego elementu udostępnianego. |
loader_state_snapshot () const | ServableStateSnapshot< std::nullptr_t > |
set_cancel_load_retry (bool value) | void Anuluje ponawianie próby załadowania elementu do wyświetlenia. |
state () | Zwraca bieżący stan podstawowego elementu udostępnianego. |
status () | Status Czy coś poszło nie tak z tym serwowalnym. |
Publiczne funkcje statyczne | |
---|---|
StateDebugString ( State state) | string |
Struktury | |
---|---|
tensorflow :: służąc :: LoaderHarness :: Opcje | Opcje , aby skonfigurować LoaderHarness . |
Typy publiczne
Państwo
State
Stan servable bazowych, z perspektywy LoaderHarness oraz do celów komunikacji pomiędzy nim i menedżera .
Nie jest to odpowiednik semantycznych stanów serwowalnych w servable_state.h.
Poprawne przejścia: kNew>kLoading>kReady>kQuiescing>kQuiesced>kUnloading>kDisabled oraz: any_state>kError.
Nieruchomości | |
---|---|
kDisabled | 'ładowarka _-> Unload () ' zostało zakończone. |
kError | Wystąpił błąd, albo podczas „ładowarka _-> load () ” lub na zewnątrz uprzęży (i został zgłoszony do uprzęży za pomocą wywołania błędu () ). |
kLoadApproved | Serwowalny element został zatwierdzony do wczytania, np. przeznaczono na to środki. |
kLoadRequested | Menedżer został poproszony o załadowanie tego elementu do wyświetlenia. |
kLoading | 'ładowarka _-> load () ' została wywołana. |
kNew | Stan początkowy. |
kQuiesced | Element do wyświetlenia został wyłączony do wyświetlania. |
kQuiescing | To, co można wyświetlać, stanie się niedostępne do serwowania. |
kReady | 'ładowarka _-> load () ' udało. |
kUnloadRequested | Menedżer został poproszony o usunięcie tego elementu do wyświetlenia. |
kUnloading | 'ładowarka _-> Unload () ' została wywołana. |
Funkcje publiczne
GotoweWyciszenie
Status DoneQuiescing()
Zmienia stan na kQuiesced, co oznacza, że w interfejsie użytkownika nie ma już aktywnych uchwytów do tego serwowalnego.
W tym momencie możemy rozładować ten obiekt.
WYMAGANIA: Stan jest kQuiescing po wywołaniu. W przeciwnym razie DCHECK-nie powiedzie się, przechodzi do stanu kError i wywołuje 'options_.error_callback'.
Błąd
void Error( const Status & status )
Zmienia stan na kError i wywołuje 'options_.error_callback'.
Obciążenie
Status Load()
Przejścia do kLoading delegaci do Servable :: load (), a następnie przejścia albo kReady jeśli load () się powiedzie, lub kError (i options_ powołuje.
error_callback ') jeśli load () nie powiedzie się. Ta rozmowa może zająć dużo czasu.
Ponawiamy próbę Servable::Load() zgodnie z opcjami ustawionymi podczas konstruowania tej klasy. Przerywamy ponawianie próby i poddajemy się, jeśli 1. osiągnęliśmy max_num_load_retries lub 2. jeśli cancel_load() jest ustawione na true.
WYMAGA: Po wywołaniu stan jest kLoadApproved. W przeciwnym razie DCHECK-nie powiedzie się, przechodzi do stanu kError i wywołuje 'options_.error_callback'.
Ładowanie zatwierdzone
Status LoadApproved()
Przejścia do kLoadApproved.
WYMAGANIA: Stan to kLoadRequested po wywołaniu. W przeciwnym razie DCHECK-nie powiedzie się, przechodzi do stanu kError i wywołuje 'options_.error_callback'.
Żądanie obciążenia
Status LoadRequested()
Zmienia stan wiązki na kLoadRequested, jeśli jej bieżący stan to kNew.
Test i-transakcyjnie zmiana jest wykonywana, więc sposób ten może być stosowany w celu zapewnienia, że co najwyżej jeden obciążenia (), żądanie może być kontynuowana.
Uprząż ładowarki
LoaderHarness( const ServableId & id, std::unique_ptr< Loader > loader, const Options & options )
Uprząż ładowarki
LoaderHarness( const ServableId & id, std::unique_ptr< Loader > loader, std::unique_ptr< T > additional_state, const Options & options )
Konstruktor do stworzenia uprzęży z dodatkowym stanem, którego potrzebuje manager.
Rozpocznij Quieting
Status StartQuiescing()
Przełącza stan na kQuiescing, co oznacza, że nie chcielibyśmy udostępniać więcej uchwytów temu serwowalnemu.
WYMAGANIA: Stan to kUnloadRequested po wywołaniu. W przeciwnym razie DCHECK-nie powiedzie się, przechodzi do stanu kError i wywołuje 'options_.error_callback'.
Rozładować
Status Unload()
Przejścia do kUnloading delegaci do Servable :: rozładować (), a następnie przejść do kDisabled gdy Unload () jest wykonywana.
WYMAGANIA: Stan jest kQuiesced po wywołaniu. W przeciwnym razie DCHECK-nie powiedzie się, przechodzi do stanu kError i wywołuje 'options_.error_callback'.
Żądanie wyładowania
Status UnloadRequested()
Zmienia stan wiązki na kUnloadRequested, jeśli jej bieżący stan to kReady.
Test i-transakcyjnie zmiana jest wykonywana, więc sposób ten może być stosowany w celu zapewnienia, że co najwyżej jeden obciążenia (), żądanie może być kontynuowana.
dodatkowy_stan
T * additional_state()
Pobiera dodatkowy stan.
Zwraca nullptr, jeśli typ jest niezgodny lub nie został ustawiony.
cancel_load_retry
bool cancel_load_retry()
ID
ServableId id() const
Zwraca identyfikator podstawowego elementu udostępnianego.
ładowarka
Loader * loader() const
Zwraca wskaźnik do opakowanego modułu ładującego.
Własność pozostaje w tej klasie.
loader_state_snapshot
ServableStateSnapshot< T > loader_state_snapshot()
Zwraca bieżącą migawkę stanu ogólnego podstawowego elementu udostępnianego.
loader_state_snapshot
ServableStateSnapshot< std::nullptr_t > loader_state_snapshot() const
set_cancel_load_retry
void set_cancel_load_retry( bool value )
Anuluje ponawianie próby załadowania elementu do wyświetlenia.
To jest best-effort, a nie wywłaszczyć z load () , która jest już dzieje, tylko kolejnych połączeń.
Jeśli prób są anulowane, servable przechodzi w stan zależny od ostatniej load () o nazwie na nim. Jeżeli ostatni load () zakończy się sukcesem, będzie to w państwowej kReady, jeszcze w kError.
status
Status status()
Czy coś poszło nie tak z tym serwowalnym.
Jeśli stan to kError, to nie będzie OK. Jeśli nie jest OK, błąd może być coś, co miało miejsce w Źródło lub SourceAdapter w Loader , w Menedżerze , czy gdzie indziej. W tym miejscu są zgłaszane wszystkie błędy dotyczące elementu udostępnianego, niezależnie od ich pochodzenia.
~Uprząż ładowarki
~LoaderHarness()
Dozwolone jest zniszczenie, jeśli bieżący stan jest jednym z kNew, kDisabled lub kError.
Sprawdzanie nie powiedzie się, jeśli zostanie naruszone.
Publiczne funkcje statyczne
StateDebugCiąg
string StateDebugString( State state )