@@ -19,6 +19,7 @@ package syncmap
1919import (
2020 "strconv"
2121 "sync"
22+ "time"
2223
2324 "github.com/dragonflyoss/Dragonfly/pkg/atomiccount"
2425 "github.com/dragonflyoss/Dragonfly/pkg/errortypes"
@@ -60,91 +61,119 @@ func (mmap *SyncMap) Get(key string) (interface{}, error) {
6061 return v , nil
6162 }
6263
63- return nil , errors .Wrapf (errortypes .ErrDataNotFound , "key: %s" , key )
64+ return nil , errors .Wrapf (errortypes .ErrDataNotFound , "failed to get key %s from map " , key )
6465}
6566
6667// GetAsBitset returns result as *bitset.BitSet.
6768// The ErrConvertFailed error will be returned if the assertion fails.
6869func (mmap * SyncMap ) GetAsBitset (key string ) (* bitset.BitSet , error ) {
6970 v , err := mmap .Get (key )
7071 if err != nil {
71- return nil , errors .Wrapf (err , "key: %s" , key )
72+ return nil , errors .Wrapf (err , "failed to get key %s from map " , key )
7273 }
7374
7475 if value , ok := v .(* bitset.BitSet ); ok {
7576 return value , nil
7677 }
77- return nil , errors .Wrapf (errortypes .ErrConvertFailed , "key %s: %v " , key , v )
78+ return nil , errors .Wrapf (errortypes .ErrConvertFailed , "failed to get key %s from map with value %s " , key , v )
7879}
7980
8081// GetAsMap returns result as SyncMap.
8182// The ErrConvertFailed error will be returned if the assertion fails.
8283func (mmap * SyncMap ) GetAsMap (key string ) (* SyncMap , error ) {
8384 v , err := mmap .Get (key )
8485 if err != nil {
85- return nil , errors .Wrapf (err , "key: %s" , key )
86+ return nil , errors .Wrapf (err , "failed to get key %s from map " , key )
8687 }
8788
8889 if value , ok := v .(* SyncMap ); ok {
8990 return value , nil
9091 }
91- return nil , errors .Wrapf (errortypes .ErrConvertFailed , "key %s: %v " , key , v )
92+ return nil , errors .Wrapf (errortypes .ErrConvertFailed , "failed to get key %s from map with value %s " , key , v )
9293}
9394
9495// GetAsInt returns result as int.
9596// The ErrConvertFailed error will be returned if the assertion fails.
9697func (mmap * SyncMap ) GetAsInt (key string ) (int , error ) {
9798 v , err := mmap .Get (key )
9899 if err != nil {
99- return 0 , errors .Wrapf (err , "key: %s" , key )
100+ return 0 , errors .Wrapf (err , "failed to get key %s from map " , key )
100101 }
101102
102103 if value , ok := v .(int ); ok {
103104 return value , nil
104105 }
105- return 0 , errors .Wrapf (errortypes .ErrConvertFailed , "key %s: %v" , key , v )
106+ return 0 , errors .Wrapf (errortypes .ErrConvertFailed , "failed to get key %s from map with value %s" , key , v )
107+ }
108+
109+ // GetAsInt64 returns result as int64.
110+ // The ErrConvertFailed error will be returned if the assertion fails.
111+ func (mmap * SyncMap ) GetAsInt64 (key string ) (int64 , error ) {
112+ v , err := mmap .Get (key )
113+ if err != nil {
114+ return 0 , errors .Wrapf (err , "failed to get key %s from map" , key )
115+ }
116+
117+ if value , ok := v .(int64 ); ok {
118+ return value , nil
119+ }
120+ return 0 , errors .Wrapf (errortypes .ErrConvertFailed , "failed to get key %s from map with value %s" , key , v )
106121}
107122
108123// GetAsString returns result as string.
109124// The ErrConvertFailed error will be returned if the assertion fails.
110125func (mmap * SyncMap ) GetAsString (key string ) (string , error ) {
111126 v , err := mmap .Get (key )
112127 if err != nil {
113- return "" , errors .Wrapf (err , "key: %s" , key )
128+ return "" , errors .Wrapf (err , "failed to get key %s from map " , key )
114129 }
115130
116131 if value , ok := v .(string ); ok {
117132 return value , nil
118133 }
119- return "" , errors .Wrapf (errortypes .ErrConvertFailed , "key %s: %v " , key , v )
134+ return "" , errors .Wrapf (errortypes .ErrConvertFailed , "failed to get key %s from map with value %s " , key , v )
120135}
121136
122137// GetAsBool returns result as bool.
123138// The ErrConvertFailed error will be returned if the assertion fails.
124139func (mmap * SyncMap ) GetAsBool (key string ) (bool , error ) {
125140 v , err := mmap .Get (key )
126141 if err != nil {
127- return false , errors .Wrapf (err , "key: %s" , key )
142+ return false , errors .Wrapf (err , "failed to get key %s from map " , key )
128143 }
129144
130145 if value , ok := v .(bool ); ok {
131146 return value , nil
132147 }
133- return false , errors .Wrapf (errortypes .ErrConvertFailed , "key %s: %v " , key , v )
148+ return false , errors .Wrapf (errortypes .ErrConvertFailed , "failed to get key %s from map with value %s " , key , v )
134149}
135150
136151// GetAsAtomicInt returns result as *AtomicInt.
137152// The ErrConvertFailed error will be returned if the assertion fails.
138153func (mmap * SyncMap ) GetAsAtomicInt (key string ) (* atomiccount.AtomicInt , error ) {
139154 v , err := mmap .Get (key )
140155 if err != nil {
141- return nil , errors .Wrapf (err , "key: %s" , key )
156+ return nil , errors .Wrapf (err , "failed to get key %s from map " , key )
142157 }
143158
144159 if value , ok := v .(* atomiccount.AtomicInt ); ok {
145160 return value , nil
146161 }
147- return nil , errors .Wrapf (errortypes .ErrConvertFailed , "key %s: %v" , key , v )
162+ return nil , errors .Wrapf (errortypes .ErrConvertFailed , "failed to get key %s from map with value %s" , key , v )
163+ }
164+
165+ // GetAsTime returns result as Time.
166+ // The ErrConvertFailed error will be returned if the assertion fails.
167+ func (mmap * SyncMap ) GetAsTime (key string ) (time.Time , error ) {
168+ v , err := mmap .Get (key )
169+ if err != nil {
170+ return time .Now (), errors .Wrapf (err , "failed to get key %s from map" , key )
171+ }
172+
173+ if value , ok := v .(time.Time ); ok {
174+ return value , nil
175+ }
176+ return time .Now (), errors .Wrapf (errortypes .ErrConvertFailed , "failed to get key %s from map with value %s" , key , v )
148177}
149178
150179// Remove deletes the key-value pair from the mmap.
@@ -156,7 +185,7 @@ func (mmap *SyncMap) Remove(key string) error {
156185 }
157186
158187 if _ , ok := mmap .Load (key ); ! ok {
159- return errors .Wrapf (errortypes .ErrDataNotFound , "key: %s" , key )
188+ return errors .Wrapf (errortypes .ErrDataNotFound , "failed to get key %s from map " , key )
160189 }
161190
162191 mmap .Delete (key )
0 commit comments