Changeset 440 in code
- Timestamp:
- Jan 4, 2021, 3:26:30 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r438 r440 314 314 // ackMsgID acknowledges that a message has been received. 315 315 func (dc *downstreamConn) ackMsgID(id string) { 316 net Name, entity, _, _, err := parseMsgID(id)316 netID, entity, _, err := parseMsgID(id) 317 317 if err != nil { 318 318 dc.logger.Printf("failed to ACK message ID %q: %v", id, err) … … 320 320 } 321 321 322 network := dc.user.getNetwork (netName)322 network := dc.user.getNetworkByID(netID) 323 323 if network == nil { 324 324 return -
trunk/msgstore.go
r439 r440 2 2 3 3 import ( 4 "fmt" 5 "strconv" 6 "strings" 4 7 "time" 5 8 … … 19 22 Append(network *network, entity string, msg *irc.Message) (id string, err error) 20 23 } 24 25 func formatMsgID(netID int64, entity, extra string) string { 26 return fmt.Sprintf("%v %v %v", netID, entity, extra) 27 } 28 29 func parseMsgID(s string) (netID int64, entity, extra string, err error) { 30 l := strings.SplitN(s, " ", 3) 31 if len(l) != 3 { 32 return 0, "", "", fmt.Errorf("invalid message ID %q: expected 3 fields", s) 33 } 34 netID, err = strconv.ParseInt(l[0], 10, 64) 35 if err != nil { 36 return 0, "", "", fmt.Errorf("invalid message ID %q: %v", s, err) 37 } 38 return netID, l[1], l[2], nil 39 } -
trunk/msgstore_fs.go
r439 r440 37 37 } 38 38 39 func parseMsgID(s string) (network, entity string, t time.Time, offset int64, err error) { 39 func parseFSMsgID(s string) (netID int64, entity string, t time.Time, offset int64, err error) { 40 netID, entity, extra, err := parseMsgID(s) 41 if err != nil { 42 return 0, "", time.Time{}, 0, err 43 } 44 40 45 var year, month, day int 41 _, err = fmt.Sscanf( s, "%s %s %04d-%02d-%02d %d", &network, &entity, &year, &month, &day, &offset)42 if err != nil { 43 return "", "", time.Time{}, 0, fmt.Errorf("invalid message ID: %v", err)46 _, err = fmt.Sscanf(extra, "%04d-%02d-%02d %d", &year, &month, &day, &offset) 47 if err != nil { 48 return 0, "", time.Time{}, 0, fmt.Errorf("invalid message ID %q: %v", s, err) 44 49 } 45 50 t = time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local) 46 return net work, entity, t, offset, nil47 } 48 49 func format MsgID(network, entity string, t time.Time, offset int64) string {51 return netID, entity, t, offset, nil 52 } 53 54 func formatFSMsgID(netID int64, entity string, t time.Time, offset int64) string { 50 55 year, month, day := t.Date() 51 return fmt.Sprintf("%s %s %04d-%02d-%02d %d", network, entity, year, month, day, offset) 56 extra := fmt.Sprintf("%04d-%02d-%02d %d", year, month, day, offset) 57 return formatMsgID(netID, entity, extra) 52 58 } 53 59 54 60 // nextMsgID queries the message ID for the next message to be written to f. 55 func next MsgID(network *network, entity string, t time.Time, f *os.File) (string, error) {61 func nextFSMsgID(network *network, entity string, t time.Time, f *os.File) (string, error) { 56 62 offset, err := f.Seek(0, io.SeekEnd) 57 63 if err != nil { 58 64 return "", err 59 65 } 60 return format MsgID(network.GetName(), entity, t, offset), nil66 return formatFSMsgID(network.ID, entity, t, offset), nil 61 67 } 62 68 … … 65 71 fi, err := os.Stat(p) 66 72 if os.IsNotExist(err) { 67 return format MsgID(network.GetName(), entity, t, -1), nil73 return formatFSMsgID(network.ID, entity, t, -1), nil 68 74 } else if err != nil { 69 75 return "", err 70 76 } 71 return format MsgID(network.GetName(), entity, t, fi.Size()-1), nil77 return formatFSMsgID(network.ID, entity, t, fi.Size()-1), nil 72 78 } 73 79 … … 114 120 } 115 121 116 msgID, err := next MsgID(network, entity, t, f)122 msgID, err := nextFSMsgID(network, entity, t, f) 117 123 if err != nil { 118 124 return "", fmt.Errorf("failed to generate message ID: %v", err) … … 374 380 var afterOffset int64 375 381 if id != "" { 376 var idNet, idEntity string 382 var idNet int64 383 var idEntity string 377 384 var err error 378 idNet, idEntity, afterTime, afterOffset, err = parse MsgID(id)379 if err != nil { 380 return nil, err 381 } 382 if idNet != network. GetName()|| idEntity != entity {385 idNet, idEntity, afterTime, afterOffset, err = parseFSMsgID(id) 386 if err != nil { 387 return nil, err 388 } 389 if idNet != network.ID || idEntity != entity { 383 390 return nil, fmt.Errorf("cannot find message ID: message ID doesn't match network/entity") 384 391 }
Note:
See TracChangeset
for help on using the changeset viewer.