קונטיינר

מחלקה ציבורית ContainerOpener

מחלקת עזרה לפתיחת קונטיינרים.

זוהי wrapper של שיטת openContainer(String, Container.Callback) למשתמשים שלא צריכים את רמת השליטה המדויקת שהיא מספקת.

יש שלושה מצבים שבהם מאגר יכול להיות:

  • ברירת המחדל: זהו הקונטיינר שנשלח עם האפליקציה (מאגר בינארי או קובץ json שהומר למאגר).
  • לא פעיל: מאגר שכבר הורד מהשרת, אך לא לאחרונה.
  • טרי: מאגר שכבר הורד לאחרונה מהשרת.

בדוגמה הבאה מוצגת דוגמה שבה מבצע הקריאה החוזרת רוצה להמתין עד 100 אלפיות השנייה כדי לקבל את המאגר שלא מוגדר כברירת המחדל (מאחזר את המאגר המוגדר כברירת מחדל אם הזמן הקצוב שלו פג).

   ContainerFuture future =
       ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 100);
   Container container = future.get();
 

אם מבצע הקריאה החוזרת רוצה לקבל הודעה אסינכרונית כשמאגר התגים זמין, אבל רוצה לציין באופן ידני את הזמן הקצוב לתפוגה של 0.5 שניות, עליו להגדיר את המחלקה משנית ContainerOpener.Notifier. דוגמה לשימוש:

   ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT,
       500, new ContainerOpener.Notifier() {
         @Override
         void containerAvailable(Container container) {
           // Code to handle the container available notification and save the container.
         }
       });
 

סיכום של הכיתה המוצבת

משופר ContainerOpener.ContainerFuture אובייקט שיחזיר מאגר. 
משופר ContainerOpener.Notifier אובייקט שיקבל התראה כשמאגר יהיה זמין לשימוש. 
טיפוסים בני מנייה (enum) ContainerOpener.OpenType העדפות לפתיחת מאגר. 

סיכום קבוע

long DEFAULT_TIMEOUT_IN_MILLIS הזמן הקצוב לתפוגה שמוגדר כברירת מחדל באלפיות השנייה לשליחת בקשה למאגר.

סיכום אמצעי תשלום ציבורי

סטטי ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, ארוך timeoutInMillis)
בטל סטטי
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, ארוך timeoutInMillis, ContainerOpener.Notifier הודעה)

קבועים

ציבורי סטטי סופי ארוך DEFAULT_TIMEOUT_IN_MILLIS

הזמן הקצוב לתפוגה שמוגדר כברירת מחדל באלפיות השנייה לשליחת בקשה למאגר.

ערך קבוע: 2,000

שיטות ציבוריות

ציבורי סטטי ContainerOpener.ContainerFuture openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType ContainerOpener.{OpenType} ContainerOpener.OpenTypetagManager

המערכת ממתינה עד זמן אחד (timeoutInMillis) לטעינת קונטיינר (לא ברירת המחדל או רענון, בהתאם ל-openType שצוין).

אם הסוג הפתוח הוא PREFER_NON_DEFAULT, נטען קונטיינר שלא הוגדר כברירת מחדל (נשמר או אוחזר מהרשת) והחסימה של ContainerFuture מבוטלת ברגע שמתרחשת אחת מהאפשרויות הבאות:

  • נטען קונטיינר שמור.
  • אם לא קיים מאגר תגים שמור, נטען מאגר רשת או שמתרחשת שגיאת רשת.
  • תסתיים הטיימר.

אם מתרחשת שגיאת רשת או שתוקף הטיימר יפוג, get() עשוי להחזיר מאגר ברירת מחדל.

אם הסוג הפתוח הוא PREFER_FRESH, נטען קונטיינר חדש (נשמר או אוחזר מהרשת) והחסימה של ContainerFuture מבוטלת ברגע שמתרחשת אחת מהאפשרויות הבאות:

  • נטען קונטיינר חדש שנשמר.
  • אם לא קיים מאגר תגים שמור או מאגר תגים שמור לא פעיל, נטען מאגר רשת או שמתרחשת שגיאה ברשת.
  • תסתיים הטיימר.

