MCPcopy Create free account
hub / github.com/ddnet/ddnet / SendMsg

Method SendMsg

src/engine/server/server.cpp:902–977  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

900}
901
902int CServer::SendMsg(CMsgPacker *pMsg, int Flags, int ClientId)
903{
904 CNetChunk Packet;
905 mem_zero(&Packet, sizeof(CNetChunk));
906 if(Flags & MSGFLAG_VITAL)
907 Packet.m_Flags |= NETSENDFLAG_VITAL;
908 if(Flags & MSGFLAG_FLUSH)
909 Packet.m_Flags |= NETSENDFLAG_FLUSH;
910
911 if(ClientId < 0)
912 {
913 CPacker Pack6, Pack7;
914 if(!RepackMsg(pMsg, Pack6, false))
915 return -1;
916 if(!RepackMsg(pMsg, Pack7, true))
917 return -1;
918
919 // write message to demo recorders
920 if(!(Flags & MSGFLAG_NORECORD))
921 {
922 for(auto &Recorder : m_aDemoRecorder)
923 if(Recorder.IsRecording())
924 Recorder.RecordMessage(Pack6.Data(), Pack6.Size());
925 }
926
927 if(!(Flags & MSGFLAG_NOSEND))
928 {
929 for(int i = 0; i < MAX_CLIENTS; i++)
930 {
931 if(m_aClients[i].m_State == CClient::STATE_INGAME)
932 {
933 CPacker *pPack = m_aClients[i].m_Sixup ? &Pack7 : &Pack6;
934 Packet.m_pData = pPack->Data();
935 Packet.m_DataSize = pPack->Size();
936 Packet.m_ClientId = i;
937 if(Antibot()->OnEngineServerMessage(i, Packet.m_pData, Packet.m_DataSize, Flags))
938 {
939 continue;
940 }
941 m_NetServer.Send(&Packet);
942 }
943 }
944 }
945 }
946 else
947 {
948 CPacker Pack;
949 if(!RepackMsg(pMsg, Pack, m_aClients[ClientId].m_Sixup))
950 return -1;
951
952 Packet.m_ClientId = ClientId;
953 Packet.m_pData = Pack.Data();
954 Packet.m_DataSize = Pack.Size();
955
956 if(Antibot()->OnEngineServerMessage(ClientId, Packet.m_pData, Packet.m_DataSize, Flags))
957 {
958 return 0;
959 }

Callers

nothing calls this directly

Calls 8

mem_zeroFunction · 0.85
RecordMessageMethod · 0.80
OnEngineServerMessageMethod · 0.80
RepackMsgFunction · 0.70
IsRecordingMethod · 0.45
DataMethod · 0.45
SizeMethod · 0.45
SendMethod · 0.45

Tested by

no test coverage detected