File tree Expand file tree Collapse file tree 1 file changed +16
-8
lines changed
Expand file tree Collapse file tree 1 file changed +16
-8
lines changed Original file line number Diff line number Diff line change @@ -327,33 +327,41 @@ func (s *Segment) Payload() ([]byte, uint32) {
327327 return s .Value , uint32 (len (s .Value ))
328328}
329329
330- func (s * Segment ) ToJSON () ([]byte , error ) {
331- switch s .Type {
332- case record :
330+ var jsonHandlers = map [kind ]func (* Segment ) ([]byte , error ){
331+ record : func (s * Segment ) ([]byte , error ) {
333332 num , err := s .ToRecord ()
334333 if err != nil {
335334 return nil , err
336335 }
337336 return num .ToJSON ()
338- case table :
337+ },
338+ table : func (s * Segment ) ([]byte , error ) {
339339 tab , err := s .ToTable ()
340340 if err != nil {
341341 return nil , err
342342 }
343343 return tab .ToJSON ()
344- case variant :
344+ },
345+ variant : func (s * Segment ) ([]byte , error ) {
345346 variants , err := s .ToVariant ()
346347 if err != nil {
347348 return nil , err
348349 }
349350 return variants .ToJSON ()
350- case leaselock :
351+ },
352+ leaselock : func (s * Segment ) ([]byte , error ) {
351353 leaseLock , err := s .ToLeaseLock ()
352354 if err != nil {
353355 return nil , err
354356 }
355357 return leaseLock .ToJSON ()
356- }
358+ },
359+ }
357360
358- return nil , errors .New ("unknown data type" )
361+ func (s * Segment ) ToJSON () ([]byte , error ) {
362+ castfn , ok := jsonHandlers [s .Type ]
363+ if ! ok {
364+ return nil , errors .New ("unknown data type" )
365+ }
366+ return castfn (s )
359367}
You can’t perform that action at this time.
0 commit comments