রাস্ট টেলিমেট্রি ক্লায়েন্ট লাইব্রেরি এপিআই রেফারেন্স

এই পৃষ্ঠায় libsdv_telemetry_rust_wrapper লাইব্রেরির প্রকারভেদ, পদ্ধতি এবং ত্রুটি পরিচালনা সম্পর্কে বর্ণনা করা হয়েছে।

টেলিমেট্রি সার্ভিস হোল্ডার ইন্টারফেস

ক্লায়েন্টদের জন্য প্রাথমিক ইন্টারফেসটি হলো TelemetryServiceHolder struct। এই ইন্টারফেসটি সার্ভিস সংযোগ, মেট্রিক্স কনফিগারেশন এবং ডেটা রিপোর্ট পরিচালনার জন্য প্রয়োজনীয় সমস্ত মেথড সরবরাহ করে।

পরিষেবা জীবনচক্র ব্যবস্থাপনা

এই পদ্ধতিগুলো অন্তর্নিহিত টেলিমেট্রি পরিষেবার সাথে সংযোগ স্থাপন ও বিচ্ছিন্ন করে।

পেতে

pub fn get() -> TelemetryResult<TelemetryServiceHolder>

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

TelemetryServiceHolder Send এবং Sync ট্রেইটগুলো ইমপ্লিমেন্ট করে, যার মানে হলো এটিকে বিভিন্ন থ্রেডের মধ্যে নিরাপদে শেয়ার করা যায়, যেমন—এটিকে Arc এর একটি ইনস্ট্যান্সে র‍্যাপ করার মাধ্যমে। TelemetryServiceHolder এর বেশিরভাগ মেথডই async এবং একই সাথে একাধিক থ্রেডে ব্যবহার করা যায়।

ফেরত
TelemetryResult < TelemetryServiceHolder > ফলাফলে সার্ভিস হ্যান্ডেল থাকবে, অথবা সার্ভিসটি পাওয়া না গেলে TelemetryError ইনস্ট্যান্স থাকবে।

ইনিট

pub async fn init(
    &self,
    misc_status_callback: impl Fn(TelemetryServiceStatus) + Send + Sync + 'static,
    report_ready_callback: impl Fn(ReportInfo) + Send + Sync + 'static,
) -> TelemetryResult<()>

অ্যাসিঙ্ক্রোনাস কলব্যাক নিবন্ধন করার মাধ্যমে পরিষেবাটি চালু করে। TelemetryServiceHolder পাওয়ার পর এবং অন্য কোনো ইন্টারঅ্যাকশনের আগে এই মেথডটি একবার কল করুন।

প্যারামিটার
misc_status_callback impl Fn( TelemetryServiceStatus ) + Send + Sync + 'static : একটি ক্লোজার যা টেলিমেট্রি সার্ভিস থেকে স্ট্যাটাস এবং এরর আপডেট গ্রহণ ও প্রসেস করে।
report_ready_callback impl Fn( ReportInfo ) + Send + Sync + 'static : একটি ক্লোজার যা নতুন মেট্রিক্স রিপোর্ট সংগ্রহের জন্য প্রস্তুত হলে নোটিফিকেশন গ্রহণ ও প্রসেস করে।
ফেরত
TelemetryResult <()> সফল হলে ফলাফল খালি, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স।

শেষ

pub fn finish(&self) -> TelemetryResult<()>

সার্ভিস কানেকশনটি সুষ্ঠুভাবে বন্ধ করে, রেজিস্টার্ড লিসেনারগুলো মুছে ফেলে এবং সংশ্লিষ্ট রিসোর্সগুলো পরিষ্কার করে। অ্যাপটি বন্ধ হওয়ার সময় এই মেথডটি একবার কল করুন।

ফেরত
TelemetryResult <()> সফল হলে ফলাফল খালি, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স।

মেট্রিক্স কনফিগারেশন ব্যবস্থাপনা

এই অ্যাসিঙ্ক্রোনাস মেথডগুলো ডেটা সংগ্রহের কনফিগারেশনের সংজ্ঞা এবং অবস্থা পরিচালনা করে।

টেলিমেট্রি পরিষেবা কনফিগারেশন দুটি অবস্থায় বজায় রাখে:

  • নিষ্ক্রিয়: কনফিগারেশনটি যাচাই করে ডিস্কে সংরক্ষণ করা হয়, কিন্তু ডেটা সংগ্রহের জন্য এটি ব্যবহৃত হয় না।
  • সক্রিয়: কনফিগারেশনটি ডেটা সংগ্রহ করে এবং এর উপাদানগুলো (যেমন ট্রিগার, পাবলিশার) সক্রিয় থাকে।

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

