MCPcopy
hub / github.com/redis/go-redis / getReaderBufSizeUnsafe

Function getReaderBufSizeUnsafe

internal/pool/buffer_size_test.go:163–200  ·  view source on GitHub ↗
(cn *pool.Conn)

Source from the content-addressed store, hash-verified

161}
162
163func getReaderBufSizeUnsafe(cn *pool.Conn) int {
164 cnPtr := (*struct {
165 id uint64 // First field in pool.Conn
166 usedAt atomic.Int64 // Second field (atomic)
167 lastPutAt atomic.Int64 // Third field (atomic)
168 checkoutAt atomic.Int64 // Fourth field (atomic)
169 netConnAtomic atomic.Value // atomic.Value for net.Conn
170 rd *proto.Reader
171 bw *bufio.Writer
172 wr *proto.Writer
173 // We only need fields up to rd, so we can stop here
174 })(unsafe.Pointer(cn))
175
176 if cnPtr.rd == nil {
177 return -1
178 }
179
180 // proto.Reader internal structure
181 rdPtr := (*struct {
182 rd *bufio.Reader
183 })(unsafe.Pointer(cnPtr.rd))
184
185 if rdPtr.rd == nil {
186 return -1
187 }
188
189 // bufio.Reader internal structure
190 bufReaderPtr := (*struct {
191 buf []byte
192 rd interface{}
193 r, w int
194 err error
195 lastByte int
196 lastRuneSize int
197 })(unsafe.Pointer(rdPtr.rd))
198
199 return len(bufReaderPtr.buf)
200}

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected