কনফিগারযোগ্য প্রকাশক রেজিস্ট্রি

টেলিমেট্রি পরিষেবা ডেটা সংগ্রহের একটি দ্বিতীয় মাধ্যম হিসেবে কনফিগারযোগ্য পাবলিশার রেজিস্ট্রি প্রদান করে। অ্যাপ্লিকেশন এবং পরিষেবাগুলো এই রেজিস্ট্রি-তে নিজেদেরকে টেলিমেট্রি পাবলিশার হিসেবে নিবন্ধন করতে পারে, যা ফলস্বরূপ সেগুলোকে টেলিমেট্রি পরিষেবার জন্য উপলব্ধ করে তোলে। আমরা কোন ধরনের ডেটা সোর্স সমর্থন করি সে সম্পর্কে আরও তথ্যের জন্য ‘ডেটা সোর্স’ দেখুন।

লাইব্রেরি

টেলিমেট্রি বাইন্ডারের মাধ্যমে কনফিগারেবল পাবলিশার রেজিস্ট্রি পাবলিশারদের সাথে যোগাযোগ করে। AIDL ইন্টারফেসগুলো ম্যানুয়ালি ইমপ্লিমেন্ট করার পরিবর্তে, আমরা আমাদের টেলিমেট্রি SDK- এর অংশ হিসেবে থাকা পরীক্ষামূলক কনফিগারেবল পাবলিশার রেজিস্ট্রি লাইব্রেরিটি ব্যবহার করার জন্য দৃঢ়ভাবে সুপারিশ করি। এই লাইব্রেরিটি AIDL ইন্টারফেসগুলোর জটিলতা দূর করে এবং পাবলিশার নির্ধারণ, টেলিমেট্রি ডেটা পাবলিশ করা, এবং প্রোটোবাফ মেসেজগুলোকে তাদের ওয়্যার ফরম্যাটে রূপান্তর পরিচালনা করার জন্য একটি পরিচ্ছন্ন ও টাইপ-সেফ API প্রদান করে।

লাইব্রেরিটি ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, কনফিগারযোগ্য পাবলিশার রেজিস্ট্রি লাইব্রেরি দেখুন।

ম্যানুয়াল প্রকাশক বাস্তবায়ন এবং নিবন্ধন

আপনি যদি প্রদত্ত লাইব্রেরিটি ব্যবহার করতে না চান, তবে প্রয়োজনীয় বাইন্ডার ইন্টারফেসগুলো ম্যানুয়ালি ইমপ্লিমেন্ট করতে পারেন। নিম্নলিখিত বিভাগগুলিতে একটি পাবলিশার ইমপ্লিমেন্ট করার এবং কনফিগারযোগ্য পাবলিশার রেজিস্ট্রি-তে এটি নিবন্ধন করার জন্য প্রয়োজনীয় পদক্ষেপগুলির একটি সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে।

নিবন্ধন

এসডিভি পরিষেবাগুলির বিপরীতে, যেগুলির মেটাডেটা, যেমন বার্তার কাঠামো, ভিএসআইডিএল-এ সংজ্ঞায়িত থাকে এবং সিস্টেমের কাছে উপলব্ধ থাকে, কনফিগারযোগ্য পাবলিশার রেজিস্ট্রি ব্যবহারকারী পাবলিশারদের অবশ্যই তাদের মেটাডেটা স্পষ্টভাবে প্রদান করতে হয়। রেজিস্ট্রেশনের সময় আপনি PublisherInfo অবজেক্টের মাধ্যমে এই মেটাডেটা প্রদান করেন।

আপনি IConfigurablePublisherRegistry AIDL ইন্টারফেস ব্যবহার করে এই পাবলিশারগুলোকে রেজিস্টার করেন। সেই হিসেবে, আপনি AIDL সমর্থিত যেকোনো ভাষায়, যেমন Java, C++, এবং Rust-এ পাবলিশারগুলো লিখতে পারেন। এই ইন্টারফেসটি দুটি মেথড প্রদান করে:

  • টেলিমেট্রি সার্ভিসে একটি নতুন পাবলিশার রেজিস্টার করতে registerPublisher মেথডটি ব্যবহার করুন:

    void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)
    
  • টেলিমেট্রি পরিষেবা থেকে পূর্বে নিবন্ধিত কোনো পাবলিশারকে অনিবন্ধিত করতে unregisterPublisher পদ্ধতিটি ব্যবহার করুন:

    void unregisterPublisher(in @utf8InCpp String serviceName)
    

