Toestand vier veroorsaak 'n kennisgewing op een API en beteken iets anders op 'n ander, en die kode wys hoegenaamd geen verskil nie. Elke toestandswaarde in NetworkManager hoort by 'n benoemde opsomming, en die opsommings stem nie saam oor wat 'n gegewe getal beteken nie. Om 'n heelgetal uit 'n werkende brokkie na 'n ander terugroepfunksie te kopieer is dus nie 'n oordrag van gedrag nie; dit is 'n toeval wat wag om te breek. Vind eers die tipe, dan word die getal leesbaar.

'n Getal sonder 'n tipe is 'n gerug

Twee opsommings maak hier saak. Een beskryf 'n aktiewe verbinding in die algemeen: onbekend, aktiveer, geaktiveer, deaktiveer, gedeaktiveer. Die ander beskryf 'n VPN-verbinding spesifiek, en dit het meer haltes op die pad, insluitend voorbereiding, verbindingsopstelling, IP-konfigurasie en 'n verifikasieversoek voordat enigiets geaktiveer word. Hul nommering begin in beide gevalle by nul en loop dan uitmekaar, so die waarde wat gedeaktiveer beteken in die algemene opsomming beland iewers in die middel van die VPN-reeks. Nie een opskrif is verkeerd nie; hulle beantwoord verskillende vrae.

Gebruik die simboliese konstante uit die geïnstalleerde opskrif of binding eerder as 'n letterlike waarde. Die naam oorleef 'n hernommering; die heelgetal nie.

Hou een verbinding dop, nie die masjien nie

Begin by die profiel-UUID wat jou aangaan en die aktiewe verbinding-objek wat deur daardie aktivering geskep is. 'n Toestand van 'n toestel, of die toestand van 'n ander tonnel, is nie 'n plaasvervanger nie, selfs wanneer albei op dieselfde oomblik verander. Hou die objek se identiteit by die waarneming, sodat 'n latere verslag kan sê watter profiel dit opgelewer het. Die masjien het baie toestande; die kennisgewing handel oor een daarvan.

Bepaal dan wat die kennisgewing moet beteken. 'n Verbinding wat nooit aktivering bereik het nie, is 'n opstellingsfout, en 'n sessie wat aktief was en toe verdwyn het, is 'n verlies. Dié verdien verskillende woorde.

Sê watter oorgang jy rapporteer

Stoor die vorige toestand en vergelyk dit met die nuwe een, in plaas daarvan om die nuwe waarde in isolasie te toets. 'n Oorgang na 'n mislukte toestand en 'n oorgang uit 'n geaktiveerde toestand is verskillende gebeurtenisse, selfs wanneer albei eindig met niks verbind. Teken die rede-string daarnaas aan, want dit is dikwels die enigste deel waarop 'n gebruiker kan reageer.

'n Opsetlike ontkoppeling is nie 'n fout nie. As die kennisgewing nie die verskil kan sien nie, sal dit mense leer om dit te ignoreer.

Hou die waarnemer aan die lewe

Herhaalde navraag mag nie nog 'n waarskuwing opwek vir 'n toestand wat nie verander het nie. Daardie enkele reël verwyder die meeste van die geraas wat hierdie kennisgewers genereer.

Hanteer ook die geval waar die bestuurder herbegin of die waargeneemde objek vervang word. 'n Waarnemer wat aan 'n verouderde identiteit gebind is, word stil op presies die oomblik wanneer iets interessants gebeur, en stilte lyk soos gesondheid. Herontdek die huidige objek nadat die bestuurder se teenwoordigheid verander het, en teken aan wanneer die herontdekking plaasgevind het. Anders wys die logboek 'n tonnel wat bloot opgehou het om te rapporteer.

Lever die kennisgewing waar die gebruiker is

'n Bevoorregte stelsel-terugroepfunksie erf nie 'n lessenaarsessie se kennisgewingdiens nie. 'n Boodskap wat vanaf 'n wortelvlak-hanteerder gestuur word, kan sonder 'n fout verdwyn, wat 'n kennisgewer lewer wat werk wanneer jy dit met die hand toets en nooit in die praktyk nie. Lewer in die sessie wat die lessenaar besit, of laat die lessenaar se eie kliënt die kennisgewing opwek.

Verkies die kliënt se bestaande kennisgewing as dit reeds die geval dek, want twee kennisgewers vir een gebeurtenis is 'n ondersteuningsprobleem eerder as oortolligheid. Hou die gebeurtenistyd, die profiel en die rede in die ondersteuningsrekord, en laat wagwoorde en volledige profiele daaruit. Onthou wat die kennisgewing is: 'n verslag van 'n waargenome toestand, nie 'n afdwingmeganisme nie, want om verkeer te blokkeer terwyl die tonnel afwesig is, is 'n aparte beleid met sy eie implementering.

Verwante artikels