Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Provide API to pool `CSteamNetworkingMessage`

Abierto
#369 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp
Área
networking

Línea de trabajo

Empieza revisando src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp alrededor de CSteamNetworkingMessage, incluidos AllocateMessage(), m_links y m_linksSecondaryQueue. Sigue las APIs expuestas m_pfnRelease y m_pfnFreeData y considera cómo debería funcionar el pooling tanto para los mensajes asignados como para los recibidos. La tarea estará terminada cuando la API proporcione una forma compatible de reutilizar las estructuras de mensajes sin depender de campos privados ni de suposiciones sobre el layout.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

It seems that CSteamNetworkingMessage doesn't pool messages.
This means that for each call to ISteamNetworkingUtils::AllocateMessage(), it dynamically allocates 264 bytes structure (on 64-bit environments).
This could be slow if you need to send loads of messages frequently.

I tried providing my own version of AllocateMessage() that allocates a message from my own pool, and initialize the CSteamNetworkingMessage properly.
But I realized you can't do that, because there's no way to initialize CSteamNetworkingMessage's private fields: m_links & m_linksSecondaryQueue
(Well, technically, I can just memset(msg, 0, 264) to initialize the hidden fields...
But not only that's UB, I can't tell if Steamworks SDK version of the message uses the same CSteamNetworkingMessage under the hood.)

It would be nice if there's an way to pool the message structure itself with the exposed m_pfnRelease,
like you can with m_pfnFreeData for the payloads.

Also, it would be great if you can also pool the message structure for the received messages too.

Lenguaje dominante
C++
Estrellas
9.9k
Forks
749
Merge medio
1 d 2 h
PR fusionados (30 d)
1

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ValveSoftware/GameNetworkingSockets

Todos los issues de ValveSoftware/GameNetworkingSockets

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.