Changeset 666 in code for trunk


Ignore:
Timestamp:
Nov 3, 2021, 3:37:01 PM (4 years ago)
Author:
contact
Message:

msgstore: take Network as arg instead of network

The message stores don't need to access the internal network
struct, they just need network metadata such as ID and name.

This can ease moving message stores into a separate package in the
future.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r665 r666  
    12961296                                // Fast-forward history to last message
    12971297                                targetCM := net.casemap(target)
    1298                                 lastID, err := dc.user.msgStore.LastMsgID(net, targetCM, time.Now())
     1298                                lastID, err := dc.user.msgStore.LastMsgID(&net.Network, targetCM, time.Now())
    12991299                                if err != nil {
    13001300                                        dc.logger.Printf("failed to get last message ID: %v", err)
     
    13311331        limit := 4000
    13321332        targetCM := net.casemap(target)
    1333         history, err := dc.user.msgStore.LoadLatestID(net, targetCM, msgID, limit)
     1333        history, err := dc.user.msgStore.LoadLatestID(&net.Network, targetCM, msgID, limit)
    13341334        if err != nil {
    13351335                dc.logger.Printf("failed to send backlog for %q: %v", target, err)
     
    23382338                switch subcommand {
    23392339                case "BEFORE":
    2340                         history, err = store.LoadBeforeTime(network, entity, bounds[0], time.Time{}, limit, eventPlayback)
     2340                        history, err = store.LoadBeforeTime(&network.Network, entity, bounds[0], time.Time{}, limit, eventPlayback)
    23412341                case "AFTER":
    2342                         history, err = store.LoadAfterTime(network, entity, bounds[0], time.Now(), limit, eventPlayback)
     2342                        history, err = store.LoadAfterTime(&network.Network, entity, bounds[0], time.Now(), limit, eventPlayback)
    23432343                case "BETWEEN":
    23442344                        if bounds[0].Before(bounds[1]) {
    2345                                 history, err = store.LoadAfterTime(network, entity, bounds[0], bounds[1], limit, eventPlayback)
     2345                                history, err = store.LoadAfterTime(&network.Network, entity, bounds[0], bounds[1], limit, eventPlayback)
    23462346                        } else {
    2347                                 history, err = store.LoadBeforeTime(network, entity, bounds[0], bounds[1], limit, eventPlayback)
     2347                                history, err = store.LoadBeforeTime(&network.Network, entity, bounds[0], bounds[1], limit, eventPlayback)
    23482348                        }
    23492349                case "TARGETS":
    23502350                        // TODO: support TARGETS in multi-upstream mode
    2351                         targets, err := store.ListTargets(network, bounds[0], bounds[1], limit, eventPlayback)
     2351                        targets, err := store.ListTargets(&network.Network, bounds[0], bounds[1], limit, eventPlayback)
    23522352                        if err != nil {
    23532353                                dc.logger.Printf("failed fetching targets for chathistory: %v", err)
  • trunk/msgstore.go

    r665 r666  
    1717        // date. The message ID returned may not refer to a valid message, but can be
    1818        // used in history queries.
    19         LastMsgID(network *network, entity string, t time.Time) (string, error)
     19        LastMsgID(network *Network, entity string, t time.Time) (string, error)
    2020        // LoadLatestID queries the latest non-event messages for the given network,
    2121        // entity and date, up to a count of limit messages, sorted from oldest to newest.
    22         LoadLatestID(network *network, entity, id string, limit int) ([]*irc.Message, error)
    23         Append(network *network, entity string, msg *irc.Message) (id string, err error)
     22        LoadLatestID(network *Network, entity, id string, limit int) ([]*irc.Message, error)
     23        Append(network *Network, entity string, msg *irc.Message) (id string, err error)
    2424}
    2525
     
    3838        // both excluded. end may be before or after start.
    3939        // If events is false, only PRIVMSG/NOTICE messages are considered.
    40         ListTargets(network *network, start, end time.Time, limit int, events bool) ([]chatHistoryTarget, error)
     40        ListTargets(network *Network, start, end time.Time, limit int, events bool) ([]chatHistoryTarget, error)
    4141        // LoadBeforeTime loads up to limit messages before start down to end. The
    4242        // returned messages must be between and excluding the provided bounds.
    4343        // end is before start.
    4444        // If events is false, only PRIVMSG/NOTICE messages are considered.
    45         LoadBeforeTime(network *network, entity string, start, end time.Time, limit int, events bool) ([]*irc.Message, error)
     45        LoadBeforeTime(network *Network, entity string, start, end time.Time, limit int, events bool) ([]*irc.Message, error)
    4646        // LoadBeforeTime loads up to limit messages after start up to end. The
    4747        // returned messages must be between and excluding the provided bounds.
    4848        // end is after start.
    4949        // If events is false, only PRIVMSG/NOTICE messages are considered.
    50         LoadAfterTime(network *network, entity string, start, end time.Time, limit int, events bool) ([]*irc.Message, error)
     50        LoadAfterTime(network *Network, entity string, start, end time.Time, limit int, events bool) ([]*irc.Message, error)
    5151}
    5252
  • trunk/msgstore_fs.go

    r665 r666  
    9595}
    9696
    97 func (ms *fsMessageStore) logPath(network *network, entity string, t time.Time) string {
     97func (ms *fsMessageStore) logPath(network *Network, entity string, t time.Time) string {
    9898        year, month, day := t.Date()
    9999        filename := fmt.Sprintf("%04d-%02d-%02d.log", year, month, day)
     
    102102
    103103// nextMsgID queries the message ID for the next message to be written to f.
    104 func nextFSMsgID(network *network, entity string, t time.Time, f *os.File) (string, error) {
     104func nextFSMsgID(network *Network, entity string, t time.Time, f *os.File) (string, error) {
    105105        offset, err := f.Seek(0, io.SeekEnd)
    106106        if err != nil {
     
    110110}
    111111
    112 func (ms *fsMessageStore) LastMsgID(network *network, entity string, t time.Time) (string, error) {
     112func (ms *fsMessageStore) LastMsgID(network *Network, entity string, t time.Time) (string, error) {
    113113        p := ms.logPath(network, entity, t)
    114114        fi, err := os.Stat(p)
     
    121121}
    122122
    123 func (ms *fsMessageStore) Append(network *network, entity string, msg *irc.Message) (string, error) {
     123func (ms *fsMessageStore) Append(network *Network, entity string, msg *irc.Message) (string, error) {
    124124        s := formatMessage(msg)
    125125        if s == "" {
     
    389389}
    390390
    391 func (ms *fsMessageStore) parseMessagesBefore(network *network, entity string, ref time.Time, end time.Time, events bool, limit int, afterOffset int64) ([]*irc.Message, error) {
     391func (ms *fsMessageStore) parseMessagesBefore(network *Network, entity string, ref time.Time, end time.Time, events bool, limit int, afterOffset int64) ([]*irc.Message, error) {
    392392        path := ms.logPath(network, entity, ref)
    393393        f, err := os.Open(path)
     
    445445}
    446446
    447 func (ms *fsMessageStore) parseMessagesAfter(network *network, entity string, ref time.Time, end time.Time, events bool, limit int) ([]*irc.Message, error) {
     447func (ms *fsMessageStore) parseMessagesAfter(network *Network, entity string, ref time.Time, end time.Time, events bool, limit int) ([]*irc.Message, error) {
    448448        path := ms.logPath(network, entity, ref)
    449449        f, err := os.Open(path)
     
    477477}
    478478
    479 func (ms *fsMessageStore) LoadBeforeTime(network *network, entity string, start time.Time, end time.Time, limit int, events bool) ([]*irc.Message, error) {
     479func (ms *fsMessageStore) LoadBeforeTime(network *Network, entity string, start time.Time, end time.Time, limit int, events bool) ([]*irc.Message, error) {
    480480        start = start.In(time.Local)
    481481        end = end.In(time.Local)
     
    502502}
    503503
    504 func (ms *fsMessageStore) LoadAfterTime(network *network, entity string, start time.Time, end time.Time, limit int, events bool) ([]*irc.Message, error) {
     504func (ms *fsMessageStore) LoadAfterTime(network *Network, entity string, start time.Time, end time.Time, limit int, events bool) ([]*irc.Message, error) {
    505505        start = start.In(time.Local)
    506506        end = end.In(time.Local)
     
    526526}
    527527
    528 func (ms *fsMessageStore) LoadLatestID(network *network, entity, id string, limit int) ([]*irc.Message, error) {
     528func (ms *fsMessageStore) LoadLatestID(network *Network, entity, id string, limit int) ([]*irc.Message, error) {
    529529        var afterTime time.Time
    530530        var afterOffset int64
     
    570570}
    571571
    572 func (ms *fsMessageStore) ListTargets(network *network, start, end time.Time, limit int, events bool) ([]chatHistoryTarget, error) {
     572func (ms *fsMessageStore) ListTargets(network *Network, start, end time.Time, limit int, events bool) ([]chatHistoryTarget, error) {
    573573        start = start.In(time.Local)
    574574        end = end.In(time.Local)
     
    645645}
    646646
    647 func (ms *fsMessageStore) RenameNetwork(oldNet, newNet *network) error {
     647func (ms *fsMessageStore) RenameNetwork(oldNet, newNet *Network) error {
    648648        oldDir := filepath.Join(ms.root, escapeFilename(oldNet.GetName()))
    649649        newDir := filepath.Join(ms.root, escapeFilename(newNet.GetName()))
  • trunk/msgstore_memory.go

    r665 r666  
    5555}
    5656
    57 func (ms *memoryMessageStore) get(network *network, entity string) *messageRingBuffer {
     57func (ms *memoryMessageStore) get(network *Network, entity string) *messageRingBuffer {
    5858        k := ringBufferKey{networkID: network.ID, entity: entity}
    5959        if rb, ok := ms.buffers[k]; ok {
     
    6565}
    6666
    67 func (ms *memoryMessageStore) LastMsgID(network *network, entity string, t time.Time) (string, error) {
     67func (ms *memoryMessageStore) LastMsgID(network *Network, entity string, t time.Time) (string, error) {
    6868        var seq uint64
    6969        k := ringBufferKey{networkID: network.ID, entity: entity}
     
    7474}
    7575
    76 func (ms *memoryMessageStore) Append(network *network, entity string, msg *irc.Message) (string, error) {
     76func (ms *memoryMessageStore) Append(network *Network, entity string, msg *irc.Message) (string, error) {
    7777        switch msg.Command {
    7878        case "PRIVMSG", "NOTICE":
     
    9292}
    9393
    94 func (ms *memoryMessageStore) LoadLatestID(network *network, entity, id string, limit int) ([]*irc.Message, error) {
     94func (ms *memoryMessageStore) LoadLatestID(network *Network, entity, id string, limit int) ([]*irc.Message, error) {
    9595        _, _, seq, err := parseMemoryMsgID(id)
    9696        if err != nil {
  • trunk/upstream.go

    r664 r666  
    17881788                // message ID in delivery receipts, so that we can send the new message
    17891789                // in the backlog if an offline client reconnects.
    1790                 lastID, err := uc.user.msgStore.LastMsgID(uc.network, entityCM, time.Now())
     1790                lastID, err := uc.user.msgStore.LastMsgID(&uc.network.Network, entityCM, time.Now())
    17911791                if err != nil {
    17921792                        uc.logger.Printf("failed to log message: failed to get last message ID: %v", err)
     
    17991799        }
    18001800
    1801         msgID, err := uc.user.msgStore.Append(uc.network, entityCM, msg)
     1801        msgID, err := uc.user.msgStore.Append(&uc.network.Network, entityCM, msg)
    18021802        if err != nil {
    18031803                uc.logger.Printf("failed to log message: %v", err)
  • trunk/user.go

    r652 r666  
    262262        if net.user.msgStore != nil {
    263263                nameCM := net.casemap(ch.Name)
    264                 lastID, err := net.user.msgStore.LastMsgID(net, nameCM, time.Now())
     264                lastID, err := net.user.msgStore.LastMsgID(&net.Network, nameCM, time.Now())
    265265                if err != nil {
    266266                        net.logger.Printf("failed to get last message ID for channel %q: %v", ch.Name, err)
     
    860860        fsMsgStore, isFS := u.msgStore.(*fsMessageStore)
    861861        if isFS && updatedNetwork.GetName() != network.GetName() {
    862                 if err := fsMsgStore.RenameNetwork(network, updatedNetwork); err != nil {
     862                if err := fsMsgStore.RenameNetwork(&network.Network, &updatedNetwork.Network); err != nil {
    863863                        network.logger.Printf("failed to update FS message store network name to %q: %v", updatedNetwork.GetName(), err)
    864864                }
Note: See TracChangeset for help on using the changeset viewer.