From 42f939ca8ea43a9f57883d0372a05e4fd8eaed13 Mon Sep 17 00:00:00 2001 From: ghost Date: Mon, 7 Aug 2023 19:15:26 +0300 Subject: [PATCH] collect route coordinates --- database/yggstate.mwb | Bin 7610 -> 9426 bytes media/db-prototype.png | Bin 39556 -> 62034 bytes src/crontab/crawler.php | 47 ++++++++++++++++++++++++++++-- src/library/mysql.php | 62 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 2 deletions(-) diff --git a/database/yggstate.mwb b/database/yggstate.mwb index a8e2d67f3d1ec5994cc317f33dd42359fa6d3a67..4acbca8618c39175349384b17ca1693d1f0e2c36 100644 GIT binary patch literal 9426 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 delta 7500 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 diff --git a/media/db-prototype.png b/media/db-prototype.png index 0fce0766aff3a0f7e796027d8d9686000aba3822..f729fd14b753284de15f8c8da9392bc9002606ff 100644 GIT binary patch literal 62034 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%0D!(QC5l}O;TA{M4Pd4)ntU-0@`>f{ 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�wirb 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

wVuJ4Cox}vaR&9yL@(h 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 z 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 0, 'update' => 0, ] - ] + ], + 'coordinate' => [ + 'total' => [ + 'insert' => 0, + ], + 'route' => [ + 'total' => [ + 'insert' => 0, + 'delete' => 0, + ] + ] + ], ] ] ]; @@ -82,7 +93,7 @@ if ($connectedPeers = Yggverse\Yggdrasilctl\Yggdrasil::getPeers()) { $debug['yggdrasil']['peer']['total']['insert']++; } - // Init peer data + // Init peer remote if ($connectedPeerRemoteUrl = Yggverse\Parser\Url::parse($connectedPeerInfo->remote)) { if ($dbPeerRemote = $db->findPeerRemote($dbPeerId, @@ -122,6 +133,38 @@ if ($connectedPeers = Yggverse\Yggdrasilctl\Yggdrasil::getPeers()) { $debug['yggdrasil']['peer']['remote']['total']['insert']++; } + + // Init peer coordinate + if ($dbPeerCoordinate = $db->getLastCoordinate($dbPeerId)) { + + $peerCoordinateId = $dbPeerCoordinate->peerCoordinateId; + + } else { + + $peerCoordinateId = $db->addPeerCoordinate($dbPeerId, $connectedPeerInfo->port, time()); + $debug['yggdrasil']['peer']['coordinate']['total']['insert']++; + } + + // Init peer coordinate route + + $localPeerCoordinateRoute = []; + foreach ($db->getPeerCoordinateRoute($peerCoordinateId) as $dbPeerCoordinateRoute) { + + $localPeerCoordinateRoute[$dbPeerCoordinateRoute->level] = $dbPeerCoordinateRoute->port; + } + + // Compare remote and local routes to prevent write operations + if ($localPeerCoordinateRoute !== $connectedPeerInfo->coords) { + + $debug['yggdrasil']['peer']['coordinate']['route']['total']['delete'] += + $db->flushPeerCoordinateRoute($peerCoordinateId); + + foreach ($connectedPeerInfo->coords as $level => $port) { + + $debug['yggdrasil']['peer']['coordinate']['route']['total']['insert'] += + $db->addPeerCoordinateRoute($peerCoordinateId, $level, $port); + } + } } $debug['yggdrasil']['peer']['total']['online']++; diff --git a/src/library/mysql.php b/src/library/mysql.php index 4f9fd7e..9979939 100644 --- a/src/library/mysql.php +++ b/src/library/mysql.php @@ -155,6 +155,68 @@ class MySQL { return $query->fetch(); } + // Peer coordinate + // https://github.com/matrix-org/pinecone/wiki/2.-Spanning-Tree#coordinates + + public function addPeerCoordinate(int $peerId, int $port, int $timeAdded) { + + $this->_debug->query->insert->total++; + + $query = $this->_db->prepare('INSERT INTO `peerCoordinate` SET `peerId` = ?, + `port` = ?, + `timeAdded` = ?'); + + $query->execute([$peerId, $port, $timeAdded]); + + return $this->_db->lastInsertId(); + } + + public function addPeerCoordinateRoute(int $peerCoordinateId, int $level, int $port) { + + $this->_debug->query->insert->total++; + + $query = $this->_db->prepare('INSERT INTO `peerCoordinateRoute` SET `peerCoordinateId` = ?, + `level` = ?, + `port` = ?'); + + $query->execute([$peerCoordinateId, $level, $port]); + + return $this->_db->lastInsertId(); + } + + public function flushPeerCoordinateRoute(int $peerCoordinateId) { + + $this->_debug->query->delete->total++; + + $query = $this->_db->prepare('DELETE FROM `peerCoordinateRoute` WHERE `peerCoordinateId` = ?'); + + $query->execute([$peerCoordinateId]); + + return $query->rowCount(); + } + + public function getLastCoordinate(int $peerId) { + + $this->_debug->query->select->total++; + + $query = $this->_db->prepare('SELECT * FROM `peerCoordinate` WHERE `peerId` = ? ORDER BY `timeAdded` DESC LIMIT 1'); + + $query->execute([$peerId]); + + return $query->fetch(); + } + + public function getPeerCoordinateRoute(int $peerCoordinateId) { + + $this->_debug->query->select->total++; + + $query = $this->_db->prepare('SELECT * FROM `peerCoordinateRoute` WHERE `peerCoordinateId` = ? ORDER BY `level` ASC'); + + $query->execute([$peerCoordinateId]); + + return $query->fetchAll(); + } + // Other public function optimize() {