egorban / ndtpClient

0 stars 0 forks source link

Список доработок #1

Open ashirko opened 4 years ago

ashirko commented 4 years ago

Необходимо сделать следующие доработки:

  1. Принимать и отправлять данные в разных горутинах чтобы исключить возможность блокировки.
  2. Писать принимаемые данные в буфер - нет гарантии, что весь пакет считается за одно чтение.
  3. По умолчанию сделать параметры serverAddress = 9000, terminaID = 1, numPackets = 100.
  4. go fmt project
  5. parsePacket - не используется.
  6. Обрабатывать ошибки parsedPacket.Parse(packet).
  7. binary.LittleEndian.PutUint32(packetAuth[31:35], terminalID) crc := crc16(packetAuth[15:]) binary.BigEndian.PutUint16(packetAuth[6:8], crc) - перенести в navprot.ndtp.change и делать вызов к change. Оформи как pull request в navprot. Там точно packetAuth[31:35]?
  8. if parsedPacket.Nph.ServiceID == NPH_SRV_GENERIC_CONTROLS { numControl++ } - не посчитает ответ на пакет авторизации?
  9. Пакет авторизации не должен считается в numSend.
ashirko commented 4 years ago
  1. Сейчас данный функционал работает некорректно - буфер парсится только один раз в не зависимости от того сколько в нем пакетов. В результате программа зависает на conn.Read хотя в буфере есть нераспарсенные пакеты. Чтобы это исправить, нужно парсить буфер до тех пор пока в нем остаются целые пакеты. Если при парсинге оказалось что в буфере была только первая половина пакета, нужно сохранить ее и затем произвести конкатенацию со следующим считанным значением.
ashirko commented 4 years ago

navprot теперь имеет весию v1.4.3