MCPcopy Create free account
hub / github.com/BohemiaInteractive/CWR / DecodeMsgItem

Method DecodeMsgItem

engine/Poseidon/Network/NetworkMsgContext.cpp:1711–1934  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1709 EncodeMsgItem(dst, msg, msg->values[i], format->GetItem(i));
1710 }
1711}
1712
1713RefNetworkData NetworkComponent::DecodeMsgItem(NetworkMessageRaw& src, NetworkMessage* msg,
1714 NetworkMessageFormatItem& formatItem)
1715{
1716 switch (formatItem.type)
1717 {
1718 case NDTBool:
1719 {
1720 // = false: Get leaves value untouched on an unsupported compression or
1721 // a short read, and constructing the typed data loads it — an
1722 // uninitialized bool is an out-of-range value (UB).
1723 bool value = false;
1724 src.Get(value, formatItem.compression);
1725 return RefNetworkDataTyped<bool>(value);
1726 }
1727 case NDTInteger:
1728 {
1729 int value;
1730 src.Get(value, formatItem.compression);
1731 return RefNetworkDataTyped<int>(value);
1732 }
1733 case NDTFloat:
1734 {
1735 float value;
1736 src.Get(value, formatItem.compression);
1737 return RefNetworkDataTyped<float>(value);
1738 }
1739 case NDTString:
1740 {
1741 RString value;
1742 src.Get(value, formatItem.compression);
1743 return RefNetworkDataTyped<RString>(value);
1744 }
1745 case NDTRawData:
1746 {
1747 RefNetworkDataTyped<AutoArray<char>> value;
1748 // RefNetworkDataTyped< AutoArray<char> >();
1749 AutoArray<char>& array = value.GetVal();
1750 int m;
1751 if (!src.GetCount(m, NCTSmallUnsigned))
1752 return value;
1753 array.Resize(m);
1754 for (int j = 0; j < m; j++)
1755 {
1756 src.Get(array[j], formatItem.compression);
1757 }
1758 return value;
1759 }
1760 case NDTTime:
1761 {
1762 Time value;
1763 src.Get(value, formatItem.compression);
1764 return RefNetworkDataTyped<Time>(value);
1765 }
1766 case NDTVector:
1767 {
1768 Vector3 value;

Callers

nothing calls this directly

Calls 4

RefNetworkDataNullClass · 0.85
GetMethod · 0.45
GetCountMethod · 0.45
ResizeMethod · 0.45

Tested by

no test coverage detected