PublisherInfo অবজেক্টটি প্রকাশকের মৌলিক তথ্য নির্দিষ্ট করে:

মাঠ বর্ণনা
serviceName প্রকাশকের একটি ব্যবহারকারী-নির্ধারিত নাম। মেট্রিক্স কনফিগারেশন থেকে এটিকে উল্লেখ করার জন্য এই নামটি ব্যবহার করুন।
fileDescriptorSet একটি সিরিয়ালাইজড google.protobuf.FileDescriptorSet (আরও তথ্যের জন্য Self-describing Messages দেখুন) যাতে এই পাবলিশার কর্তৃক প্রকাশিত মেসেজের মেসেজ ডেসক্রিপ্টর ( messageTypeName ফিল্ড দ্বারা নামকৃত) এবং এর সমস্ত প্রয়োজনীয় ডিপেন্ডেন্সি থাকে। টেলিমেট্রি সার্ভিস পাবলিশার কর্তৃক প্রেরিত ডেটা ডিসিরিয়ালাইজ করার জন্য এই মেসেজ ডেসক্রিপ্টর ব্যবহার করে। বিল্ড টাইমে এটি তৈরি করার বিষয়ে আরও তথ্যের জন্য, Java protobuf descriptor generator tool দেখুন।
messageTypeName আপনার পাবলিশার যে প্রোটোবাফ মেসেজগুলো প্রকাশ করে, সেগুলোর সম্পূর্ণ নাম। এই মেসেজের মেসেজ ডেসক্রিপ্টরটি অবশ্যই fileDescriptorSet এ ঘোষণা করতে হবে।
supportsGet এটি নির্দেশ করে যে প্রকাশক সাবস্ক্রাইব না করেই সর্বশেষ বার্তাটি সরবরাহ করতে পারবে কি না।

বাস্তবায়ন

আপনার কাস্টম পাবলিশারকে অবশ্যই নিম্নলিখিত মেথডগুলো প্রদান করে IConfigurablePublisher ইন্টারফেসটি ইমপ্লিমেন্ট করতে হবে:

  • যদি মেট্রিক্স কনফিগারেশনে কোনো পাবলিশারের ডেটা সোর্সের connection_type SUBSCRIPTION হিসেবে সেট করা থাকে, তাহলে টেলিমেট্রি সার্ভিস সেই পাবলিশারকে সাবস্ক্রাইব করার জন্য createSubscription কল করে। আপনার পাবলিশারে পাস করা ISubscriber আর্গুমেন্টটি একটি sendData(in byte[] data) মেথড প্রদান করে, যা ব্যবহার করে আপনি টেলিমেট্রি সার্ভিসে প্রোটোবাফ মেসেজ স্ট্রিম করতে পারেন।

    IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)
    
  • যদি মেট্রিক্স কনফিগারেশনে কোনো পাবলিশারের ডেটা সোর্সের connection_type ON_DEMAND হিসেবে সেট করা থাকে, তাহলে টেলিমেট্রি সার্ভিসটি সেই পাবলিশারের সর্বশেষ মেসেজটি আনার জন্য getLatestMessage কল করে। টেলিমেট্রি সার্ভিসটি এই মেথডটি শুধুমাত্র তখনই ব্যবহার করে, যখন পাবলিশারটির PublisherInfo supportsGet = true উল্লেখ থাকে।

    @nullable byte[] getLatestMessage(in @nullable byte[] configuration)
    

টেলিমেট্রি পরিষেবাটি মেট্রিক্স কনফিগারেশনে ডেটা সোর্সের configuration অপশনে configuration আর্গুমেন্টটি সেট করে।