| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- //+build go1.9
- package jsoniter
- import (
- "reflect"
- "sync"
- )
- type frozenConfig struct {
- configBeforeFrozen Config
- sortMapKeys bool
- indentionStep int
- objectFieldMustBeSimpleString bool
- onlyTaggedField bool
- decoderCache sync.Map
- encoderCache sync.Map
- extensions []Extension
- streamPool chan *Stream
- iteratorPool chan *Iterator
- }
- func (cfg *frozenConfig) initCache() {
- cfg.decoderCache = sync.Map{}
- cfg.encoderCache = sync.Map{}
- }
- func (cfg *frozenConfig) addDecoderToCache(cacheKey reflect.Type, decoder ValDecoder) {
- cfg.decoderCache.Store(cacheKey, decoder)
- }
- func (cfg *frozenConfig) addEncoderToCache(cacheKey reflect.Type, encoder ValEncoder) {
- cfg.encoderCache.Store(cacheKey, encoder)
- }
- func (cfg *frozenConfig) getDecoderFromCache(cacheKey reflect.Type) ValDecoder {
- decoder, found := cfg.decoderCache.Load(cacheKey)
- if found {
- return decoder.(ValDecoder)
- }
- return nil
- }
- func (cfg *frozenConfig) getEncoderFromCache(cacheKey reflect.Type) ValEncoder {
- encoder, found := cfg.encoderCache.Load(cacheKey)
- if found {
- return encoder.(ValEncoder)
- }
- return nil
- }
|