Changeset 440 in code for trunk/msgstore_fs.go
- Timestamp:
- Jan 4, 2021, 3:26:30 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.