Суть состоит в том, что нужно написать алгоритм, который контролировал бы при считывании фаила кол-во отсылаемых строк, в зависимости от времени записанных в эти строки, реального времени(мс) и заданной максимальной границы, которая была бы рычагом контрола всего механизма. А теперь к деталям... ))
в меине представим обчную ситуацию:
формат строки с юникс временем, пусть будет таким)) -> line = "125342740, 43, 245": каждые 300 строк = плюс 10мс.
while(line = reader.readLine()) != null) {
sendEvent(line); // этот sendEvent надо обвернуть в оболочку, которая бы служила контроллером для ожидания или продолжения пересылки считывания фаила. подумал об:
long time = split... //достаем время
while(checkTime(time)) {
sendEvent(line);
}
}
где checkTime - это отдельный класс со своими атрибутами, к примеру
Инициализация глобального таймера... пусть будет long timer;
class timeControl {
private eventsToSend = x; //кол-во максимальных строк для отправки за промежуток "у" времени.
private eventsToSendTimeLimit = y; //как раз таки это время для eventsToSend
private timeStart = время первой строки для фиксации константного начала.
public boolean checkTime(long time) {
//иииии вот оно место где я взываю о помощи)))
}
}
Если сверху не совсем понятно, вот еще реальный пример.
Дано:
- каждые 300 строк с одинаковым временем, 301ая строка будет уже с +10мс итд.
- таймер реального времени
=> В промежуток 100мс реального времени должны отослаться все строки к примеру за 50мс константного времени(5*300 = 1500), НО! если это число привышает 1000, то таймер должен ждать до конца 100 мс не отсылая оставшиеся 500 строк.
В итоге конечно же можно всю эту работу будет автоматически оптимизировать, дабы не вбивать руками, но это уже не так важно.
Если ли у кого предпложения как бы более элегантнее можно было мой костыль доделать или же есть уже готовые более лучшие решения? ) Ибо если я сейчас продолжу писать, то как я это продумал, чую ничего хорошего из этого не выйдет)