From 3546a93c19b535ae9125ee749ad2b30aa8287511 Mon Sep 17 00:00:00 2001 From: Tom Early Date: Sun, 21 Oct 2018 15:45:33 -0700 Subject: [PATCH] read index --- DPlusAuthenticator.cpp | 5 ++-- QnetLink.cpp | 19 +++++++++++++ QnetLink.h | 3 ++ announce/speak.dat | Bin 0 -> 20016 bytes announce/speak.index | 63 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 announce/speak.dat create mode 100644 announce/speak.index diff --git a/DPlusAuthenticator.cpp b/DPlusAuthenticator.cpp index 306cfa5..98b03b4 100644 --- a/DPlusAuthenticator.cpp +++ b/DPlusAuthenticator.cpp @@ -55,11 +55,12 @@ bool CDPlusAuthenticator::Process(std::map &gwy_map, c hints.ai_socktype = SOCK_STREAM; int result = EAI_AGAIN; - while (EAI_AGAIN == result) { + int count = 0; + while (EAI_AGAIN==result && 20>count++) { // we'll wait up to 60 seconds for this to work result = getaddrinfo(m_address.c_str(), NULL, &hints, &infoptr); if (EAI_AGAIN == result) { fprintf(stdout, "getaddrinfo not ready: please wait...\n"); - std::this_thread::sleep_for(std::chrono::seconds(5)); + std::this_thread::sleep_for(std::chrono::seconds(3)); } } if (result) { diff --git a/QnetLink.cpp b/QnetLink.cpp index e962c6e..2dfc28c 100644 --- a/QnetLink.cpp +++ b/QnetLink.cpp @@ -66,6 +66,7 @@ CQnetLink::CQnetLink() CQnetLink::~CQnetLink() { + speak.clear(); } bool CQnetLink::resolve_rmt(char *name, int type, struct sockaddr_in *addr) @@ -3596,6 +3597,24 @@ bool CQnetLink::Init(const char *cfgfile) printf("srv_open() failed\n"); return true; } + + speak.resize(62); + std::string index(announce_dir); + index.append("/speak.index"); + std::ifstream voicefile(index.c_str(), std::ifstream::in); + if (voicefile) { + for (int i=0; i<62; i++) { + std::string name, offset, size; + voicefile >> name >> offset >> size; + if (name.size() && offset.size() && size.size()) { + unsigned long of = std::stoul(offset); + unsigned long sz = std::stoul(size); + speak[i] = 1000U * of + sz; + printf("%s at %ld, %ld long\n", name.c_str(), of, sz); + } + } + voicefile.close(); + } return false; } diff --git a/QnetLink.h b/QnetLink.h index 2b4cb08..5155276 100644 --- a/QnetLink.h +++ b/QnetLink.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -173,4 +174,6 @@ private: } old_sid[3]; CRandom Random; + + std::vector speak; }; diff --git a/announce/speak.dat b/announce/speak.dat new file mode 100644 index 0000000000000000000000000000000000000000..046de1645733d5589dc4e0b39b4b6697f85d2129 GIT binary patch literal 20016 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 LWHf2x3p9e#wo_pP literal 0 HcmV?d00001 diff --git a/announce/speak.index b/announce/speak.index new file mode 100644 index 0000000..30996eb --- /dev/null +++ b/announce/speak.index @@ -0,0 +1,63 @@ +A 0 29 +B 30 32 +C 63 34 +D 98 32 +E 131 26 +F 158 31 +G 190 36 +H 227 31 +I 259 28 +J 288 36 +K 325 28 +L 354 28 +M 383 34 +N 418 32 +O 451 29 +P 481 32 +Q 514 34 +R 549 29 +S 579 33 +T 613 28 +U 642 24 +V 667 44 +W 712 40 +X 753 33 +Y 787 31 +Z 819 36 +alpha 856 38 +bravo 895 38 +charlie 934 37 +delta 972 37 +echo 1010 33 +foxtrot 1044 56 +golf 1101 38 +hotel 1140 39 +india 1180 36 +juliette 1217 39 +kilo 1257 33 +lima 1291 41 +mike 1333 33 +november 1367 38 +oscar 1406 40 +papa 1447 35 +quebec 1483 36 +romeo 1520 39 +sierra 1560 35 +tango 1596 40 +uniform 1637 45 +victor 1683 34 +whiskey 1718 33 +X-ray 1752 40 +yankee 1793 39 +zulu 1833 38 +1 1872 34 +2 1907 28 +3 1936 37 +4 1974 35 +5 2010 37 +6 2048 35 +7 2084 38 +8 2123 28 +9 2152 37 +0 2190 33 +