github.com/decred/dcrlnd@v0.7.6/channeldb/migration_01_to_11/legacy_serialization.go (about) 1 package migration_01_to_11 2 3 import ( 4 "io" 5 ) 6 7 // deserializeCloseChannelSummaryV6 reads the v6 database format for 8 // ChannelCloseSummary. 9 // 10 // NOTE: deprecated, only for migration. 11 func deserializeCloseChannelSummaryV6(r io.Reader) (*ChannelCloseSummary, error) { 12 c := &ChannelCloseSummary{} 13 14 err := ReadElements(r, 15 &c.ChanPoint, &c.ShortChanID, &c.ChainHash, &c.ClosingTXID, 16 &c.CloseHeight, &c.RemotePub, &c.Capacity, &c.SettledBalance, 17 &c.TimeLockedBalance, &c.CloseType, &c.IsPending, 18 ) 19 if err != nil { 20 return nil, err 21 } 22 23 // We'll now check to see if the channel close summary was encoded with 24 // any of the additional optional fields. 25 err = ReadElements(r, &c.RemoteCurrentRevocation) 26 switch { 27 case err == io.EOF: 28 return c, nil 29 30 // If we got a non-eof error, then we know there's an actually issue. 31 // Otherwise, it may have been the case that this summary didn't have 32 // the set of optional fields. 33 case err != nil: 34 return nil, err 35 } 36 37 if err := readChanConfig(r, &c.LocalChanConfig); err != nil { 38 return nil, err 39 } 40 41 // Finally, we'll attempt to read the next unrevoked commitment point 42 // for the remote party. If we closed the channel before receiving a 43 // funding locked message, then this can be nil. As a result, we'll use 44 // the same technique to read the field, only if there's still data 45 // left in the buffer. 46 err = ReadElements(r, &c.RemoteNextRevocation) 47 if err != nil && err != io.EOF { 48 // If we got a non-eof error, then we know there's an actually 49 // issue. Otherwise, it may have been the case that this 50 // summary didn't have the set of optional fields. 51 return nil, err 52 } 53 54 return c, nil 55 }