add_metrics_config

pub async fn add_metrics_config(&self, serialized_config: &[u8]) -> TelemetryResult<String>

সার্ভিসে একটি নতুন মেট্রিক্স কনফিগারেশন যোগ করে। কনফিগারেশনটি অবশ্যই একটি সিরিয়ালাইজড বাইট অ্যারে হিসেবে প্রদান করতে হবে। যোগ করা কনফিগারেশনটি ডিফল্টরূপে নিষ্ক্রিয় থাকে।

প্যারামিটার
serialized_config &[u8] : প্রোটোবাফ-সিরিয়ালাইজড কনফিগারেশন ডেটা ধারণকারী একটি বাইট স্লাইস
ফেরত
TelemetryResult <String> সফল হলে ফলাফলে নতুন যোগ করা কনফিগারেশনের UUID থাকবে, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স পাওয়া যাবে।

activate_metrics_config

pub async fn activate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>

পূর্বে যোগ করা (বা নিষ্ক্রিয় করা) একটি মেট্রিক্স কনফিগারেশন সক্রিয় করে, যার ফলে ডেটা সংগ্রহ এবং রিপোর্টিং শুরু হয়।

প্যারামিটার
config_uuid &str : সক্রিয় করার জন্য কনফিগারেশনের UUID
ফেরত
TelemetryResult <String> সফল হলে ফলাফলে সক্রিয় কনফিগারেশনের UUID থাকবে, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স থাকবে।

deactivate_metrics_config

pub async fn deactivate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>

একটি সক্রিয় মেট্রিক্স কনফিগারেশনের জন্য ডেটা সংগ্রহ এবং রিপোর্টিং বন্ধ করে দেয়। কনফিগারেশনটি সার্ভিসে থেকে যায় এবং পরে পুনরায় সক্রিয় করা যেতে পারে।

প্যারামিটার
config_uuid &str : নিষ্ক্রিয় করার জন্য কনফিগারেশনের UUID
ফেরত
TelemetryResult <String> সফল হলে ফলাফলে নিষ্ক্রিয় কনফিগারেশনের UUID থাকবে, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স থাকবে।

মেট্রিক্স কনফিগারেশন সরান

pub async fn remove_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>

একটি মেট্রিক্স কনফিগারেশন স্থায়ীভাবে মুছে ফেলে। কনফিগারেশনটি সক্রিয় থাকলে, পরিষেবাটি প্রথমে এটিকে নিষ্ক্রিয় করে নেয়।

প্যারামিটার
config_uuid &str : অপসারণ করার জন্য কনফিগারেশনের UUID
ফেরত
TelemetryResult <String> সফল হলে ফলাফলে অপসারিত কনফিগারেশনের UUID থাকবে, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স পাওয়া যাবে।

সমস্ত মেট্রিক কনফিগারেশন সরান

pub async fn remove_all_metrics_configs(&self) -> TelemetryResult<String>

বিদ্যমান সমস্ত মেট্রিক্স কনফিগারেশন মুছে ফেলে এবং সক্রিয় থাকা কনফিগারেশনগুলো নিষ্ক্রিয় করে দেয়।

ফেরত
TelemetryResult <String> সফল হলে ফলাফলে একটি স্ট্যাটাস মেসেজ স্ট্রিং থাকে, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স থাকে।

get_active_metrics_config_uuids

pub async fn get_active_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>

সক্রিয় অবস্থায় থাকা সমস্ত কনফিগারেশনের UUID-গুলির তালিকার জন্য পরিষেবাটিকে জিজ্ঞাসা করে।

ফেরত
TelemetryResult <Vec<String>> সফল হলে ফলাফলে সক্রিয় মেট্রিক্স কনফিগারেশনগুলির জন্য UUID স্ট্রিংগুলির একটি ভেক্টর থাকবে, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স পাওয়া যাবে।

get_inactive_metrics_config_uuids

pub async fn get_inactive_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>

নিষ্ক্রিয় অবস্থায় থাকা সমস্ত কনফিগারেশনের UUID-গুলির তালিকার জন্য পরিষেবাটিকে জিজ্ঞাসা করে।

ফেরত
TelemetryResult <Vec<String>> সফল হলে ফলাফলে নিষ্ক্রিয় মেট্রিক্স কনফিগারেশনগুলির জন্য UUID স্ট্রিংগুলির একটি ভেক্টর থাকবে, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স পাওয়া যাবে।

