aliran tensor:: porsi:: Sumber

Ini adalah kelas abstrak.

#include <source.h>

Sebuah abstraksi untuk modul yang sumber servable untuk memuat, atau, lebih tepatnya, menangani data yang dapat digunakan untuk memuat servable tersebut.

Ringkasan

Contoh penanganan data tersebut adalah:

  • jalur sistem file ke peta kosakata berseri
  • pegangan ke RPC masuk yang menentukan model yang dipelajari mesin untuk dimuat
  • a Loader (lihat loader.h ) Pegangan Data umumnya dianggap kecil.

Sebuah Sumber memonitor beberapa sumber daya eksternal (misalnya file sistem, panggilan RPC) untuk mencari tahu tentang servables baru dan / atau versi baru dari servables dan / atau kebutuhan untuk membongkar versi servable. Ia menggunakan callback disediakan untuk menginstruksikan modul Target (misalnya AspiredVersionsManager ) versi (s) dari servable diberikan ke beban. Selanjutnya, tergantung pada semantik dari modul Target, yang Sumber implisit memerintahkan itu mana yang untuk membongkar dengan menghilangkan mereka servables.

Kasus yang umum adalah bahwa Sumber memancarkan versi untuk tepat satu servable. Kasus yang lebih sederhana adalah bahwa servable memiliki satu versi statis selama masa pakai server.

Sumber dapat menampung status yang dibagikan di antara beberapa server yang dipancarkan, mis

  1. Kumpulan utas bersama atau sumber daya lain yang digunakan banyak server.
  2. Struktur data baca-saja bersama yang digunakan beberapa servable, untuk menghindari overhead waktu dan ruang dalam mereplikasi struktur data di setiap instans servable. Status bersama yang waktu dan ukuran inisialisasinya dapat diabaikan (misalnya kumpulan utas) dapat dibuat dengan penuh semangat oleh sumber, yang kemudian menyematkan pointer ke dalam setiap item ServableData yang dipancarkan. Penciptaan mahal atau besar negara bersama harus ditangguhkan ke berlaku pertama Loader :: Beban () panggilan, yaitu diatur oleh manajer. Simetris, yang Loader :: Unload () panggilan ke servable akhir menggunakan negara bersama mahal / besar harus merobohkannya.

Konstruktor dan Destructor

~Source ()

Tipe publik

AspiredVersionsCallback menggunakan
std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)>
Sebuah callback untuk Sumber untuk versi supply (s) dari servable untuk Target, untuk dimuat.

Fungsi publik

SetAspiredVersionsCallback ( AspiredVersionsCallback callback)=0
virtual void
Menyediakan AspiredVersionsCallback untuk digunakan. Bisa dipanggil paling banyak satu kali.

Tipe publik

Panggilan Balik Versi yang Diinginkan

std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)> AspiredVersionsCallback

Sebuah callback untuk Sumber untuk versi supply (s) dari servable untuk Target, untuk dimuat.

Satu permintaan panggilan balik berkaitan dengan satu aliran yang dapat dilayani (diberikan oleh 'nama_servable'). Semua versi yang disediakan dalam panggilan harus untuk servable yang diidentifikasi dalam 'servable_name'. Pemanggilan pada aliran yang dapat dilayani berbeda adalah ortogonal satu sama lain.

Beberapa pemanggilan dapat menyediakan objek data yang dapat diservis dengan id yang identik (yaitu nama dan versi yang dapat diservis yang sama). Objek data yang dapat diservis tersebut diperlakukan sebagai setara secara semantik. Penerima pada akhirnya akan mempertahankan satu dan membuang sisanya.

Jika versi V yang dapat dilayani disediakan dalam pemanggilan pertama, dan kemudian dihilangkan dari pemanggilan kedua, implikasi dari penghilangan V bergantung pada semantik Target dari panggilan balik. Target tertentu akan menafsirkan penghilangan V sebagai instruksi implisit untuk membongkar V. Setiap Target harus mendokumentasikan semantiknya dalam hal ini.

Fungsi publik

SetAspiredVersionsCallback

virtual void SetAspiredVersionsCallback(
  AspiredVersionsCallback callback
)=0

Menyediakan AspiredVersionsCallback untuk digunakan. Bisa dipanggil paling banyak satu kali.

~Sumber

virtual  ~Source()=default