Matrix Prototype in Go to test the energy efficiency
Go to file
2020-11-27 05:52:27 +01:00
.vscode Finishing Prototype 2020-10-17 12:07:39 +02:00
config Masterthesis 2020-11-27 05:52:27 +01:00
entities Masterthesis 2020-11-27 05:52:27 +01:00
utils Finishing Prototype 2020-10-17 12:07:39 +02:00
.gitignore Initial commit 2020-08-28 14:32:56 +00:00
go.mod Masterthesis 2020-11-27 05:52:27 +01:00
go.sum Finishing Prototype 2020-10-17 12:07:39 +02:00
main.go Masterthesis 2020-11-27 05:52:27 +01:00
README.md Add Models, Add Database 2020-09-28 22:37:02 +02:00
sqlite.db Masterthesis 2020-11-27 05:52:27 +01:00
ssl.crt Add Models, Add Database 2020-09-28 22:37:02 +02:00
ssl.key Add Models, Add Database 2020-09-28 22:37:02 +02:00
workloadGenerator.go Masterthesis 2020-11-27 05:52:27 +01:00

Matrix

Matrix Prototype in Go to test the energy efficiency

API

Begriffserklärung

Persisted Data Unit (PDU): Are transmitted between homerservers of one room. Part of the history (persisted). reply needed. (mostly events)

Ephemeral Data Unit (EDU): Are transmitted between 2 homeservers. Not part of the history (not persisted). No reply needed. (for example user presence, typing notification, etc.)

Transaction: Collection of up to 50 PDUs and 100 EDUs

Query: HTTP GET Request. Not persisted

Client-Server

Users

Check Username Availability: GET /_matrix/client/r0/register/available

Register: POST /_matrix/client/r0/register

Login: POST /_matrix/client/r0/login

Logout: POST /_matrix/client/r0/logout

Deactivate: POST /_matrix/client/r0/account/deactivate

Change Password: POST /_matrix/client/r0/account/password

Sync (After Login): GET /_matrix/client/r0/sync

Rooms

Create Room: POST /_matrix/client/r0/createRoom

Get Room Members: GET /_matrix/client/r0/rooms/{roomId}/members / GET /_matrix/client/r0/rooms/{roomId}/joined_members

Join Room: POST /_matrix/client/r0/rooms/{roomId}/join

Leave Room: POST /_matrix/client/r0/rooms/{roomId}/leave

Events

Create Event: PUT /_matrix/client/r0/rooms/{roomId}/send/{eventType}/{txnId}

Create State Event: PUT /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey}

Change Event: PUT /_matrix/client/r0/rooms/{roomId}/redact/{eventId}/{txnId}

Get Events: GET /_matrix/client/r0/rooms/{roomId}/messages

Get State Events: GET /_matrix/client/r0/rooms/{roomId}/state

Get Event: GET /_matrix/client/r0/rooms/{roomId}/event/{eventId}

Get State Event: GET /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey}

Server-Server

General

Resolve Server Name: GET /.well-known/matrix/server

Get Server Implementation: GET /_matrix/federation/v1/version

Keys

Get Signing Key: GET /_matrix/key/v2/server/{keyId}

Get Signing Key from another Server: GET /_matrix/key/v2/query/{serverName}/{keyId}

Get Signing Keys from multiple Servers: POST /_matrix/key/v2/query

Rooms

Get Prep Information for Join: GET /_matrix/federation/v1/make_join/{roomId}/{userId}

Join Room: PUT /_matrix/federation/v2/send_join/{roomId}/{eventId}

Get Prep Information for Leave: GET /_matrix/federation/v1/make_leave/{roomId}/{userId}

Leave Room: PUT /_matrix/federation/v2/send_leave/{roomId}/{eventId}

Events

Get State: GET /_matrix/federation/v1/state/{roomId} / GET /_matrix/federation/v1/state_ids/{roomId}

Get Event: GET /_matrix/federation/v1/event/{eventId}

Sync Events (trough transactions with multiple events): PUT /_matrix/federation/v1/send/{txnId}

Backfill: GET /_matrix/federation/v1/backfill/{roomId} / POST /_matrix/federation/v1/get_missing_events/{roomId}