Compose appended request messages

This commit is contained in:
2026-08-26 02:16:16 +00:00
parent ed0f7527d5
commit b0999112cc
10 changed files with 291 additions and 57 deletions

View File

@@ -59,20 +59,24 @@ func NormalizeCacheControl(control *CacheControl) (*CacheControl, error) {
// CloneRenderedMessages returns a deep copy of rendered messages.
func CloneRenderedMessages(messages []RenderedMessage) []RenderedMessage {
cloned := make([]RenderedMessage, len(messages))
for index, message := range messages {
cloned[index] = message
if message.CacheControl != nil {
cacheControl := *message.CacheControl
cloned[index].CacheControl = &cacheControl
}
}
copyRenderedMessages(cloned, messages)
return cloned
}
// ConcatRenderedMessages returns an independently owned concatenation of messages.
func ConcatRenderedMessages(prefix, suffix []RenderedMessage) []RenderedMessage {
messages := make([]RenderedMessage, 0, len(prefix)+len(suffix))
messages = append(messages, CloneRenderedMessages(prefix)...)
messages = append(messages, CloneRenderedMessages(suffix)...)
messages := make([]RenderedMessage, len(prefix)+len(suffix))
copyRenderedMessages(messages, prefix)
copyRenderedMessages(messages[len(prefix):], suffix)
return messages
}
func copyRenderedMessages(destination, source []RenderedMessage) {
for index, message := range source {
destination[index] = message
if message.CacheControl != nil {
cacheControl := *message.CacheControl
destination[index].CacheControl = &cacheControl
}
}
}