เอกสารอ้างอิง API ของไลบรารีไคลเอ็นต์การตรวจวัดระยะไกลของ Rust

หน้านี้อธิบายประเภท วิธีการ และการจัดการข้อผิดพลาดในไลบรารี libsdv_telemetry_rust_wrapper

อินเทอร์เฟซ TelemetryServiceHolder

อินเทอร์เฟซหลักสำหรับไคลเอ็นต์คือโครงสร้าง TelemetryServiceHolder อินเทอร์เฟซนี้มีชุดวิธีการทั้งหมดสำหรับการจัดการการเชื่อมต่อบริการ การกำหนดค่าเมตริก และรายงานข้อมูล

การจัดการวงจรการให้บริการ

เมธอดเหล่านี้จะสร้างและสิ้นสุดการเชื่อมต่อกับบริการการวัดและส่งข้อมูลพื้นฐาน

get

pub fn get() -> TelemetryResult<TelemetryServiceHolder>

เมธอดแบบคงที่ที่เรียกแฮนเดิลที่ปลอดภัยแบบเธรดไปยังบริการการวัดและส่งข้อมูล นี่คือการเรียกที่บล็อกซึ่งจะรอจนกว่าบริการ Binder การวัดและส่งข้อมูลจะพร้อม บริการการวัดและส่งข้อมูลรองรับอินสแตนซ์เดียวของ TelemetryServiceHolder การเรียกเมธอดนี้มากกว่า 1 ครั้งจะทำให้เกิดลักษณะการทำงานที่ไม่คาดคิดหรือไม่ได้กำหนดไว้

TelemetryServiceHolder ใช้ลักษณะ Send และ Sync ซึ่งหมายความว่าสามารถแชร์ได้อย่างปลอดภัยในหลายๆ เธรด เช่น โดยการห่อไว้ในอินสแตนซ์ของ Arc วิธีการส่วนใหญ่ของ TelemetryServiceHolder เป็นแบบ async และใช้พร้อมกันได้

การคืนสินค้า
TelemetryResult<TelemetryServiceHolder> ผลลัพธ์ที่มีแฮนเดิลของบริการ หรือ TelemetryError อินสแตนซ์หากรับบริการไม่ได้

init

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

เริ่มต้นบริการโดยการลงทะเบียนการเรียกกลับแบบไม่พร้อมกัน เรียกใช้เมธอดนี้ 1 ครั้งหลังจากได้รับ 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<()>

ปิดการเชื่อมต่อบริการอย่างราบรื่น ล้าง Listener ที่ลงทะเบียน และล้างทรัพยากรที่เชื่อมโยง เรียกใช้เมธอดนี้ 1 ครั้งเมื่อแอปสิ้นสุด

การคืนสินค้า
TelemetryResult<()> ผลลัพธ์ว่างเปล่าเมื่อสำเร็จ หรือ TelemetryError อินสแตนซ์เมื่อไม่สำเร็จ

การจัดการการกำหนดค่าเมตริก

เมธอดแบบไม่พร้อมกันเหล่านี้จะจัดการคําจํากัดความและสถานะของการกําหนดค่าการเก็บรวบรวมข้อมูล

บริการการวัดและส่งข้อมูลจะรักษาการกำหนดค่าไว้ใน 2 สถานะ ได้แก่

  • ไม่ได้ใช้งาน: ระบบจะตรวจสอบการกำหนดค่าและจัดเก็บไว้ในดิสก์ แต่จะไม่ ใช้สำหรับการเก็บรวบรวมข้อมูล
  • ใช้งานอยู่: การกำหนดค่าจะรวบรวมข้อมูล และคอมโพเนนต์ (ทริกเกอร์ ผู้เผยแพร่โฆษณา เป็นต้น) จะใช้งานอยู่

เพื่อให้การกำหนดค่าคงอยู่เมื่อรีสตาร์ทบริการและรีบูตอุปกรณ์ บริการจะจัดเก็บการกำหนดค่าไว้ในดิสก์ของอุปกรณ์ บริการจะจัดเก็บการกำหนดค่าทั้งหมด ในไดเรกทอรีตามสถานะ 2 ไดเรกทอรี โดยจะตรวจสอบและเปิดใช้งาน (หากจำเป็น) เมื่อ บูต

add_metrics_config

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

เพิ่มการกำหนดค่าเมตริกใหม่ลงในบริการ การกำหนดค่าต้อง ระบุเป็นอาร์เรย์ไบต์ที่ซีเรียลไลซ์ การกำหนดค่าที่เพิ่มจะไม่มีการใช้งานโดยค่าเริ่มต้น

พารามิเตอร์
serialized_config &[u8]: ไบต์สไลซ์ที่มีข้อมูลการกำหนดค่าที่ซีเรียลไลซ์ Protobuf
การคืนสินค้า
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 เมื่อไม่สำเร็จ

remove_metrics_config

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

นำการกำหนดค่าเมตริกออกอย่างถาวร หากการกำหนดค่าใช้งานอยู่ บริการจะปิดใช้งานก่อน

พารามิเตอร์
config_uuid &str: UUID ของการกำหนดค่าที่จะนำออก
การคืนสินค้า
TelemetryResult<String> ผลลัพธ์ที่มี UUID ของการกำหนดค่าที่นำออกเมื่อสำเร็จ หรือ TelemetryError อินสแตนซ์เมื่อไม่สำเร็จ

remove_all_metrics_configs

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 ของรายงานที่เฉพาะเจาะจง คุณสามารถรับ UUID ของรายงานจากการแจ้งเตือนได้โดยใช้ report_ready_callback หรือ โดยการเรียก get_ready_reports_info

