/*
 * Copyright 2021 CloudWeGo Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Package transmeta .
package transmeta

import "github.com/bytedance/gopkg/cloud/metainfo"

// Keys in mesh header.
const (
	MeshVersion uint16 = iota
	TransportType
	LogID
	FromService
	FromCluster
	FromIDC
	ToService
	ToCluster
	ToIDC
	ToMethod
	Env
	DestAddress
	RPCTimeout
	ReadTimeout
	RingHashKey
	DDPTag
	WithMeshHeader
	ConnectTimeout
	SpanContext
	ShortConnection
	FromMethod
	StressTag
	MsgType
	HTTPContentType
	RawRingHashKey
	LBType
)

// key of header transport
const (
	HeaderIDLServiceName      = "isn"
	HeaderTransRemoteAddr     = "rip"
	HeaderTransToCluster      = "tc"
	HeaderTransToIDC          = "ti"
	HeaderTransPerfTConnStart = "pcs"
	HeaderTransPerfTConnEnd   = "pce"
	HeaderTransPerfTSendStart = "pss"
	HeaderTransPerfTRecvStart = "prs"
	HeaderTransPerfTRecvEnd   = "pre"
	// the connection peer will shutdown later,so it send back the header to tell client to close the connection.
	HeaderConnectionReadyToReset = "crrst"
	HeaderProcessAtTime          = "K_ProcessAtTime"
	// HeaderCRC32C is used to store the crc32c checksum of payload
	HeaderCRC32C = "crc32c"
)

// key of acl token
// You can set up acl token through metainfo.
// eg:
//
//	ctx = metainfo.WithValue(ctx, "gdpr-token", "your token")
const (
	// GDPRToken is used to set up gdpr token into InfoIDACLToken
	GDPRToken = metainfo.PrefixTransient + "gdpr-token"
)
