private static void IncomingChunkAvailabilityRequest(PacketHeader packetHeader, Connection connection, string itemCheckSum)
{
try
{
DistributedItem selectedItem = null;
lock (globalDFSLocker)
{
if (swarmedItemsDict.ContainsKey(itemCheckSum))
selectedItem = swarmedItemsDict[itemCheckSum];
}
if (selectedItem == null)
//Inform peer that we don't actually have the requested item so that it won't bother us again
//connection.SendObject("DFS_ItemRemovalUpdate", itemCheckSum, nullCompressionSRO);
UDPConnection.SendObject("DFS_ItemRemovalUpdate", new ItemRemovalUpdate(NetworkComms.NetworkIdentifier, itemCheckSum, false), (IPEndPoint)connection.ConnectionInfo.RemoteEndPoint, nullCompressionSRO);
else
//connection.SendObject("DFS_PeerChunkAvailabilityUpdate", new PeerChunkAvailabilityUpdate(itemCheckSum, selectedItem.SwarmChunkAvailability.PeerChunkAvailability(NetworkComms.NetworkIdentifier)), nullCompressionSRO);
UDPConnection.SendObject("DFS_PeerChunkAvailabilityUpdate", new PeerChunkAvailabilityUpdate(NetworkComms.NetworkIdentifier, itemCheckSum, selectedItem.SwarmChunkAvailability.PeerChunkAvailability(NetworkComms.NetworkIdentifier)), (IPEndPoint)connection.ConnectionInfo.RemoteEndPoint, nullCompressionSRO);
if (DFS.loggingEnabled) DFS._DFSLogger.Trace(" ... replied to IncomingChunkAvailabilityRequest (" + itemCheckSum + ").");
}
catch (CommsException)
{
//LogTools.LogException(e, "CommsError_IncomingChunkAvailabilityRequest");
}
catch (Exception e)
{
LogTools.LogException(e, "Error_IncomingChunkAvailabilityRequest");
}
}