Eloquent JavaScript



Download 2,16 Mb.
Pdf ko'rish
bet108/165
Sana09.07.2022
Hajmi2,16 Mb.
#762987
1   ...   104   105   106   107   108   109   110   111   ...   165
Bog'liq
Eloquent JavaScript

Network flooding
The fact that nests can talk only to their neighbors greatly inhibits the useful-
ness of this network.
For broadcasting information to the whole network, one solution is to set up
a type of request that is automatically forwarded to neighbors. These neighbors
then in turn forward it to their neighbors, until the whole network has received
the message.
import {everywhere} from "./crow-tech";
everywhere(nest => {
nest.state.gossip = [];
});
function sendGossip(nest, message, exceptFor = null) {
nest.state.gossip.push(message);
for (let neighbor of nest.neighbors) {
if (neighbor == exceptFor) continue;
request(nest, neighbor, "gossip", message);
}
}
requestType("gossip", (nest, message, source) => {
if (nest.state.gossip.includes(message)) return;
console.log(`${nest.name} received gossip '${
message}' from ${source}`);
sendGossip(nest, message, source);
});
To avoid sending the same message around the network forever, each nest
keeps an array of gossip strings that it has already seen. To define this array,
we use the
everywhere
function—which runs code on every nest—to add a
property to the nest’s
state
object, which is where we’ll keep nest-local state.
When a nest receives a duplicate gossip message, which is very likely to
happen with everybody blindly resending them, it ignores it. But when it
receives a new message, it excitedly tells all its neighbors except for the one
who sent it the message.
This will cause a new piece of gossip to spread through the network like an
191


ink stain in water. Even when some connections aren’t currently working, if
there is an alternative route to a given nest, the gossip will reach it through
there.
This style of network communication is called
flooding
—it floods the network
with a piece of information until all nodes have it.

Download 2,16 Mb.

Do'stlaringiz bilan baham:
1   ...   104   105   106   107   108   109   110   111   ...   165




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish