আপনার নোটিফায়ার আসলে NetworkManager-এর কোন অবস্থাটি পেল?
একই পূর্ণসংখ্যা এক এনুমারেশনে মানে নিষ্ক্রিয়, আরেকটিতে মানে সেটআপের মাঝপথ। শর্ত কপি করার আগে অবস্থার ধরনটি অবজেক্টের সঙ্গে মিলিয়ে নিন।
অবস্থা চার একটি API-তে বিজ্ঞপ্তি জারি করে আর অন্য একটিতে বোঝায় ভিন্ন কিছু, অথচ কোডে কোনো পার্থক্যই দেখা যায় না। NetworkManager-এর প্রতিটি অবস্থার মান একটি নামকরণ করা এনুমারেশনের অন্তর্গত, এবং এনুমারেশনগুলো কোনো নির্দিষ্ট সংখ্যার অর্থ নিয়ে একমত নয়। তাই একটি কার্যকর স্নিপেট থেকে পূর্ণসংখ্যা অন্য একটি কলব্যাক ফাংশনে কপি করা আচরণের হস্তান্তর নয়; এটি এমন একটি কাকতালীয় ঘটনা যা ভাঙার অপেক্ষায় থাকে। আগে ধরনটি খুঁজুন, তারপর সংখ্যাটি পাঠযোগ্য হয়ে যায়।
ধরনহীন সংখ্যা কেবল গুজব
এখানে দুটি এনুমারেশন গুরুত্বপূর্ণ। একটি সাধারণভাবে একটি সক্রিয় সংযোগ বর্ণনা করে: অজানা, সক্রিয়করণ, সক্রিয়, নিষ্ক্রিয়করণ, নিষ্ক্রিয়। অন্যটি বিশেষভাবে একটি VPN সংযোগ বর্ণনা করে, এবং এর পথে আরও বেশি ধাপ আছে, যার মধ্যে রয়েছে প্রস্তুতি, সংযোগ সেটআপ, IP কনফিগারেশন এবং কিছু সক্রিয় হওয়ার আগে একটি প্রমাণীকরণ অনুরোধ। দুটিরই সংখ্যায়ন শূন্য থেকে শুরু হয় এবং তারপর আলাদা হয়ে যায়, তাই সাধারণ এনুমারেশনে নিষ্ক্রিয় অর্থবোধকারী মানটি VPN ক্রমের মাঝখানে কোথাও পড়ে। কোনো হেডারই ভুল নয়; তারা ভিন্ন প্রশ্নের উত্তর দেয়।
লিটারালের বদলে ইনস্টল করা হেডার বা বাইন্ডিং থেকে প্রতীকী ধ্রুবক ব্যবহার করুন। নামটি পুনঃসংখ্যায়ন সহ্য করে; পূর্ণসংখ্যাটি করে না।
মেশিন নয়, একটি সংযোগ লক্ষ্য করুন
আপনার আগ্রহের প্রোফাইলের UUID এবং সেই সক্রিয়করণের তৈরি সক্রিয় সংযোগ অবজেক্ট থেকে শুরু করুন। একটি ডিভাইসের অবস্থা বা অন্য টানেলের অবস্থা এর বিকল্প নয়, এমনকি যখন দুটোই একই মুহূর্তে বদলায়। পর্যবেক্ষণের সঙ্গে অবজেক্টের পরিচয় রাখুন, যাতে পরবর্তী প্রতিবেদন বলতে পারে কোন প্রোফাইল এটি তৈরি করেছে। মেশিনের অনেক অবস্থা আছে; বিজ্ঞপ্তিটি তাদের একটির বিষয়ে।
তারপর সিদ্ধান্ত নিন বিজ্ঞপ্তিটির অর্থ কী হওয়া উচিত। যে সংযোগ কখনও সক্রিয়করণে পৌঁছায়নি তা সেটআপ ব্যর্থতা, আর যে সেশন সক্রিয় ছিল তারপর হারিয়ে গেছে তা ক্ষতি। এরা ভিন্ন শব্দের দাবিদার।
আপনি কোন রূপান্তরের কথা জানাচ্ছেন তা বলুন
নতুন মানটিকে বিচ্ছিন্নভাবে পরীক্ষা করার বদলে আগের অবস্থা সংরক্ষণ করুন এবং সেটির সঙ্গে নতুনটির তুলনা করুন। ব্যর্থ অবস্থায় রূপান্তর আর সক্রিয় অবস্থা থেকে বেরিয়ে যাওয়া ভিন্ন ঘটনা, এমনকি যখন দুটোই কিছু সংযুক্ত না থাকা অবস্থায় শেষ হয়। কারণের স্ট্রিংটি পাশে লিখে রাখুন, কারণ প্রায়ই এটি একমাত্র অংশ যার উপর ব্যবহারকারী কাজ করতে পারেন।
ইচ্ছাকৃত সংযোগ বিচ্ছিন্নতা কোনো ত্রুটি নয়। বিজ্ঞপ্তি যদি পার্থক্য বুঝতে না পারে, তবে এটি মানুষকে এটিকে উপেক্ষা করতে শেখাবে।
পর্যবেক্ষককে জীবিত রাখুন
যে অবস্থা বদলায়নি তার জন্য বারবার জরিপ আরেকটি সতর্কতা তৈরি করবে না। এই একক নিয়মই এই নোটিফায়ারগুলোর তৈরি অধিকাংশ কোলাহল দূর করে।
ম্যানেজার পুনরায় চালু হলে বা পর্যবেক্ষিত অবজেক্ট প্রতিস্থাপিত হলে সেই ক্ষেত্রেও কাজ করুন। পুরনো পরিচয়ে বাঁধা একটি পর্যবেক্ষক ঠিক যখন আকর্ষণীয় কিছু ঘটে তখনই চুপ হয়ে যায়, আর নীরবতা স্বাস্থ্যের মতো দেখায়। ম্যানেজারের উপস্থিতি বদলানোর পর বর্তমান অবজেক্টটি আবার আবিষ্কার করুন এবং পুনরাবিষ্কার কখন ঘটেছে তা লিখে রাখুন। নইলে লগ এমন একটি টানেল দেখায় যা কেবল রিপোর্ট করা বন্ধ করেছে।
ব্যবহারকারী যেখানে আছে সেখানে বিজ্ঞপ্তি পৌঁছান
একটি বিশেষাধিকারপ্রাপ্ত সিস্টেম কলব্যাক ডেস্কটপ সেশনের বিজ্ঞপ্তি সেবা উত্তরাধিকার সূত্রে পায় না। রুট-স্তরের হ্যান্ডলার থেকে পাঠানো বার্তা কোনো ত্রুটি ছাড়াই হারিয়ে যেতে পারে, যা এমন একটি নোটিফায়ার তৈরি করে যা হাতে পরীক্ষা করলে কাজ করে কিন্তু বাস্তবে কখনও করে না। যে সেশন ডেস্কটপের মালিক সেখানেই পৌঁছান, অথবা ডেস্কটপের নিজস্ব ক্লায়েন্টকে বিজ্ঞপ্তিটি জারি করতে দিন।
ক্লায়েন্টের বিদ্যমান বিজ্ঞপ্তি যদি ইতিমধ্যে ক্ষেত্রটি কভার করে তবে সেটিকেই প্রাধান্য দিন, কারণ একই ঘটনার জন্য দুটি নোটিফায়ার অতিরিক্ততা নয় বরং সহায়তা সমস্যা। সহায়তা রেকর্ডে ঘটনার সময়, প্রোফাইল ও কারণ রাখুন, আর পাসওয়ার্ড ও সম্পূর্ণ প্রোফাইল এর বাইরে রাখুন। মনে রাখুন বিজ্ঞপ্তিটি কী: পর্যবেক্ষিত অবস্থার প্রতিবেদন, কোনো বলবৎকরণ ব্যবস্থা নয়, কারণ টানেল অনুপস্থিত থাকাকালীন ট্রাফিক আটকানো নিজস্ব বাস্তবায়নসহ একটি আলাদা নীতি।