func extractFromContext()

in correlation/grpc/server_interceptors.go [12:36]


func extractFromContext(ctx context.Context, propagateIncomingCorrelationID bool) (context.Context, string) {
	var correlationID string

	md, ok := metadata.FromIncomingContext(ctx)
	if ok {
		if propagateIncomingCorrelationID {
			// Extract correlation_id
			correlationID = CorrelationIDFromMetadata(md)
		}

		// Extract client name
		clientNames := md.Get(metadataClientNameKey)
		if len(clientNames) > 0 {
			ctx = correlation.ContextWithClientName(ctx, clientNames[0])
		}
	}

	if correlationID == "" {
		correlationID = correlation.SafeRandomID()
	}

	ctx = correlation.ContextWithCorrelation(ctx, correlationID)

	return ctx, correlationID
}