אם מתרחשת שגיאת רשת או שתוקף הטיימר יפוג, get() עשוי להחזיר מאגר ברירת מחדל או מאגר לא פעיל שנשמר.

אם תתבצע קריאה נוספת ל-openContainer באמצעות containerId נתון, יוחזר ContainerFuture שה-get() שלו יחזיר את אותו מאגר כמו הקריאה הראשונה.

פרמטרים
tagManager ה-TagManager שאליו צריך לקרוא את openContainer
containerId המזהה של הקונטיינר שיש לטעון
openType האפשרות לפתוח את הקונטיינר
timeoutInMillis מספר אלפיות השנייה המקסימלי שצריך להמתין לטעינת המאגר (מהחנות השמורה). אם הערך יהיה null, המערכת תשתמש ב-DEFAULT_TIMEOUT_IN_MILLIS.
החזרות
  • אובייקט ששיטת get שלו תחזיר את הקונטיינר, אבל יכול לחסום עד timeInMillis עד שהמאגר יהיה זמין.

Public סטטי void openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager,10}openType,10}openType,ContainerOpener.Notifier

המערכת ממתינה עד זמן אחד (timeoutInMillis) לטעינת קונטיינר (לא ברירת המחדל או רענון, בהתאם ל-openType שצוין).

אם הסוג הפתוח הוא PREFER_NON_DEFAULT, נטען מאגר שלא מוגדר כברירת מחדל (נשמר או אוחזר מהרשת) ומועבר לכלי ההודעות. מתבצעת הפעלה של שירות ההודעות ברגע שמתרחשת אחת מהפעולות הבאות:

  • נטען קונטיינר שמור.
  • אם לא קיים מאגר תגים שמור, נטען מאגר רשת או שמתרחשת שגיאת רשת.
  • תסתיים הטיימר.

אם מתרחשת שגיאת רשת או שתוקף הטיימר יפוג, הקונטיינר שמועבר אל containerAvailable(Container) הוא מאגר ברירת מחדל.

אם הסוג הפתוח הוא PREFER_FRESH, נטען קונטיינר חדש (נשמר או אוחזר מהרשת) ומועבר לכלי ההודעות. מתבצעת הפעלה של שירות ההודעות ברגע שמתרחשת אחת מהפעולות הבאות:

  • נטען קונטיינר חדש שנשמר.
  • אם לא קיים מאגר תגים שמור או מאגר תגים שמור לא פעיל, נטען מאגר רשת או שמתרחשת שגיאה בחיבור לרשת.
  • תסתיים הטיימר.

אם מתרחשת שגיאת רשת או שתוקף הטיימר פג, הקונטיינר שמועבר אל containerAvailable(Container) עשוי להיות ברירת מחדל או מאגר שמור לא פעיל.

אם תתבצע קריאה נוספת אל openContainer(TagManager, String, ContainerOpener.OpenType, Long) באמצעות containerId נתון, אותו מאגר שמוחזר מהשיחה הקודמת יועבר אל שירות ההודעות ברגע שהוא יהיה זמין.

פרמטרים
tagManager ה-TagManager שאליו צריך לקרוא את openContainer
containerId המזהה של הקונטיינר שיש לטעון
openType האפשרות לפתוח את הקונטיינר
timeoutInMillis מספר אלפיות השנייה המקסימלי שצריך להמתין לטעינת המאגר (מהחנות או מהרשת שנשמרו). אם הערך יהיה null, המערכת תשתמש ב-DEFAULT_TIMEOUT_IN_MILLIS.
שירות הודעות שירות הודעות שייקרא כשהמאגר יהיה זמין. היא תופעל באמצעות מאגר התגים השמור או מאגר הרשת, אם הוא זמין, ונטען לפני הזמן הקצוב לתפוגה. אחרת, הוא יופעל עם המאגר המוגדר כברירת מחדל. ייתכן שהשירות יודיע לשירות משרשור אחר.