Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
PROTOCOL_BASE_MAP_MATCHINGLIST
#1
Как сделать так чтобы пакет отсылал всю информацию но частями например по 800 байт
В данный момент сделано так PROTOCOL_BASE_MAP_MATCHINGLIST_PART_1, PROTOCOL_BASE_MAP_MATCHINGLIST_PART_2, PROTOCOL_BASE_MAP_MATCHINGLIST_PART_3
С магазином тоже самое , а нужно чтобы из всего списка отсылал определенное количество и не всегда одинаковое количество.
Подскажите где искать подобное.
Ответ
#2
На оффе по 100 элементов отправляет в PROTOCOL_BASE_MAP_MATCHINGLIST_ACK.

[SRC="csharp"]public static class ListExtensions
{
public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int limit)
{
return list.Select((item, inx) => new { item, inx })
.GroupBy(x => x.inx / limit)
.Select(g => g.Select(x => x.item));
}
}
[/SRC]



[SRC="csharp"]var parts = maps.Split(100);

foreach (var part in parts)
{
var list = part.ToList();

Response(new PROTOCOL_BASE_MAP_MATCHINGLIST_ACK(list));
}
[/SRC]
Ответ
#3
а в ack что слать тогда?
Ответ
#4
Связки режимов и карт. Данные у тебя есть, разбери их для начала.
Ответ
#5
PROGRAMMATOR Написал:Связки режимов и карт. Данные у тебя есть, разбери их для начала.

структура пакета разобрал, просто один раз её послать или как?
Ответ
#6
у тебя есть список режимов, его разбиваешь на списки по 100 элементов.

Отправляй части. В самом пакете, как видно из сниффа:

[SRC="csharp"]// short
// byte - количество режимов для текущей части

foreach (var mode in modes)
{
// ...
}

// int - если это последняя часть, то 1, иначе 0.
// short - сколько режимов было отправлено
// short - общее количество режимов
[/SRC]
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)