diff --git a/src/game/g_net.pas b/src/game/g_net.pas
index 82f4632a28c22fefd344cdca1e406d3f547534e0..ac845852fa1c26f5d3e4e41339842b11f93bedba 100644 (file)
--- a/src/game/g_net.pas
+++ b/src/game/g_net.pas
rd := tf.size-(tf.lastSentChunk*tf.chunkSize);
if (rd > tf.chunkSize) then rd := tf.chunkSize;
omsg.Write(LongInt(rd));
- e_LogWritefln('download: client #%d, sending chunk #%d/#%d (%d bytes)', [nc.ID, tf.lastSentChunk, chunks, rd]);
+ //e_LogWritefln('download: client #%d, sending chunk #%d/#%d (%d bytes)', [nc.ID, tf.lastSentChunk, chunks, rd]);
//FIXME: check for errors here
try
tf.stream.Seek(tf.lastSentChunk*tf.chunkSize, soFromBeginning);
for f := Low(NetClients) to High(NetClients) do
begin
if (not NetClients[f].Used) then continue;
- //if (NetClients[f].Transfer.stream = nil) then continue;
if (NetClients[f].Peer = NetEvent.peer) then
begin
nid := f;
break;
end;
end;
- e_LogWritefln('RECEIVE: dlpacket; client=%d (datalen=%u)', [nid, NetEvent.packet^.dataLength]);
+ //e_LogWritefln('RECEIVE: dlpacket; client=%d (datalen=%u)', [nid, NetEvent.packet^.dataLength]);
if (nid < 0) then exit; // wtf?!
nc := @NetClients[nid];
tf.lastAckTime := GetTimerMS();
cmd := Byte(NetEvent.packet^.data^);
- e_LogWritefln('RECEIVE: nid=%d; cmd=%u', [nid, cmd]);
+ //e_LogWritefln('RECEIVE: nid=%d; cmd=%u', [nid, cmd]);
case cmd of
NTF_CLIENT_FILE_REQUEST: // file request
begin
KillClientByFT(nc^);
exit;
end;
- if (ridx < 0) then fname := MapsDir+gGameSettings.WAD else fname := gExternalResources[ridx];
+ if (ridx < 0) then fname := MapsDir+gGameSettings.WAD else fname := GameDir+'/wads/'+gExternalResources[ridx];
if (length(fname) = 0) then
begin
e_WriteLog('Invalid filename: '+fname, TMsgType.Warning);
exit;
end;
tf.diskName := findDiskWad(fname);
- if (length(tf.diskName) = 0) then tf.diskName := findDiskWad(GameDir+'/wads/'+fname);
+ //if (length(tf.diskName) = 0) then tf.diskName := findDiskWad(GameDir+'/wads/'+fname);
if (length(tf.diskName) = 0) then
begin
e_LogWritefln('NETWORK: file "%s" not found!', [fname], TMsgType.Fatal);
// do it this way, so client may seek, or request retransfers for some reason
tf.lastAckChunk := chunk;
tf.lastSentChunk := chunk;
- e_LogWritefln('client #%d acked file transfer chunk %d', [nc.ID, chunk]);
+ //e_LogWritefln('client #%d acked file transfer chunk %d', [nc.ID, chunk]);
end;
NTF_CLIENT_MAP_REQUEST:
begin
TC: pTNetClient;
TP: TPlayer;
f: Integer;
+ //ctt: Int64;
begin
IP := '';
Result := 0;
if NetUseMaster then g_Net_Slist_Check;
g_Net_Host_CheckPings;
+ //ctt := -GetTimerMS();
// process file transfers
for f := Low(NetClients) to High(NetClients) do
begin
if (NetClients[f].Transfer.stream = nil) then continue;
ProcessHostFileTransfers(NetClients[f]);
end;
+ {
+ ctt := ctt+GetTimerMS();
+ if (ctt > 1) then e_LogWritefln('all transfers: [%d]', [Integer(ctt)]);
+ }
while (enet_host_service(NetHost, @NetEvent, 0) > 0) do
begin
ct, ett: Int64;
status: cint;
nextChunk: Integer = 0;
+ chunkTotal: Integer;
chunk: Integer;
csize: Integer;
buf: PChar = nil;
pkt: PENetPacket;
+ //stx: Int64;
begin
// send request
msg.Alloc(NET_BUFSIZE);
msg.Free();
end;
+ chunkTotal := (tf.size+tf.chunkSize-1) div tf.chunkSize;
+ e_LogWritefln('receiving file `%s` (%d chunks)', [tf.diskName, chunkTotal], TMsgType.Notify);
+ g_Game_SetLoadingText('downloading "'+ExtractFileName(tf.diskName)+'"', chunkTotal, False);
+
// wait for reply data
FillChar(ev, SizeOf(ev), 0);
Result := -1;
try
ett := getNewTimeoutEnd();
repeat
+ //stx := -GetTimerMS();
status := enet_host_service(NetHost, @ev, 300);
if (status < 0) then
begin
end
else
begin
+ //stx := stx+GetTimerMS();
+ //e_LogWritefln('g_Net_ReceiveResourceFile: stx=%d', [Integer(stx)]);
+ //stx := -GetTimerMS();
ett := getNewTimeoutEnd();
if (ev.packet.dataLength < 1) then
begin
Result := -1;
exit;
end;
- e_LogWritefln('got chunk #%d of #%d (csize=%d)', [chunk, (tf.size+tf.chunkSize-1) div tf.chunkSize, csize]);
+ //e_LogWritefln('got chunk #%d of #%d (csize=%d)', [chunk, (tf.size+tf.chunkSize-1) div tf.chunkSize, csize]);
msg.ReadData(buf, csize);
strm.WriteBuffer(buf^, csize);
nextChunk := chunk+1;
+ g_Game_StepLoading();
// send ack
omsg.Alloc(NET_BUFSIZE);
try
Result := -1;
exit;
end;
+ //stx := stx+GetTimerMS();
+ //e_LogWritefln('g_Net_ReceiveResourceFile: process stx=%d', [Integer(stx)]);
end;
end;
ENET_EVENT_TYPE_DISCONNECT: