{"id":41793716,"url":"https://github.com/sigtot/sanntid","last_synced_at":"2026-01-25T05:09:00.178Z","repository":{"id":57554005,"uuid":"166008743","full_name":"sigtot/sanntid","owner":"sigtot","description":"Elevator Project for TTK4145 Real-time Programming","archived":false,"fork":false,"pushed_at":"2020-05-09T07:28:47.000Z","size":3610,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T06:22:03.544Z","etag":null,"topics":["concurrency","distributed-systems","elevators","golang","network"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sigtot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-16T09:06:35.000Z","updated_at":"2020-05-09T07:28:50.000Z","dependencies_parsed_at":"2022-09-10T15:50:05.998Z","dependency_job_id":null,"html_url":"https://github.com/sigtot/sanntid","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sigtot/sanntid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigtot%2Fsanntid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigtot%2Fsanntid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigtot%2Fsanntid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigtot%2Fsanntid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sigtot","download_url":"https://codeload.github.com/sigtot/sanntid/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigtot%2Fsanntid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28744421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T02:46:29.005Z","status":"ssl_error","status_checked_at":"2026-01-25T02:44:29.968Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concurrency","distributed-systems","elevators","golang","network"],"created_at":"2026-01-25T05:09:00.114Z","updated_at":"2026-01-25T05:09:00.169Z","avatar_url":"https://github.com/sigtot.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multi-elevator network project\n[![Go Report Card](https://goreportcard.com/badge/github.com/sigtot/sanntid)](https://goreportcard.com/report/github.com/sigtot/sanntid)\n[![GoDoc](https://godoc.org/github.com/sigtot/sanntid?status.svg)](https://godoc.org/github.com/sigtot/sanntid)\n\n\u003e Elevator Project for TTK4145 Real-time Programming\n\nThis repo contains implementation of a system for connecting n elevators and n elevator panels installed on n computers over a network connection in such a way that orders are distributed evenly and efficiently to the elevators. A large effort has been put into fault tolerance due to the requirement that no order is lost after it has been accepted. This requirement applies even in the case of network failure, power outages, program crashes or situations with severe packet loss. \n\n![simulator](/elev.gif)\n\n## Design\nThe design for this system is based on the common publish/subscribe pattern which is heavily used distributed systems.\nIn hte figure below, the modules of the system are shown, with dashed, labeled arrows correspond to a module being\neither a subscriber or a publisher to a certain topic.\n\nSolid arrows however, signify more direct forms of communication between modules (channels, function calls, etc.).\n\n![module_overview](https://i.imgur.com/q8aMH2N.png)\n\n## Imported packages\n### elevio package\nThe elevator driver used in the project was provided by the course instructors.\nAs we were not pleased with some of the implementation done in the driver, the repository was forked, \nand made some changes to. The original elevator driver can be found [here](https://github.com/TTK4145/driver-go).\n\n### bbolt\nBolt is the database used by the order watchers to store not yet delivered calls.\nThe package used in this project is the bbolt package by etcd, which can be found [here](https://github.com/etcd-io/bbolt)\n\n### logrus\nLogging events in the system is done with the logrus package.\nThe package can be found [here](https://github.com/Sirupsen/logrus)\n\n### Go standard library\nA fair few of the packages from the Go standard library are used in this project.\nFor specific packages see the imports in the files. These packages are used for a lot of different tasks,\nfrom io and os related, to encoding and compressing. For the network related parts of the project the net package \nand net/http package are used.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsigtot%2Fsanntid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsigtot%2Fsanntid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsigtot%2Fsanntid/lists"}