কন্টেইনার ওপেনার

পাবলিক ক্লাস কন্টেইনার ওপেনার

পাত্র খোলার জন্য হেল্পার ক্লাস।

এটি এমন ব্যবহারকারীদের জন্য 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 একটি ধারক খোলার জন্য পছন্দ.

ধ্রুবক সারাংশ

দীর্ঘ DEFAULT_TIMEOUT_IN_MILLIS কন্টেইনার অনুরোধ করার জন্য মিলিসেকেন্ডে ডিফল্ট সময়সীমা।

পাবলিক পদ্ধতির সারাংশ

স্ট্যাটিক কনটেইনার ওপেনার। কনটেইনার ফিউচার
openContainer ( TagManager tagManager , String ContainerId , ContainerOpener. OpenType openType , Long timeoutInMillis )
স্থির শূন্যতা
openContainer ( TagManager tagManager , String containerId , ContainerOpener. OpenType openType , Long timeoutInMillis , ContainerOpener. Notifier Notifier )

ধ্রুবক

সর্বজনীন স্ট্যাটিক চূড়ান্ত দীর্ঘ DEFAULT_TIMEOUT_IN_MILLIS

কন্টেইনার অনুরোধ করার জন্য মিলিসেকেন্ডে ডিফল্ট সময়সীমা।

ধ্রুবক মান: 2000

পাবলিক পদ্ধতি

পাবলিক স্ট্যাটিক কন্টেইনার ওপেনার। কনটেইনার ফিউচার ওপেন কন্টেইনার ( ট্যাগ ম্যানেজার ট্যাগ ম্যানেজার , স্ট্রিং কন্টেইনার আইডি , কন্টেইনার ওপেনার। ওপেন টাইপ ওপেন টাইপ , লং টাইমআউট ইনমিলিস )

একটি কন্টেইনার লোড হওয়ার জন্য timeoutInMillis সময় পর্যন্ত অপেক্ষা করে (নির্দিষ্ট openType এর উপর নির্ভর করে ডিফল্ট নয় বা তাজা)।

যদি ওপেন টাইপ হয় PREFER_NON_DEFAULT , একটি নন-ডিফল্ট (নেটওয়ার্ক থেকে সংরক্ষিত বা পুনরুদ্ধার করা) কন্টেইনার লোড করা হয় এবং নিম্নলিখিতগুলির মধ্যে একটি ঘটলেই ContainerFuture আনব্লক করা হয়:

  • একটি সংরক্ষিত ধারক লোড করা হয়।
  • যদি কোন সংরক্ষিত ধারক না থাকে, একটি নেটওয়ার্ক ধারক লোড হয় বা একটি নেটওয়ার্ক ত্রুটি ঘটে।
  • টাইমার মেয়াদ শেষ।

যদি একটি নেটওয়ার্ক ত্রুটি ঘটে বা টাইমারের মেয়াদ শেষ হয়ে যায়, get() একটি ডিফল্ট কন্টেইনার ফেরত দিতে পারে।

যদি ওপেন টাইপ হয় PREFER_FRESH , একটি তাজা (সংরক্ষিত বা নেটওয়ার্ক থেকে পুনরুদ্ধার করা) কন্টেইনার লোড করা হয় এবং নিম্নলিখিতগুলির মধ্যে একটি ঘটলেই ContainerFuture আনব্লক করা হয়:

  • একটি সংরক্ষিত তাজা ধারক লোড করা হয়।
  • যদি কোন সংরক্ষিত ধারক না থাকে বা সংরক্ষিত ধারকটি বাসি হয়, একটি নেটওয়ার্ক কন্টেইনার লোড হয় বা একটি নেটওয়ার্ক ত্রুটি ঘটে।
  • টাইমার মেয়াদ শেষ।

যদি একটি নেটওয়ার্ক ত্রুটি ঘটে বা টাইমারের মেয়াদ শেষ হয়ে যায়, get() একটি ডিফল্ট ধারক বা একটি সংরক্ষিত বাসি কন্টেইনার ফেরত দিতে পারে।

যদি আপনি একটি প্রদত্ত containerId দিয়ে openContainer দ্বিতীয়বার কল করেন, তাহলে একটি ContainerFuture ফেরত দেওয়া হবে যার get() প্রথম কলের মতো একই কন্টেইনার ফেরত দেবে।

পরামিতি
ট্যাগ ম্যানেজার TagManager যেটিতে openContainer কল করতে হবে
ধারক আইডি লোড করার জন্য কন্টেইনারের আইডি
openType ধারকটি কীভাবে খুলবেন তার পছন্দ
টাইমআউট ইনমিলিস ধারকটি লোড করার জন্য সর্বাধিক সংখ্যক মিলিসেকেন্ড অপেক্ষা করতে হবে (সংরক্ষিত স্টোর থেকে)। শূন্য হলে, DEFAULT_TIMEOUT_IN_MILLIS ব্যবহার করা হবে।
রিটার্নস
  • একটি অবজেক্ট যার get মেথড ধারকটি ফিরিয়ে দেবে, কিন্তু কন্টেইনার উপলব্ধ না হওয়া পর্যন্ত টাইমআউট ইনমিলিস অবরুদ্ধ করতে পারে।

পাবলিক স্ট্যাটিক ভ্যায়েড ওপেন কন্টেইনার ( ট্যাগ ম্যানেজার ট্যাগ ম্যানেজার , স্ট্রিং কন্টেইনার আইডি , কন্টেইনার ওপেনার . ওপেন টাইপ ওপেন টাইপ , লং টাইমআউট ইনমিলিস , কন্টেইনার ওপেনার। নোটিফায়ার নোটিফায়ার )

একটি কন্টেইনার লোড হওয়ার জন্য timeoutInMillis সময় পর্যন্ত অপেক্ষা করে (নির্দিষ্ট openType এর উপর নির্ভর করে ডিফল্ট নয় বা তাজা)।

যদি ওপেন টাইপ হয় PREFER_NON_DEFAULT , একটি নন-ডিফল্ট (নেটওয়ার্ক থেকে সংরক্ষিত বা পুনরুদ্ধার করা) কন্টেইনার লোড করা হয় এবং নোটিফায়ারে পাঠানো হয়। নিম্নলিখিতগুলির মধ্যে একটি ঘটলেই নোটিফায়ারকে ডাকা হয়:

  • একটি সংরক্ষিত ধারক লোড করা হয়।
  • যদি কোন সংরক্ষিত ধারক না থাকে, একটি নেটওয়ার্ক ধারক লোড হয় বা একটি নেটওয়ার্ক ত্রুটি ঘটে।
  • টাইমার মেয়াদ শেষ।

যদি একটি নেটওয়ার্ক ত্রুটি ঘটে বা টাইমারের মেয়াদ শেষ হয়ে যায়, তাহলে কন্টেইনারটি containerAvailable(Container) একটি ডিফল্ট কন্টেইনার।

যদি ওপেন টাইপ হয় PREFER_FRESH , একটি তাজা (সংরক্ষিত বা নেটওয়ার্ক থেকে পুনরুদ্ধার করা) কন্টেইনার লোড করা হয় এবং নোটিফায়ারে পাঠানো হয়। নিম্নলিখিতগুলির মধ্যে একটি ঘটলেই নোটিফায়ারকে ডাকা হয়:

  • একটি সংরক্ষিত তাজা ধারক লোড করা হয়।
  • যদি কোন সংরক্ষিত ধারক না থাকে বা সংরক্ষিত ধারকটি বাসি হয়, একটি নেটওয়ার্ক কন্টেইনার লোড হয় বা একটি নেটওয়ার্ক ত্রুটি ঘটে।
  • টাইমার মেয়াদ শেষ।

যদি একটি নেটওয়ার্ক ত্রুটি ঘটে বা টাইমারের মেয়াদ শেষ হয়ে যায়, তাহলে ধারকটি containerAvailable(Container) একটি ডিফল্ট বা একটি পুরানো সংরক্ষিত কন্টেইনার হতে পারে।

যদি আপনি openContainer(TagManager, String, ContainerOpener.OpenType, Long) একটি প্রদত্ত containerId দিয়ে দ্বিতীয়বার কল করেন, তাহলে আগের কল থেকে ফিরে আসা একই কন্টেইনারটি উপলব্ধ হওয়ার সাথে সাথে নোটিফায়ারে পাঠানো হবে।

পরামিতি
ট্যাগ ম্যানেজার TagManager যেটিতে openContainer কল করতে হবে
ধারক আইডি লোড করার জন্য কন্টেইনারের আইডি
openType ধারকটি কীভাবে খুলবেন তার পছন্দ
টাইমআউট ইনমিলিস কন্টেইনার লোড করার জন্য অপেক্ষা করতে সর্বোচ্চ সংখ্যক মিলিসেকেন্ড (সংরক্ষিত স্টোর এবং/অথবা নেটওয়ার্ক থেকে)। শূন্য হলে, DEFAULT_TIMEOUT_IN_MILLIS ব্যবহার করা হবে।
নোটিফায়ার একটি নোটিফায়ার যা কন্টেইনার উপলব্ধ হলে কল করা হবে। এটি সংরক্ষিত বা নেটওয়ার্ক কন্টেইনারের সাথে কল করা হবে, যদি পাওয়া যায় এবং সময় শেষ হওয়ার আগে লোড করা হয়। অন্যথায়, এটি ডিফল্ট কন্টেইনারের সাথে কল করা হবে। নোটিফায়ারকে একটি ভিন্ন থ্রেড থেকে কল করা হতে পারে।