isEmpty()) { return; } $headerString = ''; /** @var Entry $entry */ foreach ($baggage->getAll() as $key => $entry) { $value = urlencode($entry->getValue()); $headerString.= "{$key}={$value}"; if (($metadata = $entry->getMetadata()->getValue()) !== '' && ($metadata = $entry->getMetadata()->getValue()) !== '0') { $headerString .= ";{$metadata}"; } $headerString .= ','; } if ($headerString !== '' && $headerString !== '0') { $headerString = rtrim($headerString, ','); $setter->set($carrier, self::BAGGAGE, $headerString); } } public function extract($carrier, PropagationGetterInterface $getter = null, ContextInterface $context = null): ContextInterface { $getter ??= ArrayAccessGetterSetter::getInstance(); $context ??= Context::getCurrent(); if (!$baggageHeader = $getter->get($carrier, self::BAGGAGE)) { return $context; } $baggageBuilder = Baggage::getBuilder(); $this->extractValue($baggageHeader, $baggageBuilder); return $context->withContextValue($baggageBuilder->build()); } private function extractValue(string $baggageHeader, BaggageBuilderInterface $baggageBuilder): void { (new Parser($baggageHeader))->parseInto($baggageBuilder); } }