| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package context
- import (
- "context"
- "encoding/json"
- )
- type StreamContext interface {
- context.Context
- Serialize(any) ([]byte, error)
- }
- type streamContext struct {
- context.Context
- }
- type Serialize func(any) ([]byte, error)
- var _ StreamContext = (*streamContext)(nil)
- var (
- // serialize 是全局的自定义序列化器
- serialize Serialize
- )
- func (s *streamContext) Serialize(v any) ([]byte, error) {
- if serialize != nil {
- return serialize(v)
- }
- return json.Marshal(v)
- }
- func NewStreamContext(ctx context.Context) StreamContext {
- return &streamContext{
- Context: ctx,
- }
- }
- func SetSerializer(s Serialize) {
- serialize = s
- }
|