মেট্রিক্স রিপোর্ট পরিচালনা এবং পুনরুদ্ধার

এই পদ্ধতিগুলো আপনাকে উপলব্ধ রিপোর্টগুলোর জন্য কোয়েরি করতে এবং সংগৃহীত রিপোর্ট ডেটা পুনরুদ্ধার করতে দেয়।

get_metrics_report

pub async fn get_metrics_report(&self, report_uuid: &str) -> TelemetryResult<MetricsReport>

একটি নির্দিষ্ট রিপোর্ট UUID-এর জন্য সম্পূর্ণ মেট্রিক্স রিপোর্টের ডেটা পুনরুদ্ধার করে। আপনি report_ready_callback ব্যবহার করে অথবা get_ready_reports_info কল করে একটি নোটিফিকেশন থেকে রিপোর্ট UUID পেতে পারেন।

প্যারামিটার
report_uuid &str : যে নির্দিষ্ট রিপোর্টটি পুনরুদ্ধার করতে হবে তার UUID
ফেরত
TelemetryResult <MetricsReport> সফল হলে ফলাফলে ডিসিরিয়ালাইজড MetricsReport প্রোটোবাফ অবজেক্ট, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স থাকবে।

get_ready_reports_info

pub async fn get_ready_reports_info(&self) -> TelemetryResult<Vec<ReportInfo>>

সম্পূর্ণ এবং পুনরুদ্ধারের জন্য প্রস্তুত সমস্ত রিপোর্টের একটি তালিকার জন্য টেলিমেট্রি পরিষেবাতে কোয়েরি করে। কোনো কলব্যাক নোটিফিকেশন বাদ পড়লে (উদাহরণস্বরূপ, যদি report_ready_callback দেরিতে নিবন্ধিত হয়) রিপোর্টের অবস্থা পরীক্ষা করার জন্য এটি উপযোগী।

ফেরত
TelemetryResult <Vec< ReportInfo >> সফল হলে ফলাফলে ReportInfo অবজেক্টের একটি ভেক্টর, অথবা ব্যর্থ হলে TelemetryError ইনস্ট্যান্স থাকে।

কোর টাইপ, কলব্যাক এবং ত্রুটি পরিচালনা

libsdv_telemetry_rust_wrapper টেলিমেট্রি সার্ভিসের সাথে যোগাযোগ করতে, অ্যাসিঙ্ক্রোনাস কলব্যাক পরিচালনা করতে এবং সার্ভিসের ত্রুটি সামলাতে এক সেট কাস্টম টাইপ ব্যবহার করে।

এপিআই প্রতিক্রিয়া এবং ত্রুটির প্রকার

অনুরোধকৃত অপারেশনের তাৎক্ষণিক সাফল্য বা ব্যর্থতা নির্দেশ করার জন্য লাইব্রেরি মেথডগুলো সরাসরি এই টাইপগুলো রিটার্ন করে।

টেলিমেট্রি ফলাফল

বেশিরভাগ মেথড একটি TelemetryResult<T> রিটার্ন করে, যা স্ট্যান্ডার্ড Result টাইপের একটি বিকল্প নাম এবং সার্ভিস-লেভেল ত্রুটির জন্য বিশেষায়িত।

pub type TelemetryResult<T> = Result<T, TelemetryError>;

টেলিমেট্রি ত্রুটি

TelemetryError স্ট্রাকচারটি সমস্ত ব্যর্থতাকে অন্তর্ভুক্ত করে এবং পরিষেবা-নির্দিষ্ট বিস্তারিত ত্রুটির তথ্য প্রদান করে:

ক্ষেত্র
status TelemetryServiceStatusCodes : একটি গণনাযোগ্য ত্রুটি কোড
message String : একটি বর্ণনামূলক বার্তা যা ত্রুটির বিবরণ দেয়

টেলিমেট্রি পরিষেবা স্ট্যাটাস কোড

এপিআই কলের ফলাফল এবং অভ্যন্তরীণ পরিষেবার অবস্থা নির্দেশকারী একটি সাংখ্যিক তালিকা। এই কোডগুলি TelemetryError এবং TelemetryServiceStatus উভয় ক্ষেত্রেই ব্যবহৃত হয়। উদাহরণস্বরূপ:

কোড
200 TELEMETRY_SERVICE_API_CALL_SUCCESS সাফল্য
402 METRICS_CONFIG_PARSE_ERROR মেট্রিক্স কনফিগারেশন পার্স করতে ব্যর্থ হয়েছে
407 REMOVE_METRICS_CONFIG_FAILED মেট্রিক্স কনফিগারেশন অপসারণ করতে ব্যর্থ হয়েছে
417 METRICS_CONFIG_RUNTIME_EXPRESSION_NODE_EVALUATION_ERROR মেট্রিক্স কনফিগারেশনে নির্দিষ্ট করা এক্সপ্রেশনটি মূল্যায়ন করতে ব্যর্থ হয়েছে।

অ্যাসিঙ্ক্রোনাস কলব্যাক প্রকার

নিবন্ধিত লিসেনারগুলো ( misc_status_callback এবং report_ready_callback ) ব্যাকগ্রাউন্ড প্রসেসগুলোর আপডেট দেওয়ার জন্য এই টাইপগুলো ক্লায়েন্টের কাছে প্রেরণ করে।

টেলিমেট্রি পরিষেবা স্থিতি

TelemetryServiceStatus struct-টি init এর misc_status_callback ক্লোজারের একটি আর্গুমেন্ট হিসেবে কাজ করে, যা সার্ভিস ইনিশিয়ালাইজেশনের সময় রেজিস্টার করা হয়। এটি সার্ভিসের স্বাস্থ্য এবং রানটাইম সংক্রান্ত সমস্যা, যেমন—কোনো ডেটা সোর্স থেকে সংযোগ বিচ্ছিন্ন হওয়া, সম্পর্কে অ্যাসিঙ্ক্রোনাস আপডেট প্রদান করে।

ক্ষেত্র
id usize : স্ট্যাটাস ইভেন্টের জন্য একটি অনন্য শনাক্তকারী
code TelemetryServiceStatusCodes : ইভেন্টটিকে শ্রেণীবদ্ধকারী স্ট্যাটাস কোড
message String : স্ট্যাটাসের একটি পাঠযোগ্য বিবরণ
details Option< StatusDetails > : ঐচ্ছিক কাঠামোগত ডেটা যা স্ট্যাটাস সম্পর্কে অতিরিক্ত প্রেক্ষাপট প্রদান করে।

স্থিতির বিবরণ

এই enum-টি নির্দিষ্ট এরর কনটেক্সটগুলোকে অন্তর্ভুক্ত করে। যদি TelemetryServiceStatusdetails উপস্থিত থাকে, তবে এটি নিম্নলিখিত রূপগুলোর মধ্যে একটি হবে:

বিভিন্ন রূপ
AggregationPublisherErrorDetails ডেটা একত্রিত করার সময় একটি ত্রুটি ঘটেছে।
ServicePublisherErrorDetails একটি পরিষেবার সাথে সংযোগ করার চেষ্টা করার সময় একটি ত্রুটি ঘটেছে।
ConditionalTriggerErrorDetails একটি শর্তাধীন ট্রিগারের এক্সপ্রেশন মূল্যায়ন করার সময় একটি ত্রুটি ঘটেছে।
MetricsReportGeneratorErrorDetails মেট্রিক্স রিপোর্ট তৈরি করার সময় একটি ত্রুটি ঘটেছে।
ServiceErrorDetails একটি পরিষেবা থেকে নতুন বার্তা গ্রহণ করার সময় একটি ত্রুটি ঘটেছে।
FileIOErrorDetails একটি ফাইল I/O ত্রুটি ঘটেছে

প্রতিটি এনাম ভ্যারিয়েন্টে অতিরিক্ত ফিল্ড থাকে যা আরও বেশি প্রাসঙ্গিক তথ্য প্রদান করে।

রিপোর্টইনফো

ReportInfo struct-টি init এর report_ready_callback ক্লোজারের একটি আর্গুমেন্ট হিসেবে কাজ করে, যা সার্ভিস ইনিশিয়ালাইজেশনের সময় রেজিস্টার করা হয়। এতে একটি মেট্রিক্স রিপোর্ট বর্ণনা করে এমন আইডেন্টিফায়ারগুলো থাকে:

ক্ষেত্র
config_uuid String : যে মেট্রিক্স কনফিগারেশনটি রিপোর্টটি তৈরি করেছে তার UUID।
report_uuid String : পুনরুদ্ধারের জন্য প্রস্তুত মেট্রিক্স রিপোর্টের UUID।

মেট্রিক্স রিপোর্টটি সরাসরি পাওয়ার জন্য ( get_metrics_report দেখুন) শুধুমাত্র report_uuid ফিল্ডটিই প্রয়োজনীয়, অপরদিকে config_uuid কেবল এর উৎস সম্পর্কে অতিরিক্ত তথ্য হিসেবে কাজ করে।