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

Method DecodeMessage

engine/Poseidon/Network/NetworkMisc.cpp:755–820  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

753 {
754 DiagLogF("Warning: Format not found");
755 }
756 return 0xFFFFFFFF;
757 }
758
759 // create message
760 Ref<NetworkMessage> msg = new NetworkMessage();
761 msg->time = Glob.time;
762 NetworkMessageContext ctx(msg, format, this, to, MSG_SEND);
763 TMError err = object->TransferMsg(ctx);
764 if (err != TMOK)
765 {
766 return 0xFFFFFFFF;
767 }
768
769 // send message
770 return SendMsg(to, msg, type, dwFlags);
771}
772
773void NetworkComponent::DecodeMessage(int from, NetworkMessageRaw& src)
774{
775 StatRawMsgReceived(from, src.GetSize());
776
777 OnMonitorIn(src.GetSize());
778
779 // message header
780 NetworkMessageType type;
781 if (!src.Get((int&)type, NCTSmallUnsigned))
782 return;
783 Time time;
784 if (!src.Get(time, NCTNone))
785 return;
786
787 if (type == NMTMessages)
788 {
789 int n;
790 if (!src.GetCount(n, NCTSmallUnsigned))
791 return;
792 for (int i = 0; i < n; i++)
793 {
794 NetworkMessageType type;
795#if _ENABLE_CHEATS
796 int oldPos = src.GetPos();
797#endif
798 src.Get((int&)type, NCTSmallUnsigned);
799 NetworkMessageFormatBase* format = GetFormat(type);
800 if (!format)
801 {
802 if (DiagLevel >= 1)
803 {
804 DiagLogF("Warning: Format not found");
805 }
806 return;
807 }
808 Ref<NetworkMessage> msg = new NetworkMessage();
809 msg->time = time;
810 // Message body
811 DecodeMsg(msg, src, format);
812 OnMessage(from, msg, type);

Callers 2

OnServerUserMessageFunction · 0.80
OnClientUserMessageFunction · 0.80

Calls 5

DiagLogFFunction · 0.85
GetSizeMethod · 0.45
GetMethod · 0.45
GetCountMethod · 0.45
GetPosMethod · 0.45

Tested by

no test coverage detected