fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <chrono>
  4. #include <thread>
  5.  
  6. // --- Definisi Data dan QoS ---
  7.  
  8. /**
  9.  * @brief Tipe enumerasi untuk Tingkatan Quality of Service (QoS) pada DDS.
  10.  * QoS ini mensimulasikan prioritas dan keandalan data.
  11.  */
  12. enum class TingkatQoS {
  13. REAL_TIME_PENTING, // Prioritas tertinggi, latency sangat rendah.
  14. KEANDALAN_TINGGI, // Penting, butuh keandalan (misalnya, semua data harus sampai).
  15. TERBAIK_USAHA // Prioritas rendah, kecepatan olah cepat tapi bisa hilang.
  16. };
  17.  
  18. /**
  19.  * @brief Struktur untuk mensimulasikan data yang dikirim melalui DDS.
  20.  */
  21. struct DataDDS {
  22. std::string topic;
  23. int nilai;
  24. TingkatQoS qos;
  25. };
  26.  
  27. // --- Fungsi Simulasi ---
  28.  
  29. /**
  30.  * @brief Menghitung dan mensimulasikan waktu olah data berdasarkan Tingkat QoS.
  31.  * @param data Objek DataDDS yang akan diolah.
  32.  */
  33. void OlahData(const DataDDS& data) {
  34. long long delay_ms = 0;
  35. std::string qos_nama;
  36.  
  37. // Tentukan waktu olah data (delay) berdasarkan QoS
  38. switch (data.qos) {
  39. case TingkatQoS::REAL_TIME_PENTING:
  40. delay_ms = 10; // Latency sangat rendah (cepat)
  41. qos_nama = "Real-Time Penting";
  42. break;
  43. case TingkatQoS::KEANDALAN_TINGGI:
  44. delay_ms = 100; // Latency lebih tinggi (karena harus memastikan pengiriman/keandalan)
  45. qos_nama = "Keandalan Tinggi";
  46. break;
  47. case TingkatQoS::TERBAIK_USAHA:
  48. delay_ms = 50; // Latency sedang (lebih cepat dari Keandalan, tapi kurang prioritas)
  49. qos_nama = "Terbaik Usaha";
  50. break;
  51. }
  52.  
  53. // Simulasi proses olah data
  54. std::cout << "\n[QoS: " << qos_nama << "] Memproses data topik: "
  55. << data.topic << " dengan Nilai: " << data.nilai << std::endl;
  56. std::cout << " -> Simulasi Latency/Waktu Olah: " << delay_ms << " ms" << std::endl;
  57.  
  58. // Memberi jeda (delay) untuk simulasi waktu olah
  59. std::this_thread::sleep_for(std::chrono::milliseconds(delay_ms));
  60.  
  61. std::cout << " -> Data Topik '" << data.topic << "' **SELESAI** diolah." << std::endl;
  62. }
  63.  
  64. // --- Fungsi Utama ---
  65.  
  66. int main() {
  67. std::cout << "### Simulasi Tingkatan Penyimpanan/Kecepatan Olah Data DDS (C++) ###" << std::endl;
  68. std::cout << " (Tingkatan diwakili oleh Quality of Service - QoS)" << std::endl;
  69. std::cout << "------------------------------------------------------------------" << std::endl;
  70.  
  71. // 1. Data Real-Time (Misal: Pembacaan Sensor Kendaraan)
  72. DataDDS data_rt = {"Sensor Kecepatan", 85, TingkatQoS::REAL_TIME_PENTING};
  73. OlahData(data_rt);
  74.  
  75. // 2. Data Keandalan Tinggi (Misal: Perintah Kontrol Sistem)
  76. DataDDS data_reliabilitas = {"Perintah Rem", 1, TingkatQoS::KEANDALAN_TINGGI};
  77. OlahData(data_reliabilitas);
  78.  
  79. // 3. Data Terbaik Usaha (Misal: Log Debug atau Status Non-Kritis)
  80. DataDDS data_best_effort = {"Log Suhu Cabin", 25, TingkatQoS::TERBAIK_USAHA};
  81. OlahData(data_best_effort);
  82.  
  83. std::cout << "\n------------------------------------------------------------------" << std::endl;
  84. std::cout << "Simulasi Selesai." << std::endl;
  85. return 0;
  86. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
### Simulasi Tingkatan Penyimpanan/Kecepatan Olah Data DDS (C++) ###
   (Tingkatan diwakili oleh Quality of Service - QoS)
------------------------------------------------------------------

[QoS: Real-Time Penting] Memproses data topik: Sensor Kecepatan dengan Nilai: 85
   -> Simulasi Latency/Waktu Olah: 10 ms
   -> Data Topik 'Sensor Kecepatan' **SELESAI** diolah.

[QoS: Keandalan Tinggi] Memproses data topik: Perintah Rem dengan Nilai: 1
   -> Simulasi Latency/Waktu Olah: 100 ms
   -> Data Topik 'Perintah Rem' **SELESAI** diolah.

[QoS: Terbaik Usaha] Memproses data topik: Log Suhu Cabin dengan Nilai: 25
   -> Simulasi Latency/Waktu Olah: 50 ms
   -> Data Topik 'Log Suhu Cabin' **SELESAI** diolah.

------------------------------------------------------------------
Simulasi Selesai.