Changeset 423 in code
- Timestamp:
- Oct 25, 2020, 4:47:38 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 1 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r421 r423 864 864 } 865 865 866 lastID, err := lastMsgID(net, target, time.Now())866 lastID, err := dc.user.msgStore.LastMsgID(net, target, time.Now()) 867 867 if err != nil { 868 868 dc.logger.Printf("failed to get last message ID: %v", err) … … 877 877 878 878 func (dc *downstreamConn) sendNetworkHistory(net *network) { 879 if dc.caps["draft/chathistory"] || dc. srv.LogPath == ""{879 if dc.caps["draft/chathistory"] || dc.user.msgStore == nil { 880 880 return 881 881 } … … 891 891 892 892 limit := 4000 893 history, err := loadHistoryLatestID(net, target, lastDelivered, limit)893 history, err := dc.user.msgStore.LoadLatestID(net, target, lastDelivered, limit) 894 894 if err != nil { 895 895 dc.logger.Printf("failed to send implicit history for %q: %v", target, err) … … 1602 1602 } 1603 1603 1604 if dc. srv.LogPath == ""{1604 if dc.user.msgStore == nil { 1605 1605 return ircError{&irc.Message{ 1606 1606 Command: irc.ERR_UNKNOWNCOMMAND, … … 1642 1642 switch subcommand { 1643 1643 case "BEFORE": 1644 history, err = loadHistoryBeforeTime(uc.network, entity, timestamp, limit)1644 history, err = dc.user.msgStore.LoadBeforeTime(uc.network, entity, timestamp, limit) 1645 1645 case "AFTER": 1646 history, err = loadHistoryAfterTime(uc.network, entity, timestamp, limit)1646 history, err = dc.user.msgStore.LoadAfterTime(uc.network, entity, timestamp, limit) 1647 1647 default: 1648 1648 // TODO: support LATEST, BETWEEN -
trunk/upstream.go
r419 r423 82 82 // set of LIST commands in progress, per downstream 83 83 pendingLISTDownstreamSet map[uint64]struct{} 84 85 messageLoggers map[string]*messageLogger86 84 } 87 85 … … 183 181 availableMemberships: stdMemberships, 184 182 pendingLISTDownstreamSet: make(map[uint64]struct{}), 185 messageLoggers: make(map[string]*messageLogger),186 183 } 187 184 return uc, nil … … 1612 1609 1613 1610 func (uc *upstreamConn) appendLog(entity string, msg *irc.Message) { 1614 if uc. srv.LogPath == ""{1611 if uc.user.msgStore == nil { 1615 1612 return 1616 }1617 1618 ml, ok := uc.messageLoggers[entity]1619 if !ok {1620 ml = newMessageLogger(uc.network, entity)1621 uc.messageLoggers[entity] = ml1622 1613 } 1623 1614 … … 1629 1620 history, ok := uc.network.history[entity] 1630 1621 if !ok { 1631 lastID, err := lastMsgID(uc.network, entity, time.Now())1622 lastID, err := uc.user.msgStore.LastMsgID(uc.network, entity, time.Now()) 1632 1623 if err != nil { 1633 1624 uc.logger.Printf("failed to log message: failed to get last message ID: %v", err) … … 1653 1644 } 1654 1645 1655 msgID, err := ml.Append(msg)1646 msgID, err := uc.user.msgStore.Append(uc.network, entity, msg) 1656 1647 if err != nil { 1657 1648 uc.logger.Printf("failed to log message: %v", err) -
trunk/user.go
r421 r423 250 250 networks []*network 251 251 downstreamConns []*downstreamConn 252 msgStore *messageStore 252 253 253 254 // LIST commands in progress … … 262 263 263 264 func newUser(srv *Server, record *User) *user { 265 var msgStore *messageStore 266 if srv.LogPath != "" { 267 msgStore = newMessageStore(srv.LogPath, record.Username) 268 } 269 264 270 return &user{ 265 User: *record, 266 srv: srv, 267 events: make(chan event, 64), 268 done: make(chan struct{}), 271 User: *record, 272 srv: srv, 273 events: make(chan event, 64), 274 done: make(chan struct{}), 275 msgStore: msgStore, 269 276 } 270 277 } … … 313 320 314 321 func (u *user) run() { 315 defer close(u.done) 322 defer func() { 323 if u.msgStore != nil { 324 if err := u.msgStore.Close(); err != nil { 325 u.srv.Logger.Printf("failed to close message store for user %q: %v", u.Username, err) 326 } 327 } 328 close(u.done) 329 }() 316 330 317 331 networks, err := u.srv.db.ListNetworks(u.ID) … … 460 474 uc.network.conn = nil 461 475 462 for _, ml := range uc.messageLoggers {463 if err := ml.Close(); err != nil {464 uc.logger.Printf("failed to close message logger: %v", err)465 }466 }467 468 476 uc.endPendingLISTs(true) 469 477
Note:
See TracChangeset
for help on using the changeset viewer.