shared

package
v0.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 2, 2020 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Database

type Database struct {
	DB                          *sql.DB
	Writer                      sqlutil.Writer
	FederationSenderQueuePDUs   tables.FederationSenderQueuePDUs
	FederationSenderQueueEDUs   tables.FederationSenderQueueEDUs
	FederationSenderQueueJSON   tables.FederationSenderQueueJSON
	FederationSenderJoinedHosts tables.FederationSenderJoinedHosts
	FederationSenderRooms       tables.FederationSenderRooms
	FederationSenderBlacklist   tables.FederationSenderBlacklist
}

func (*Database) AddServerToBlacklist

func (d *Database) AddServerToBlacklist(serverName gomatrixserverlib.ServerName) error

func (*Database) AssociateEDUWithDestination

func (d *Database) AssociateEDUWithDestination(
	ctx context.Context,
	serverName gomatrixserverlib.ServerName,
	receipt *Receipt,
) error

AssociateEDUWithDestination creates an association that the destination queues will use to determine which JSON blobs to send to which servers.

func (*Database) AssociatePDUWithDestination

func (d *Database) AssociatePDUWithDestination(
	ctx context.Context,
	transactionID gomatrixserverlib.TransactionID,
	serverName gomatrixserverlib.ServerName,
	receipt *Receipt,
) error

AssociatePDUWithDestination creates an association that the destination queues will use to determine which JSON blobs to send to which servers.

func (*Database) CleanEDUs

func (d *Database) CleanEDUs(
	ctx context.Context,
	serverName gomatrixserverlib.ServerName,
	receipt *Receipt,
) error

CleanEDUs cleans up all specified EDUs. This is done when a transaction was sent successfully.

func (*Database) CleanPDUs

func (d *Database) CleanPDUs(
	ctx context.Context,
	serverName gomatrixserverlib.ServerName,
	receipt *Receipt,
) error

CleanTransactionPDUs cleans up all associated events for a given transaction. This is done when the transaction was sent successfully.

func (*Database) GetAllJoinedHosts

func (d *Database) GetAllJoinedHosts(ctx context.Context) ([]gomatrixserverlib.ServerName, error)

GetAllJoinedHosts returns the currently joined hosts for all rooms known to the federation sender. Returns an error if something goes wrong.

func (*Database) GetJoinedHosts

func (d *Database) GetJoinedHosts(
	ctx context.Context, roomID string,
) ([]types.JoinedHost, error)

GetJoinedHosts returns the currently joined hosts for room, as known to federationserver. Returns an error if something goes wrong.

func (*Database) GetJoinedHostsForRooms

func (d *Database) GetJoinedHostsForRooms(ctx context.Context, roomIDs []string) ([]gomatrixserverlib.ServerName, error)

func (*Database) GetNextTransactionEDUs

func (d *Database) GetNextTransactionEDUs(
	ctx context.Context,
	serverName gomatrixserverlib.ServerName,
	limit int,
) (
	edus []*gomatrixserverlib.EDU,
	receipt *Receipt,
	err error,
)

GetNextTransactionEDUs retrieves events from the database for the next pending transaction, up to the limit specified.

func (*Database) GetNextTransactionPDUs

func (d *Database) GetNextTransactionPDUs(
	ctx context.Context,
	serverName gomatrixserverlib.ServerName,
	limit int,
) (
	transactionID gomatrixserverlib.TransactionID,
	events []*gomatrixserverlib.HeaderedEvent,
	receipt *Receipt,
	err error,
)

GetNextTransactionPDUs retrieves events from the database for the next pending transaction, up to the limit specified.

func (*Database) GetPendingEDUCount

func (d *Database) GetPendingEDUCount(
	ctx context.Context,
	serverName gomatrixserverlib.ServerName,
) (int64, error)

GetPendingEDUCount returns the number of EDUs waiting to be sent for a given servername.

func (*Database) GetPendingEDUServerNames

func (d *Database) GetPendingEDUServerNames(
	ctx context.Context,
) ([]gomatrixserverlib.ServerName, error)

GetPendingServerNames returns the server names that have EDUs waiting to be sent.

func (*Database) GetPendingPDUCount

func (d *Database) GetPendingPDUCount(
	ctx context.Context,
	serverName gomatrixserverlib.ServerName,
) (int64, error)

GetPendingPDUCount returns the number of PDUs waiting to be sent for a given servername.

func (*Database) GetPendingPDUServerNames

func (d *Database) GetPendingPDUServerNames(
	ctx context.Context,
) ([]gomatrixserverlib.ServerName, error)

GetPendingServerNames returns the server names that have PDUs waiting to be sent.

func (*Database) IsServerBlacklisted

func (d *Database) IsServerBlacklisted(serverName gomatrixserverlib.ServerName) (bool, error)

func (*Database) PurgeRoomState added in v0.2.1

func (d *Database) PurgeRoomState(
	ctx context.Context, roomID string,
) error

func (*Database) RemoveServerFromBlacklist

func (d *Database) RemoveServerFromBlacklist(serverName gomatrixserverlib.ServerName) error

func (*Database) StoreJSON

func (d *Database) StoreJSON(
	ctx context.Context, js string,
) (*Receipt, error)

StoreJSON adds a JSON blob into the queue JSON table and returns a NID. The NID will then be used when inserting the per-destination metadata entries.

func (*Database) UpdateRoom

func (d *Database) UpdateRoom(
	ctx context.Context,
	roomID, oldEventID, newEventID string,
	addHosts []types.JoinedHost,
	removeHosts []string,
) (joinedHosts []types.JoinedHost, err error)

UpdateRoom updates the joined hosts for a room and returns what the joined hosts were before the update, or nil if this was a duplicate message. This is called when we receive a message from kafka, so we pass in oldEventID and newEventID to check that we haven't missed any messages or this isn't a duplicate message.

type Receipt

type Receipt struct {
	// contains filtered or unexported fields
}

An Receipt contains the NIDs of a call to GetNextTransactionPDUs/EDUs. We don't actually export the NIDs but we need the caller to be able to pass them back so that we can clean up if the transaction sends successfully.

func (*Receipt) Empty

func (e *Receipt) Empty() bool

func (*Receipt) String

func (e *Receipt) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL