// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package fidl

import (
	"syscall/zx/internal/context"
)

type Context = context.Context

type marshalerContextKey struct{}

// GetMarshalerContext returns the MarshalerContext stored on ctx if it exists;
// otherwise the bool return value will be false.
func GetMarshalerContext(ctx Context) (MarshalerContext, bool) {
	marshalerCtx, ok := ctx.Value(marshalerContextKey{}).(MarshalerContext)
	return marshalerCtx, ok
}

// WithMarshalerContext returns a Context that embeds parent and stores
// marshalerCtx.
func WithMarshalerContext(parent Context, marshalerCtx MarshalerContext) Context {
	return context.WithValue(parent, marshalerContextKey{}, marshalerCtx)
}