พารามิเตอร์
report_uuid &str: UUID ของรายงานที่ต้องการดึงข้อมูล
การคืนสินค้า
TelemetryResult<MetricsReport> ผลลัพธ์ที่มีออบเจ็กต์ Protobuf ที่ยกเลิกการซีเรียลไลซ์แล้วเมื่อสำเร็จ หรือ อินสแตนซ์ TelemetryError เมื่อไม่สำเร็จMetricsReport

get_ready_reports_info

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

ส่งคำค้นหาไปยังบริการ Telemetry เพื่อดูรายการรายงานทั้งหมดที่เสร็จสมบูรณ์และ พร้อมสำหรับการดึงข้อมูล ซึ่งจะเป็นประโยชน์ในการตรวจสอบสถานะของรายงานในกรณีที่พลาดการแจ้งเตือน การเรียกกลับ (เช่น หากลงทะเบียน report_ready_callback ช้า)

การคืนสินค้า
TelemetryResult<Vec<ReportInfo>> ผลลัพธ์ที่มีเวกเตอร์ของออบเจ็กต์ ReportInfo เมื่อสำเร็จ หรืออินสแตนซ์ TelemetryError เมื่อไม่สำเร็จ

ประเภทหลัก การเรียกกลับ และการจัดการข้อผิดพลาด

libsdv_telemetry_rust_wrapper ใช้ชุดประเภทที่กำหนดเองเพื่อโต้ตอบกับ บริการการวัดและส่งข้อมูล จัดการการเรียกกลับแบบไม่พร้อมกัน และจัดการข้อผิดพลาดของบริการ

การตอบกลับจาก API และประเภทข้อผิดพลาด

ไลบรารีจะส่งคืนประเภทเหล่านี้โดยตรงเพื่อระบุว่าการดำเนินการที่ขอสำเร็จหรือล้มเหลวในทันที

TelemetryResult

เมธอดส่วนใหญ่จะแสดงผล TelemetryResult<T> ซึ่งเป็นชื่อแทนสำหรับประเภท Result มาตรฐานที่ปรับให้เหมาะกับข้อผิดพลาดระดับบริการ

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

TelemetryError

TelemetryError struct จะห่อหุ้มความล้มเหลวทั้งหมดและให้ข้อมูลข้อผิดพลาดโดยละเอียดเฉพาะบริการ

ทุ่ง
status TelemetryServiceStatusCodes: รหัสข้อผิดพลาดที่แจงนับได้
message String: ข้อความอธิบายที่ให้รายละเอียดข้อผิดพลาด

TelemetryServiceStatusCodes

การแจงนับตัวเลขที่แสดงผลลัพธ์ของการเรียก API และสถานะบริการภายใน รหัสเหล่านี้ใช้ได้ทั้งใน 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

TelemetryServiceStatus struct ทำหน้าที่เป็นอาร์กิวเมนต์สำหรับ Closure misc_status_callback ของ init ซึ่งลงทะเบียนไว้ในระหว่างการเริ่มต้นบริการ โดยจะให้ข้อมูลอัปเดตแบบไม่พร้อมกันเกี่ยวกับ ปัญหาด้านความสมบูรณ์และรันไทม์ของบริการ เช่น การยกเลิกการเชื่อมต่อจากแหล่งข้อมูล

ทุ่ง
id usize: ตัวระบุที่ไม่ซ้ำกันสำหรับเหตุการณ์สถานะ
code TelemetryServiceStatusCodes: รหัสสถานะที่จัดหมวดหมู่เหตุการณ์
message String: คำอธิบายสถานะที่มนุษย์อ่านได้
details Option<StatusDetails>: Structured Data ที่ไม่บังคับ ซึ่งให้บริบทเพิ่มเติมเกี่ยวกับสถานะ

รายละเอียดสถานะ

การแจงนับนี้จะรวมบริบทข้อผิดพลาดที่เฉพาะเจาะจง หาก details ปรากฏใน TelemetryServiceStatus แสดงว่าเป็นตัวแปรใดตัวแปรหนึ่งต่อไปนี้

เวอร์ชัน
AggregationPublisherErrorDetails เกิดข้อผิดพลาดขณะรวบรวมข้อมูล
ServicePublisherErrorDetails เกิดข้อผิดพลาดขณะพยายามเชื่อมต่อกับบริการ
ConditionalTriggerErrorDetails เกิดข้อผิดพลาดขณะประเมินนิพจน์ของทริกเกอร์แบบมีเงื่อนไข
MetricsReportGeneratorErrorDetails เกิดข้อผิดพลาดขณะสร้างรายงานเมตริก
ServiceErrorDetails เกิดข้อผิดพลาดขณะรับข้อความใหม่จากบริการ
FileIOErrorDetails เกิดข้อผิดพลาด I/O ของไฟล์

ตัวแปร Enum แต่ละตัวมีช่องเพิ่มเติมที่ให้บริบทมากยิ่งขึ้น

ReportInfo

ReportInfo struct ทำหน้าที่เป็นอาร์กิวเมนต์สำหรับreport_ready_callback closure ของ init ซึ่งลงทะเบียนไว้ในระหว่างการเริ่มต้นบริการ ซึ่งมีตัวระบุที่อธิบายรายงานเมตริกดังนี้

ทุ่ง
config_uuid String: UUID ของการกำหนดค่าเมตริกที่สร้างรายงาน
report_uuid String: UUID ของรายงานเมตริกที่พร้อมสำหรับการดึงข้อมูล

ฟิลด์ report_uuid เป็นฟิลด์เดียวที่จำเป็นสำหรับการดึงข้อมูลรายงานเมตริกเพิ่มเติม (ดู get_metrics_report) ส่วน config_uuid จะเป็นเพียงข้อมูลเพิ่มเติมเกี่ยวกับแหล่งที่มาของรายงาน