From c794455897b873398b3e03f3d9978d33595f6468 Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 19 Jul 2019 12:28:12 +0200 Subject: [PATCH] comment and import improvements --- a_main-packr.go | 6 +++--- templates/amqp_encode_decode.tpl | 6 ++++++ templates/amqp_subscriber_handler.tpl | 5 ++++- .../amqp/encode_decode/subscribe_decode.tpl | 14 ++++++++++++-- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/a_main-packr.go b/a_main-packr.go index c3b13b9..7082e69 100644 --- a/a_main-packr.go +++ b/a_main-packr.go @@ -8,9 +8,9 @@ import "github.com/gobuffalo/packr" // and any other packr generated files. func init() { packr.PackJSONBytes("./templates", "Dockerfile.tpl", "\"IyMjIyMjIyMjIyMjIyMjIyMKIyBCdWlsZGVyIGltYWdlICMKIyMjIyMjIyMjIyMjIyMjIyMKRlJPTSBnb2xhbmc6MS4xMiBhcyBidWlsZGVyCgpFTlYgR08xMTFNT0RVTEU9b24KCiMgSW5zdGFsbCBnaXQgKyBTU0wgY2EgY2VydGlmaWNhdGVzLgojIEdpdCBpcyByZXF1aXJlZCBmb3IgZmV0Y2hpbmcgdGhlIGRlcGVuZGVuY2llcy4KIyBDQS1jZXJ0aWZpY2F0ZXMgaXMgcmVxdWlyZWQgdG8gY2FsbCBIVFRQUyBlbmRwb2ludHMuClJVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgZ2l0IGNhLWNlcnRpZmljYXRlcyAmJiB1cGRhdGUtY2EtY2VydGlmaWNhdGVzCgojIENyZWF0ZSB1c2VyIGZvciB0aGUgcnVudGltZSBpbWFnZQpSVU4gYWRkdXNlciAtLWRpc2FibGVkLXBhc3N3b3JkIC0tZ2Vjb3MgJycgc2VydmljZXVzZXIKCiMgYnVpbGQgYmluYXJ5CldPUktESVIgL2J1aWxkCkNPUFkgLiAuClJVTiBDR09fRU5BQkxFRD0wIEdPT1M9bGludXggR09BUkNIPWFtZDY0IEdPRkxBR1M9LW1vZD12ZW5kb3IgZ28gYnVpbGQgIC1sZGZsYWdzPSItdyAtcyIgLW8gL2Jpbi97eyAuU2VydmljZS5OYW1lIH19IC4vY21kL3t7IC5TZXJ2aWNlLk5hbWUgfX0vbWFpbi5nbwoKCiMjIyMjIyMjIyMjIyMjIyMjCiMgUnVudGltZSBpbWFnZSAjCiMjIyMjIyMjIyMjIyMjIyMjCkZST00gc2NyYXRjaAoKIyAgc2VydmljZSBiaW5hcnkgYW5kIGFzc2V0cwpDT1BZIC0tZnJvbT1idWlsZGVyIC9iaW4ve3sgLlNlcnZpY2UuTmFtZSB9fSAve3sgLlNlcnZpY2UuTmFtZSB9fQojQ09QWSAuL21pZ3JhdGlvbnMgL21pZ3JhdGlvbnMKCiMgaW1wb3J0IGZyb20gYnVpbGRlcgpDT1BZIC0tZnJvbT1idWlsZGVyIC91c3Ivc2hhcmUvem9uZWluZm8gL3Vzci9zaGFyZS96b25laW5mbwpDT1BZIC0tZnJvbT1idWlsZGVyIC9ldGMvcGFzc3dkIC9ldGMvcGFzc3dkCkNPUFkgLS1mcm9tPWJ1aWxkZXIgL2V0Yy9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCAvZXRjL3NzbC9jZXJ0cy8KCiMgYmV0dGVyIG5vdCBydW4gYXMgcm9vdApVU0VSIHNlcnZpY2V1c2VyCgpFTlRSWVBPSU5UIFsiL3t7IC5TZXJ2aWNlLk5hbWUgfX0iXQoK\"") - packr.PackJSONBytes("./templates", "amqp_encode_decode.tpl", "\"cGFja2FnZSBhbXFwCgppbXBvcnQgKAogICAgImZtdCIKCiAgICAiZ2l0aHViLmNvbS9nby1nb2Rpbi9yYWJiaXRtcSIKCiAgICBwYiAie3sgLlByb3RvYnVmLlBhY2thZ2UgfX0iCikKCnt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlB1Ymxpc2hlcikgMCB9fQp7ey0gcmFuZ2UgLlNlcnZpY2UuUHVibGlzaGVyIH19Cnt7LSB0ZW1wbGF0ZSAiYW1xcF9wdWJsaXNoX2VuY29kZSIgLiAtfX0Ke3stIGVuZCB9fQp7ey0gZW5kIH19Cgp7ey0gaWYgZ3QgKGxlbiAuU2VydmljZS5TdWJzY3JpYmVyKSAwIH19Cnt7LSByYW5nZSAuU2VydmljZS5TdWJzY3JpYmVyIH19Cnt7LSB0ZW1wbGF0ZSAiYW1xcF9zdWJzY3JpYmVfZGVjb2RlIiAuIC19fQp7ey0gZW5kIH19Cnt7LSBlbmQgfX0KCg==\"") + packr.PackJSONBytes("./templates", "amqp_encode_decode.tpl", "\"cGFja2FnZSBhbXFwCgppbXBvcnQgKAogICAgImZtdCIKCiAgICAiZ2l0aHViLmNvbS9nby1nb2Rpbi9yYWJiaXRtcSIKCiAgICBwYiAie3sgLlByb3RvYnVmLlBhY2thZ2UgfX0iCiAgICB7ey0gaWYgZ3QgKGxlbiAuU2VydmljZS5TdWJzY3JpYmVyKSAwIH19CiAgICAiZ2l0aHViLmNvbS9nb2xhbmcvcHJvdG9idWYvcHJvdG8iCiAgICB7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQogICAge3sgdW50aXRsZSAuSGFuZGxlciB9fVByb3RvICJ7eyAuUHJvdG9idWYuSW1wb3J0IH19IgogICAge3stIGVuZCB9fQogICAge3stIGVuZCB9fQopCgp7ey0gaWYgZ3QgKGxlbiAuU2VydmljZS5QdWJsaXNoZXIpIDAgfX0Ke3stIHJhbmdlIC5TZXJ2aWNlLlB1Ymxpc2hlciB9fQp7ey0gdGVtcGxhdGUgImFtcXBfcHVibGlzaF9lbmNvZGUiIC4gLX19Cnt7LSBlbmQgfX0Ke3stIGVuZCB9fQoKe3stIGlmIGd0IChsZW4gLlNlcnZpY2UuU3Vic2NyaWJlcikgMCB9fQp7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQp7ey0gdGVtcGxhdGUgImFtcXBfc3Vic2NyaWJlX2RlY29kZSIgLiAtfX0Ke3stIGVuZCB9fQp7ey0gZW5kIH19Cgo=\"") packr.PackJSONBytes("./templates", "amqp_publisher_init.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4ge3sgLkdvZGluLlZlcnNpb24gfX07IERPIE5PVCBFRElULgpwYWNrYWdlIGFtcXAKCmltcG9ydCAoCgkiY29udGV4dCIKCSJnaXRodWIuY29tL3BrZy9lcnJvcnMiCgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vbG9nIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vcmFiYml0bXEiCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9ncnBjLW1ldGFkYXRhIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vbG9nIgopCgp0eXBlIFB1Ymxpc2hlclNldCBzdHJ1Y3QgewoJbG9nZ2VyIGxvZy5Mb2dnZXIKICAgIHt7LSByYW5nZSAuU2VydmljZS5QdWJsaXNoZXIgfX0KICAgIHt7IHVudGl0bGUgLk5hbWUgfX0gcmFiYml0bXEuUHVibGlzaGVyCgl7ey0gZW5kIH19Cn0KCi8vIFB1Ymxpc2hlcnMgd2lsbCBpbml0aWFsaXplIGFsbCBBTVFQIHB1Ymxpc2hlcnMuIEVhY2ggcHVibGlzaGVyIHdpbGwgcmVjZWl2ZSBpdCdzIG93biBjaGFubmVsIHRvIHdvcmsgb24KLy8gdG8gcmVkdWNlIFRDUCBwcmVzc3VyZSBpbiB0aW1lcyBvZiBoaWdoIGxvYWQuCmZ1bmMgUHVibGlzaGVycyhjb25uICpyYWJiaXRtcS5SYWJiaXRNUSwgbG9nZ2dlciBsb2cuTG9nZ2VyKSBQdWJsaXNoZXJTZXQgewoJe3stIHJhbmdlIC5TZXJ2aWNlLlB1Ymxpc2hlciB9fQoJe3sgdW50aXRsZSAuTmFtZSB9fUNoYW5uZWwsIF8gOj0gY29ubi5OZXdDaGFubmVsKCkKCXt7LSBlbmQgfX0KCglyZXR1cm4gUHVibGlzaGVyU2V0ewoJCWxvZ2dlcjpsb2dnZ2VyLAoJCXt7LSByYW5nZSAuU2VydmljZS5QdWJsaXNoZXIgfX0KCQl7eyB1bnRpdGxlIC5OYW1lIH19OiByYWJiaXRtcS5OZXdQdWJsaXNoZXIoCgkJCXt7IHVudGl0bGUgLk5hbWUgfX1DaGFubmVsLAoJCQkmcmFiYml0bXEuUHVibGlzaGluZ3sKCQkJCVRvcGljOiAie3sgLlB1Ymxpc2hpbmcuVG9waWMgfX0iLAoJCQkJRXhjaGFuZ2U6ICJ7eyAuUHVibGlzaGluZy5FeGNoYW5nZSB9fSIsCgkJCQlEZWxpdmVyeU1vZGU6IHt7IC5QdWJsaXNoaW5nLkRlbGl2ZXJ5TW9kZSB9fSwKCQkJfSwKCQkpLAoJCXt7LSBlbmQgfX0KCX0KfQoKe3stICRzZXJ2aWNlTmFtZSA6PSB0aXRsZSAuU2VydmljZS5OYW1lIC19fQoKCnt7LSByYW5nZSAuU2VydmljZS5QdWJsaXNoZXIgfX0KZnVuYyAocHViIFB1Ymxpc2hlclNldCkgUHVibGlzaHt7IC5OYW1lIH19KGN0eCBjb250ZXh0LkNvbnRleHQsIGV2ZW50IGludGVyZmFjZXt9KSBlcnJvciB7Cglsb2dnZXIgOj0gcHViLmxvZ2dlci5XaXRoKCJ0b3BpYyIsICJ7eyAuUHVibGlzaGluZy5Ub3BpYyB9fSIsICJleGNoYW5nZSIsICJ7eyAuUHVibGlzaGluZy5FeGNoYW5nZSB9fSIsICJyZXF1ZXN0SWQiLCBncnBjX21ldGFkYXRhLkdldFJlcXVlc3RJRChjdHgpKQoKCWV2dCwgZXJyIDo9IHt7IC5OYW1lIH19RW5jb2RlcihldmVudCkKCWlmIGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGVuY29kZSBldmVudCIsICJldmVudCIsIGV2ZW50KQoJCXJldHVybiBlcnJvcnMuV3JhcChlcnIsICJmYWlsZWQgdG8gZW5jb2RlIGV2ZW50IikKCX0KCglpZiBlcnIgOj0gcHViLnt7IHVudGl0bGUgLk5hbWUgfX0uUHVibGlzaChjdHgsIGV2dCk7IGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIHB1Ymxpc2ggZXZlbnQiLCAiZXJyIiwgZXJyKQoJCXJldHVybiBlcnJvcnMuV3JhcChlcnIsICJmYWlsZWQgdG8gcHVibGlzaCB0byAne3sgLlB1Ymxpc2hpbmcuVG9waWMgfX0nIikKCX0KCglsb2dnZXIuSW5mbygicHVibGlzaGVkICd7eyAuUHVibGlzaGluZy5Ub3BpYyB9fScgZXZlbnQiKQoJcmV0dXJuIG5pbAp9Cnt7LSBlbmQgfX0K\"") - packr.PackJSONBytes("./templates", "amqp_subscriber_handler.tpl", "\"cGFja2FnZSBzdWJzY3JpYmVyCgppbXBvcnQgKAoJImNvbnRleHQiCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9yYWJiaXRtcSIKCWdycGNNZXRhZGF0YSAiZ2l0aHViLmNvbS9nby1nb2Rpbi9ncnBjLW1ldGFkYXRhIgoJImdpdGh1Yi5jb20vcGtnL2Vycm9ycyIKCgkie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UiCiAgICB7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQogICAge3sgdW50aXRsZSAuSGFuZGxlciB9fVByb3RvICJ7eyAuUHJvdG9idWYuSW1wb3J0IH19IgogICAge3stIGVuZCB9fQopCgp7ey0gJHNlcnZpY2VOYW1lIDo9IHRpdGxlIC5TZXJ2aWNlLk5hbWUgLX19Cgp7ey8qCkxvb3Agb3ZlciBhbGwgc3Vic2NyaWJlcnMuIFRoZSBzbGljZSBpcyBmYWtlZCwgdGhvLiBUaGUgZ2VuZXJhdG9yIHdpbGwgcmVwbGFjZSB0aGUgc2xpY2Ugd2l0aCB0aGUgY3VycmVudApzdWJzY3JpYmVyIG9ubHksIHNvIHdlIGNhbiBzYWZlbHkgYXNzdW1lIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgZWxlbWVudCBpbiB0aGUgc2xpY2UuCiovfX0Ke3sgcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQovLyB7eyAuSGFuZGxlciB9fSBpcyByZXNwb25zaWJsZSBvZiBoYW5kbGluZyBhbGwgaW5jb21pbmcgQU1RUCBtZXNzYWdlcyB3aXRoIHJvdXRpbmcga2V5ICd7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19JwpmdW5jIHt7IC5IYW5kbGVyIH19U3Vic2NyaWJlcihsb2dnZXIgbG9nLkxvZ2dlciwgdXNlY2FzZSBzZXJ2aWNlLnt7IHRpdGxlICRzZXJ2aWNlTmFtZSB9fSwgZGVjb2RlciByYWJiaXRtcS5TdWJzY3JpYmVyRGVjb2RlcikgcmFiYml0bXEuU3Vic2NyaXB0aW9uSGFuZGxlciB7CglyZXR1cm4gZnVuYyhjdHggY29udGV4dC5Db250ZXh0LCBkZWxpdmVyeSAqcmFiYml0bXEuRGVsaXZlcnkpIHsKCQlsb2dnZXIgPSBsb2dnZXIuV2l0aChzdHJpbmcoZ3JwY01ldGFkYXRhLlJlcXVlc3RJRCksIGN0eC5WYWx1ZShzdHJpbmcoZ3JwY01ldGFkYXRhLlJlcXVlc3RJRCkpKQoKCQlldmVudCwgZXJyIDo9IGRlY29kZXt7IC5IYW5kbGVyIH19KGRlbGl2ZXJ5LCBkZWNvZGVyLCBsb2dnZXIpCgkJaWYgZXJyICE9IG5pbCB7CgkJICAgIHJldHVybgoJCX0KCgkJXyA9IGV2ZW50IC8vIHJlbW92ZSB0aGlzIGxpbmUsIGl0IGp1c3Qga2VlcHMgdGhlIGNvbXBpbGVyIGNhbG0gdW50aWwgeW91IHN0YXJ0IHVzaW5nIHRoZSBldmVudCA6KQoKCQkvLyBUT0RPOiBIYW5kbGUge3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSBzdWJzY3JpcHRpb24gaGVyZQoJCS8qCgkJCUlmIHlvdSB3YW50IHRvIE5BQ0sgdGhlIGRlbGl2ZXJ5LCB1c2UgYGRlbGl2ZXJ5Lk5hY2tEZWxpdmVyeSgpYCBpbnN0ZWFkIG9mIE5hY2soKS4KCQkJVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBwcm9tZXRoZXVzIGFtcXBfbmFja19jb3VudGVyIGlzIGluY3JlYXNlZC4KCQkqLwoKCQlfID0gZGVsaXZlcnkuQWNrKGZhbHNlKQogICAgfQp9CgovLyBkZWNvZGV7eyAuSGFuZGxlciB9fSBjbGVhbnMgdXAgdGhlIGFjdHVhbCBoYW5kbGVyIGJ5IHByb3ZpZGluZyBhIGNsZWFuZXIgaW50ZXJmYWNlIGZvciBkZWNvZGluZyBpbmNvbWluZyB7eyAuUHJvdG9idWYuTWVzc2FnZSB9fSBkZWxpdmVyaWVzLgovLyBJdCB3aWxsIGFsc28gdGFrZSBjYXJlIG9mIGxvZ2dpbmcgZXJyb3JzIGFuZCBoYW5kbGluZyBtZXRyaWNzLgpmdW5jIGRlY29kZXt7IC5IYW5kbGVyIH19KGRlbGl2ZXJ5ICpyYWJiaXRtcS5EZWxpdmVyeSwgZGVjb2RlciByYWJiaXRtcS5TdWJzY3JpYmVyRGVjb2RlciwgbG9nZ2VyIGxvZy5Mb2dnZXIpICgqe3sgdW50aXRsZSAuSGFuZGxlciB9fVByb3RvLnt7IC5Qcm90b2J1Zi5NZXNzYWdlIH19LCBlcnJvcikgewoJZXZlbnQsIGVyciA6PSBkZWNvZGVyKGRlbGl2ZXJ5KQoJaWYgZXJyICE9IG5pbCB7CgkJaWYgZXJyMiA6PSBkZWxpdmVyeS5OYWNrRGVsaXZlcnkoZmFsc2UsIGZhbHNlLCAie3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSIpOyBlcnIyICE9IG5pbCB7CgkJCWVyciA9IGVycm9ycy5XcmFwKGVyciwgZXJyMi5FcnJvcigpKQoJCX0KCQlkZWxpdmVyeS5JbmNyZW1lbnRUcmFuc3BvcnRFcnJvckNvdW50ZXIoInt7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0iKQoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGRlY29kZSB7eyAuUHJvdG9idWYuTWVzc2FnZSB9fSIsICJlcnIiLCBlcnIpCgkJcmV0dXJuIG5pbCwgZXJyCgl9Cglsb2dnZXIuRGVidWcoImRlY29kZWQge3sgLlByb3RvYnVmLk1lc3NhZ2UgfX0iLCAiZXZlbnQiLCBldmVudCkKCglyZXR1cm4gZXZlbnQuKCp7eyB1bnRpdGxlIC5IYW5kbGVyIH19UHJvdG8ue3sgLlByb3RvYnVmLk1lc3NhZ2UgfX0pLCBuaWwKfQp7eyBlbmQgfX0KCg==\"") + packr.PackJSONBytes("./templates", "amqp_subscriber_handler.tpl", "\"cGFja2FnZSBzdWJzY3JpYmVyCgppbXBvcnQgKAoJImNvbnRleHQiCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9yYWJiaXRtcSIKCWdycGNNZXRhZGF0YSAiZ2l0aHViLmNvbS9nby1nb2Rpbi9ncnBjLW1ldGFkYXRhIgoJImdpdGh1Yi5jb20vcGtnL2Vycm9ycyIKCgkie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UiCiAgICB7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQogICAge3sgdW50aXRsZSAuSGFuZGxlciB9fVByb3RvICJ7eyAuUHJvdG9idWYuSW1wb3J0IH19IgogICAge3stIGVuZCB9fQopCgp7ey0gJHNlcnZpY2VOYW1lIDo9IHRpdGxlIC5TZXJ2aWNlLk5hbWUgLX19Cgp7ey8qCkxvb3Agb3ZlciBhbGwgc3Vic2NyaWJlcnMuIFRoZSBzbGljZSBpcyBmYWtlZCwgdGhvLiBUaGUgZ2VuZXJhdG9yIHdpbGwgcmVwbGFjZSB0aGUgc2xpY2Ugd2l0aCB0aGUgY3VycmVudApzdWJzY3JpYmVyIG9ubHksIHNvIHdlIGNhbiBzYWZlbHkgYXNzdW1lIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgZWxlbWVudCBpbiB0aGUgc2xpY2UuCiovfX0Ke3sgcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQovLyB7eyAuSGFuZGxlciB9fSBpcyByZXNwb25zaWJsZSBvZiBoYW5kbGluZyBhbGwgaW5jb21pbmcgQU1RUCBtZXNzYWdlcyB3aXRoIHJvdXRpbmcga2V5ICd7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19JwovLyBJdCBtaWdodCBzZWVtIG92ZXJseSBjb21wbGljYXRlZCBhdCBmaXJzdCwgYnV0IHRoZSBkZXNpZ24gaXMgb24gcHVycG9zZS4gWW91IFdBTlQgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIERlbGl2ZXJ5LAovLyB0aHVzIGl0IHdvdWxkIG5vdCBtYWtlIHNlbnNlIHRvIHVzZSBhIG1pZGRsZXdhcmUgZm9yIERlY29kaW5nIGl0IGludG8gYSBEQU8gb3IgZG9tYWluLWxldmVsIG9iamVjdCBhcyB5b3Ugd291bGQKLy8gbG9vc2UgYWNjZXNzIHRvIHRoZSBEZWxpdmVyeS4KZnVuYyB7eyAuSGFuZGxlciB9fVN1YnNjcmliZXIobG9nZ2VyIGxvZy5Mb2dnZXIsIHVzZWNhc2Ugc2VydmljZS57eyB0aXRsZSAkc2VydmljZU5hbWUgfX0sIGRlY29kZXIgcmFiYml0bXEuU3Vic2NyaWJlckRlY29kZXIpIHJhYmJpdG1xLlN1YnNjcmlwdGlvbkhhbmRsZXIgewoJcmV0dXJuIGZ1bmMoY3R4IGNvbnRleHQuQ29udGV4dCwgZGVsaXZlcnkgKnJhYmJpdG1xLkRlbGl2ZXJ5KSB7CgkJbG9nZ2VyID0gbG9nZ2VyLldpdGgoc3RyaW5nKGdycGNNZXRhZGF0YS5SZXF1ZXN0SUQpLCBjdHguVmFsdWUoc3RyaW5nKGdycGNNZXRhZGF0YS5SZXF1ZXN0SUQpKSkKCgkJZXZlbnQsIGVyciA6PSBkZWNvZGV7eyAuSGFuZGxlciB9fShkZWxpdmVyeSwgZGVjb2RlciwgbG9nZ2VyKQoJCWlmIGVyciAhPSBuaWwgewoJCSAgICByZXR1cm4KCQl9CgoJCV8gPSBldmVudCAvLyByZW1vdmUgdGhpcyBsaW5lLCBpdCBqdXN0IGtlZXBzIHRoZSBjb21waWxlciBjYWxtIHVudGlsIHlvdSBzdGFydCB1c2luZyB0aGUgZXZlbnQgOikKCgkJLy8gVE9ETzogSGFuZGxlIHt7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0gc3Vic2NyaXB0aW9uIGhlcmUKCQkvKgoJCQlJZiB5b3Ugd2FudCB0byBOQUNLIHRoZSBkZWxpdmVyeSwgdXNlIGBkZWxpdmVyeS5OYWNrRGVsaXZlcnkoKWAgaW5zdGVhZCBvZiBOYWNrKCkuCgkJCVRoaXMgd2lsbCBlbnN1cmUgdGhhdCB0aGUgcHJvbWV0aGV1cyBhbXFwX25hY2tfY291bnRlciBpcyBpbmNyZWFzZWQuCgkJKi8KCgkJXyA9IGRlbGl2ZXJ5LkFjayhmYWxzZSkKICAgIH0KfQoKLy8gZGVjb2Rle3sgLkhhbmRsZXIgfX0gY2xlYW5zIHVwIHRoZSBhY3R1YWwgaGFuZGxlciBieSBwcm92aWRpbmcgYSBjbGVhbmVyIGludGVyZmFjZSBmb3IgZGVjb2RpbmcgaW5jb21pbmcge3sgLlByb3RvYnVmLk1lc3NhZ2UgfX0gZGVsaXZlcmllcy4KLy8gSXQgd2lsbCBhbHNvIHRha2UgY2FyZSBvZiBsb2dnaW5nIGVycm9ycyBhbmQgaGFuZGxpbmcgbWV0cmljcy4KZnVuYyBkZWNvZGV7eyAuSGFuZGxlciB9fShkZWxpdmVyeSAqcmFiYml0bXEuRGVsaXZlcnksIGRlY29kZXIgcmFiYml0bXEuU3Vic2NyaWJlckRlY29kZXIsIGxvZ2dlciBsb2cuTG9nZ2VyKSAoKnt7IHVudGl0bGUgLkhhbmRsZXIgfX1Qcm90by57eyAuUHJvdG9idWYuTWVzc2FnZSB9fSwgZXJyb3IpIHsKCWV2ZW50LCBlcnIgOj0gZGVjb2RlcihkZWxpdmVyeSkKCWlmIGVyciAhPSBuaWwgewoJCWlmIGVycjIgOj0gZGVsaXZlcnkuTmFja0RlbGl2ZXJ5KGZhbHNlLCBmYWxzZSwgInt7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0iKTsgZXJyMiAhPSBuaWwgewoJCQllcnIgPSBlcnJvcnMuV3JhcChlcnIsIGVycjIuRXJyb3IoKSkKCQl9CgkJZGVsaXZlcnkuSW5jcmVtZW50VHJhbnNwb3J0RXJyb3JDb3VudGVyKCJ7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IikKCQlsb2dnZXIuRXJyb3IoImZhaWxlZCB0byBkZWNvZGUge3sgLlByb3RvYnVmLk1lc3NhZ2UgfX0iLCAiZXJyIiwgZXJyKQoJCXJldHVybiBuaWwsIGVycgoJfQoJbG9nZ2VyLkRlYnVnKCJkZWNvZGVkIHt7IC5Qcm90b2J1Zi5NZXNzYWdlIH19IiwgImV2ZW50IiwgZXZlbnQpCgoJcmV0dXJuIGV2ZW50LCBuaWwKfQp7eyBlbmQgfX0KCg==\"") packr.PackJSONBytes("./templates", "amqp_subscriber_init.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4ge3sgLkdvZGluLlZlcnNpb24gfX07IERPIE5PVCBFRElULgpwYWNrYWdlIGFtcXAKCmltcG9ydCAoCgkiZ2l0aHViLmNvbS9wa2cvZXJyb3JzIgoKCSJnaXRodWIuY29tL2dvLWdvZGluL2xvZyIKCW1pZGRsZXdhcmUgImdpdGh1Yi5jb20vZ28tZ29kaW4vbWlkZGxld2FyZS9hbXFwIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vcmFiYml0bXEiCgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL3N1YnNjcmliZXIiCikKCnR5cGUgU3Vic2NyaWJlclNldCBzdHJ1Y3QgewogICAge3stIHJhbmdlIC5TZXJ2aWNlLlN1YnNjcmliZXIgfX0KICAgIHt7IHVudGl0bGUgLkhhbmRsZXIgfX0gcmFiYml0bXEuU3Vic2NyaWJlcgoJe3stIGVuZCB9fQp9CgovLyBTdWJzY3JpcHRpb25zIHdpbGwgaW5pdGlhbGl6ZSBhbGwgQU1RUCBzdWJzY3JpcHRpb25zLiBGb3IgZWFjaCBzdWJzY3JpcHRpb24sIGEgbmV3IEFNUVAgY2hhbm5lbCBpcyBjcmVhdGVkIG9uIHdoaWNoCi8vIHRoZSBDb25zdW1lKCkgZ29yb3V0aW5lIHdpbGwgcnVuIChvbmUgY2hhbm5lbCBwZXIgdGhyZWFkIHBvbGljeSkuCmZ1bmMgU3Vic2NyaXB0aW9ucyhjb25uICpyYWJiaXRtcS5SYWJiaXRNUSkgU3Vic2NyaWJlclNldCB7Cgl7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQoJe3sgdW50aXRsZSAuSGFuZGxlciB9fUNoYW5uZWwsIF8gOj0gY29ubi5OZXdDaGFubmVsKCkKCXt7LSBlbmQgfX0KCglyZXR1cm4gU3Vic2NyaWJlclNldHsKICAgIHt7LSByYW5nZSAuU2VydmljZS5TdWJzY3JpYmVyIH19CiAgICAgICAge3sgdW50aXRsZSAuSGFuZGxlciB9fTogcmFiYml0bXEuTmV3U3Vic2NyaWJlcih7eyB1bnRpdGxlIC5IYW5kbGVyIH19Q2hhbm5lbCwgJnJhYmJpdG1xLlN1YnNjcmlwdGlvbnsKICAgICAgICAgICAgRXhjaGFuZ2U6ICJ7eyAuU3Vic2NyaXB0aW9uLkV4Y2hhbmdlIH19IiwKCQkgICAgVG9waWM6ICJ7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IiwKICAgICAgICAgICAgQXV0b0FjazogIHt7IC5TdWJzY3JpcHRpb24uQXV0b0FjayB9fSwKICAgICAgICAgICAgUXVldWU6IHJhYmJpdG1xLlN1YnNjcmlwdGlvblF1ZXVlewogICAgICAgICAgICAgICAgQXV0b0RlbGV0ZToge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5BdXRvRGVsZXRlIH19LAogICAgICAgICAgICAgICAgRHVyYWJsZTogICAge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5EdXJhYmxlIH19LAogICAgICAgICAgICAgICAgRXhjbHVzaXZlOiAge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5FeGNsdXNpdmUgfX0sCiAgICAgICAgICAgICAgICBOYW1lOiAgICAgICAie3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5OYW1lIH19IiwKICAgICAgICAgICAgICAgIE5vV2FpdDogICAgIHt7IC5TdWJzY3JpcHRpb24uUXVldWUuTm9XYWl0IH19LAogICAgICAgICAgICB9LAoJCX0pLAoJe3sgZW5kIH19Cgl9Cn0KCnt7LSAkc2VydmljZU5hbWUgOj0gdGl0bGUgLlNlcnZpY2UuTmFtZSAtfX0KCnt7LSByYW5nZSAuU2VydmljZS5TdWJzY3JpYmVyIH19Ci8vIHt7IC5IYW5kbGVyIH19IHNldHMgdXAgdGhlIHN1YnNjcmlwdGlvbiB0byB0aGUgJ3t7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0nIHRvcGljLiBBbGwgbWlkZGxld2FyZSBpcyBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyZWQKLy8gYW5kIGNhbGxlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOiBSZXF1ZXN0SUQgPT4gUHJvbWV0aGV1c0luc3RydW1lbnRhdGlvbiA9PiBMb2dnaW5nID0+IHN1YnNjcmliZXIue3sgLkhhbmRsZXIgfX0KLy8gVGhlIFJlcXVlc3RJRCBtaWRkbHdhcmUgd2lsbCBleHRyYWN0IHRoZSByZXF1ZXN0SWQgZnJvbSB0aGUgZGVsaXZlcnkgaGVhZGVyIG9yIGdlbmVyYXRlIGEgbmV3IG9uZS4gVGhlIHJlcXVlc3RJZCBpcwovLyB0aGVuIG1hZCBhdmFpbGFibGUgdGhyb3VnaCB0aGUgY29udGV4dC4KZnVuYyAoc3MgU3Vic2NyaWJlclNldCkge3sgLkhhbmRsZXIgfX0obG9nZ2VyIGxvZy5Mb2dnZXIsIHVzZWNhc2Ugc2VydmljZS57eyAkc2VydmljZU5hbWUgfX0pIGVycm9yIHsKCWhhbmRsZXIgOj0gc3Vic2NyaWJlci57eyAuSGFuZGxlciB9fVN1YnNjcmliZXIobG9nZ2VyLCB1c2VjYXNlLCB7eyAuSGFuZGxlciB9fURlY29kZXIpCgloYW5kbGVyID0gbWlkZGxld2FyZS5Mb2dnaW5nKGxvZ2dlciwgInt7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0iLCBoYW5kbGVyKQoJaGFuZGxlciA9IG1pZGRsZXdhcmUuUHJvbWV0aGV1c0luc3RydW1lbnRhdGlvbigie3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSIsIGhhbmRsZXIpCgloYW5kbGVyID0gbWlkZGxld2FyZS5SZXF1ZXN0SUQoaGFuZGxlcikKCglpZiBlcnIgOj0gc3Mue3sgdW50aXRsZSAuSGFuZGxlciB9fS5TdWJzY3JpYmUoaGFuZGxlcik7IGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIHN1YnNjcmliZSB0byB7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IiwgImVyciIsIGVyciwgInRyYW5zcG9ydCIsICJBTVFQIikKCQlyZXR1cm4gZXJyb3JzLldyYXAoZXJyLCAiZmFpbGVkIHRvIHN1YnNjcmliZSB0byB7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IikKCX0KCWxvZ2dlci5JbmZvKAoJCSJzdWJzY3JpYmVkIHRvIHRvcGljICd7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19JyIsCgkJInRvcGljIiwgc3Mue3sgdW50aXRsZSAuSGFuZGxlciB9fS5TdWJzY3JpcHRpb24uVG9waWMsCgkJInF1ZXVlIiwgc3Mue3sgdW50aXRsZSAuSGFuZGxlciB9fS5TdWJzY3JpcHRpb24uUXVldWUuTmFtZSwKCQkiZXhjaGFuZ2UiLCBzcy57eyB1bnRpdGxlIC5IYW5kbGVyIH19LlN1YnNjcmlwdGlvbi5FeGNoYW5nZSwKCQkidHJhbnNwb3J0IiwgIkFNUVAiLAoJKQoKCXJldHVybiBuaWwKfQp7eyBlbmQgfX0KCi8vIFNodXRkb3duIHdpbGwgY2FsbCBTaHV0ZG93bigpIG9uIGFsbCByZWdpc3RlcmVkIHN1YnNjcmlwdGlvbnMKZnVuYyAoc3MgU3Vic2NyaWJlclNldCkgU2h1dGRvd24oKSAoZXJyIGVycm9yKSB7Cgl7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQoJZXJyID0gc3Mue3sgdW50aXRsZSAuSGFuZGxlciB9fS5TaHV0ZG93bigpCgl7ey0gZW5kIH19CgoJcmV0dXJuIGVycgp9Cg==\"") packr.PackJSONBytes("./templates", "cmd_main.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KcGFja2FnZSBtYWluCgppbXBvcnQgKAogICAgImZtdCIKICAgICJuZXQiCiAgICAibmV0L2h0dHAiCiAgICAib3MiCiAgICAib3Mvc2lnbmFsIgogICAgInN5c2NhbGwiCgoJImdpdGh1Yi5jb20vb2tsb2cvb2tsb2cvcGtnL2dyb3VwIgoJImdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfZ29sYW5nL3Byb21ldGhldXMvcHJvbWh0dHAiCglnb29nbGVHcnBjICJnb29nbGUuZ29sYW5nLm9yZy9ncnBjIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vZ3JwYy1pbnRlcmNlcHRvciIKCSJnaXRodWIuY29tL2dvLWdvZGluL3JhYmJpdG1xIgoKICAgIHBiICJ7eyAuUHJvdG9idWYuUGFja2FnZSB9fSIKCSJ7eyAuU2VydmljZS5Nb2R1bGUgfX0vaW50ZXJuYWwvYW1xcCIKICAgIHN2Y0dycGMgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9ncnBjIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL3VzZWNhc2UiCiAgICAie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UvbWlkZGxld2FyZSIKICAgICJ7eyAuU2VydmljZS5Nb2R1bGUgfX0vaW50ZXJuYWwvc2VydmljZS9lbmRwb2ludCIKCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCikKCnZhciBEZWJ1Z0FkZHIgPSBnZXRFbnYoIkRFQlVHX0FERFJFU1MiLCAiMC4wLjAuMDozMDAwIikKdmFyIEdycGNBZGRyID0gZ2V0RW52KCJHUlBDX0FERFJFU1MiLCAiMC4wLjAuMDo1MDA1MSIpCgovLyBncm91cCB0byBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBmb3IgZ29yb3V0aW5lcwp2YXIgZyBncm91cC5Hcm91cAoKZnVuYyBtYWluKCkgewogICAgbG9nZ2VyIDo9IGxvZy5OZXdMb2dnZXJGcm9tRW52KCkKCXt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlN1YnNjcmliZXIpIDAgfX0KCXJhYmJpdG1xU3ViQ29ubiA6PSBpbml0UmFiYml0TVEobG9nZ2VyKQoJZGVmZXIgcmFiYml0bXFTdWJDb25uLkNsb3NlKCkKCXt7LSBlbmQgfX0KCXt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlB1Ymxpc2hlcikgMCB9fQoJcmFiYml0bXFQdWJDb25uIDo9IGluaXRSYWJiaXRNUShsb2dnZXIpCglkZWZlciByYWJiaXRtcVB1YkNvbm4uQ2xvc2UoKQoJe3stIGVuZCB9fQoKCXt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlB1Ymxpc2hlcikgMCB9fQoJLy8gaW5pdCBwdWJsaXNoZXJzCglwdWJsaXNoZXJzIDo9IGFtcXAuUHVibGlzaGVycyhyYWJiaXRtcVB1YkNvbm4sIGxvZ2dlcikKCXt7LSBlbmQgfX0KCgkvLyBpbml0aWFsaXplIHNlcnZpY2UgaW5jbHVkaW5nIG1pZGRsZXdhcmUKCXZhciBzdmMgc2VydmljZS57eyB0aXRsZSAuU2VydmljZS5OYW1lIH19Cgl7ey8qCgkJRGVwZW5kaW5nIG9uIHdoaWNoIGJ1bmRsZXMgYXJlIGFjdGl2YXRlZCwgdGhlIHBhcmFtZXRlciBsaXN0IG9mIHRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGlzIGdvaW5nIHRvIGNoYW5nZS4KCQlUaGlzIGlzIGEgdHJpY2t5IGJpdCBhcyBhbGwgY29tYmluYXRpb25zIG5lZWQgdG8gYmUgdGFrZW4gY2FyZSBvZi4KCSovfX0KCXt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlB1Ymxpc2hlcikgMCB9fQoJc3ZjID0gdXNlY2FzZS5OZXdTZXJ2aWNlSW1wbGVtZW50YXRpb24obG9nZ2VyLCBwdWJsaXNoZXJzKQoJe3stIGVsc2UgfX0KCXN2YyA9IHVzZWNhc2UuTmV3U2VydmljZUltcGxlbWVudGF0aW9uKGxvZ2dlcikKCXt7LSBlbmQgfX0KCgl7ey0gaWYgLlNlcnZpY2UuTG9nZ2luZ01pZGRsZXdhcmUgfX0KCXN2YyA9IG1pZGRsZXdhcmUuTG9nZ2luZ01pZGRsZXdhcmUobG9nZ2VyKShzdmMpCgl7ey0gZW5kIH19CgoJLy8gaW5pdGlhbGl6ZSBlbmRwb2ludCBhbmQgdHJhbnNwb3J0IGxheWVycwoJdmFyICgKCQllbmRwb2ludHMgICA9IGVuZHBvaW50LkVuZHBvaW50cyhzdmMsIGxvZ2dlcikKCQlncnBjSGFuZGxlciA9IHN2Y0dycGMuTmV3U2VydmVyKGVuZHBvaW50cywgbG9nZ2VyKQoJKQoKCXt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlN1YnNjcmliZXIpIDAgfX0KCS8vIHNldHVwIEFNUVAgc3Vic2NyaXB0aW9ucwoJc3Vic2NyaXB0aW9ucyA6PSBhbXFwLlN1YnNjcmlwdGlvbnMocmFiYml0bXFTdWJDb25uKQoJe3stIHJhbmdlIC5TZXJ2aWNlLlN1YnNjcmliZXIgfX0KCWlmIGVyciA6PSBzdWJzY3JpcHRpb25zLnt7IC5IYW5kbGVyIH19KGxvZ2dlciwgc3ZjKTsgZXJyICE9IG5pbCB7CgkJbG9nZ2VyLkVycm9yKCJmYWlsZWQgdG8gY3JlYXRlIHN1YnNjcmlwdGlvbiIsICJlcnIiLCBlcnIpCgkJb3MuRXhpdCgtMSkKCX0KCXt7LSBlbmQgfX0KCXt7LSBlbmQgfX0KCgkvLyBzZXJ2ZSBnUlBDIHNlcnZlcgoJZ3JwY1NlcnZlciA6PSBnb29nbGVHcnBjLk5ld1NlcnZlcigKCSAgICBnb29nbGVHcnBjLlVuYXJ5SW50ZXJjZXB0b3IoZ3JwY19pbnRlcmNlcHRvci5VbmFyeUludGVyY2VwdG9yKSwKCSkKCWcuQWRkKGluaXRHcnBjKGdycGNTZXJ2ZXIsIGdycGNIYW5kbGVyLCBsb2dnZXIpLCBmdW5jKGVycm9yKSB7CgkJZ3JwY1NlcnZlci5HcmFjZWZ1bFN0b3AoKQoJfSkKCgkvLyBzZXJ2ZSBkZWJ1ZyBodHRwIHNlcnZlciAocHJvbWV0aGV1cykKCWh0dHAuRGVmYXVsdFNlcnZlTXV4LkhhbmRsZSgiL21ldHJpY3MiLCBwcm9taHR0cC5IYW5kbGVyKCkpCglkZWJ1Z0xpc3RlbmVyIDo9IGluaXREZWJ1Z0h0dHAobG9nZ2VyKQoJZy5BZGQoZnVuYygpIGVycm9yIHsKCQlsb2dnZXIuTG9nKCJ0cmFuc3BvcnQiLCAiZGVidWcvSFRUUCIsICJhZGRyIiwgRGVidWdBZGRyKQoJCXJldHVybiBodHRwLlNlcnZlKGRlYnVnTGlzdGVuZXIsIGh0dHAuRGVmYXVsdFNlcnZlTXV4KQoJfSwgZnVuYyhlcnJvcikgewoJCWRlYnVnTGlzdGVuZXIuQ2xvc2UoKQoJfSkKCgkvLyBXYWl0IGZvciBTSUdJTlQgb3IgU0lHVEVSTSBhbmQgc3RvcCBncmFjZWZ1bGx5CgljYW5jZWxJbnRlcnJ1cHQgOj0gbWFrZShjaGFuIHN0cnVjdHt9KQoJZy5BZGQoc2h1dGRvd25IYW5kbGVyKGNhbmNlbEludGVycnVwdCksIGZ1bmMoZSBlcnJvcikgewoJCWNsb3NlKGNhbmNlbEludGVycnVwdCkKCX0pCgoJLy8gcnVuCglpZiBlcnIgOj0gZy5SdW4oKTsgZXJyICE9IG5pbCB7CgkJbG9nZ2VyLkxvZygiZmF0YWwiLCBlcnIpCgkJb3MuRXhpdCgxKQoJfQp9CgovLyBnZXRFbnYgZ2V0IGtleSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBleGlzdCBvdGhlcndpc2UgcmV0dXJuIGRlZmFsdXRWYWx1ZQpmdW5jIGdldEVudihrZXksIGRlZmF1bHRWYWx1ZSBzdHJpbmcpIHN0cmluZyB7Cgl2YWx1ZSA6PSBvcy5HZXRlbnYoa2V5KQoJaWYgbGVuKHZhbHVlKSA9PSAwIHsKCQlyZXR1cm4gZGVmYXVsdFZhbHVlCgl9CglyZXR1cm4gdmFsdWUKfQoKLy8gc2h1dGRvd25IYW5kbGVyIHRvIGhhbmRsZSBncmFjZWZ1bCBzaHV0ZG93bnMKZnVuYyBzaHV0ZG93bkhhbmRsZXIoaW50ZXJydXB0Q2hhbm5lbCBjaGFuIHN0cnVjdHt9KSBmdW5jKCkgZXJyb3IgewoJcmV0dXJuIGZ1bmMoKSBlcnJvciB7CgkJYyA6PSBtYWtlKGNoYW4gb3MuU2lnbmFsLCAxKQoJCXNpZ25hbC5Ob3RpZnkoYywgc3lzY2FsbC5TSUdJTlQsIHN5c2NhbGwuU0lHVEVSTSkKCQlzZWxlY3QgewoJCWNhc2Ugc2lnIDo9IDwtYzoKCQkJcmV0dXJuIGZtdC5FcnJvcmYoInJlY2VpdmVkIHNpZ25hbCAlcyIsIHNpZykKCQljYXNlIDwtaW50ZXJydXB0Q2hhbm5lbDoKCQkJcmV0dXJuIG5pbAoJCX0KCX0KfQoKLy8gaW5pdEdycGMgc2VydmUgdXAgR1JQQwpmdW5jIGluaXRHcnBjKGdycGNTZXJ2ZXIgKmdvb2dsZUdycGMuU2VydmVyLCBoYW5kbGVyIHBiLnt7IC5Qcm90b2J1Zi5TZXJ2aWNlIH19U2VydmVyLCBsb2dnZXIgbG9nLkxvZ2dlcikgZnVuYygpIGVycm9yIHsKCWdycGNMaXN0ZW5lciwgZXJyIDo9IG5ldC5MaXN0ZW4oInRjcCIsIEdycGNBZGRyKQoJaWYgZXJyICE9IG5pbCB7CgkJbG9nZ2VyLkxvZygidHJhbnNwb3J0IiwgImdSUEMiLCAiZHVyaW5nIiwgIkxpc3RlbiIsICJlcnIiLCBlcnIpCgkJb3MuRXhpdCgxKQoJfQoKCXJldHVybiBmdW5jKCkgZXJyb3IgewoJCWxvZ2dlci5Mb2coInRyYW5zcG9ydCIsICJnUlBDIiwgImFkZHIiLCBHcnBjQWRkcikKCQlwYi5SZWdpc3Rlcnt7IC5Qcm90b2J1Zi5TZXJ2aWNlIH19U2VydmVyKGdycGNTZXJ2ZXIsIGhhbmRsZXIpCgkJcmV0dXJuIGdycGNTZXJ2ZXIuU2VydmUoZ3JwY0xpc3RlbmVyKQoJfQp9Cgp7eyBpZiAuU2VydmljZS5UcmFuc3BvcnQuQU1RUCB9fQovLyBpbml0UmFiYml0TVEgd2lsbCBpbml0aWFsaXplIHRoZSBhbXFwIGNvbm5lY3Rpb24gYW5kIGNyZWF0ZSBhIG5ldyBjaGFubmVsCmZ1bmMgaW5pdFJhYmJpdE1RKGxvZ2dlciBsb2cuTG9nZ2VyKSAqcmFiYml0bXEuUmFiYml0TVEgewoJcmFiYml0bXFDb25uLCBlcnIgOj0gcmFiYml0bXEuTmV3UmFiYml0TVFGcm9tRW52KCkKCWlmIGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGluaXRpYWxpemUgUmFiYml0TVEgY29ubmVjdGlvbiIsICJlcnIiLCBlcnIpCgkJb3MuRXhpdCgtMSkKCX0KCWlmIGVyciA6PSByYWJiaXRtcUNvbm4uQ29ubmVjdCgpOyBlcnIgIT0gbmlsIHsKCQlsb2dnZXIuRXJyb3IoImZhaWxlZCB0byBjb25uZWN0IHRvIFJhYmJpdE1RIiwgImVyciIsIGVycikKCQlvcy5FeGl0KC0xKQoJfQoJaWYgcmFiYml0bXFDb25uLkNoYW5uZWwsIGVyciA9IHJhYmJpdG1xQ29ubi5OZXdDaGFubmVsKCk7IGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGNyZWF0ZSBBTVFQIGNoYW5uZWwiLCAiZXJyIiwgZXJyKQoJCW9zLkV4aXQoLTEpCgl9CgoJcmV0dXJuIHJhYmJpdG1xQ29ubgp9Cnt7IGVuZCB9fQoKZnVuYyBpbml0RGVidWdIdHRwKGxvZ2dlciBsb2cuTG9nZ2VyKSBuZXQuTGlzdGVuZXIgewoJZGVidWdMaXN0ZW5lciwgZXJyIDo9IG5ldC5MaXN0ZW4oInRjcCIsIERlYnVnQWRkcikKCWlmIGVyciAhPSBuaWwgewoJCWxvZ2dlci5Mb2coInRyYW5zcG9ydCIsICJkZWJ1Zy9IVFRQIiwgImR1cmluZyIsICJMaXN0ZW4iLCAiZXJyIiwgZXJyKQoJCW9zLkV4aXQoMSkKCX0KCXJldHVybiBkZWJ1Z0xpc3RlbmVyCn0KCg==\"") packr.PackJSONBytes("./templates", "domain_errors.tpl", "\"cGFja2FnZSBkb21haW4KCmltcG9ydCAiZXJyb3JzIgoKLy8gRG9tYWluIGVycm9ycwovLyBUaGVzZSBjYW4gdGhlbiBiZSByZW1hcHBlZCB0byB0cmFuc3BvcnQtc3BlY2lmaWMgZXJyb3JzIGluIHRoZSB0cmFuc3BvcnQgbGF5ZXIgKGdSUEMsIEhUVFAsIEFNUVAgLi4uKQp2YXIgKAogICAgRXJyTm90SW1wbGVtZW50ZWQgPSBlcnJvcnMuTmV3KCJlbmRwb2ludCBub3QgaW1wbGVtZW50ZWQiKQopCg==\"") @@ -27,7 +27,7 @@ func init() { packr.PackJSONBytes("./templates", "middleware.tpl", "\"cGFja2FnZSBtaWRkbGV3YXJlCgppbXBvcnQgKAogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgopCgp0eXBlIE1pZGRsZXdhcmUgZnVuYyhzZXJ2aWNlIHNlcnZpY2Uue3sgdGl0bGUgLlNlcnZpY2UuTmFtZSB9fSkgc2VydmljZS57eyB0aXRsZSAuU2VydmljZS5OYW1lIH19Cg==\"") packr.PackJSONBytes("./templates", "middleware_logging.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KCnBhY2thZ2UgbWlkZGxld2FyZQoKaW1wb3J0ICgKICAgICJjb250ZXh0IgogICAgInRpbWUiCgogICAgImdpdGh1Yi5jb20vZ28ta2l0L2tpdC9sb2ciCglncnBjX21ldGFkYXRhICJnaXRodWIuY29tL2dvLWdvZGluL2dycGMtbWV0YWRhdGEiCgogICAgc2VydmljZSAie3sgLlNlcnZpY2UuSW1wb3J0UGF0aCB9fSIKKQoKdHlwZSBsb2dnaW5nTWlkZGxld2FyZSBzdHJ1Y3QgewogICAgbG9nZ2VyIGxvZy5Mb2dnZXIKICAgIG5leHQgc2VydmljZS57eyAuU2VydmljZS5OYW1lIH19Cn0KCmZ1bmMgTmV3TG9nZ2luZ01pZGRsZXdhcmUobG9nZ2VyIGxvZy5Mb2dnZXIpIE1pZGRsZXdhcmUgewogICAgcmV0dXJuIGZ1bmMobmV4dCBzZXJ2aWNlLnt7IC5TZXJ2aWNlLk5hbWUgfX0pIHNlcnZpY2Uue3sgLlNlcnZpY2UuTmFtZSB9fSB7CiAgICAgICAgcmV0dXJuICZsb2dnaW5nTWlkZGxld2FyZXtsb2dnZXIsIG5leHR9CiAgICB9Cn0KCnt7IHJhbmdlIC5TZXJ2aWNlLk1ldGhvZHMgfX0KZnVuYyAobCBsb2dnaW5nTWlkZGxld2FyZSkge3sgLk5hbWUgfX0oe3sgLlBhcmFtTGlzdCB9fSkgKHt7IC5SZXR1cm5MaXN0IH19KSB7Cn0Ke3stIGVuZCB9fQ==\"") packr.PackJSONBytes("./templates", "partials/amqp/encode_decode/publish_encode.tpl", "\"e3stIGRlZmluZSAiYW1xcF9wdWJsaXNoX2VuY29kZSIgfX0KLy8ge3sgLk5hbWUgfX1FbmNvZGVyIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBwdWJsaXNoaW5nIGFuIGV2ZW50IHRvICd7eyAuUHVibGlzaGluZy5Ub3BpYyB9fScgYW5kIGVuY29kZXMKLy8gdGhlIERBTyB0byBwcm90b2J1Zi4KZnVuYyB7eyAuTmFtZSB9fUVuY29kZXIoZXZlbnQgaW50ZXJmYWNle30pICgqcGIue3sgLlB1Ymxpc2hpbmcuUHJvdG9idWZNZXNzYWdlIH19LCBlcnJvcikgewp2YXIgZW5jb2RlZCBwYi57eyAuUHVibGlzaGluZy5Qcm90b2J1Zk1lc3NhZ2UgfX0KCi8vIFRPRE86IG1hcCB0byBwcm90b2J1ZgoKcmV0dXJuICZlbmNvZGVkLCBuaWwKfQp7ey0gZW5kIH19Cg==\"") - packr.PackJSONBytes("./templates", "partials/amqp/encode_decode/subscribe_decode.tpl", "\"e3stIGRlZmluZSAiYW1xcF9zdWJzY3JpYmVfZGVjb2RlIiB9fQovLyB7eyAuSGFuZGxlciB9fURlY29kZXIKZnVuYyB7eyAuSGFuZGxlciB9fURlY29kZXIoZGVsaXZlcnkgKnJhYmJpdG1xLkRlbGl2ZXJ5KSAoZGVjb2RlZCBpbnRlcmZhY2V7fSwgZXJyIGVycm9yKSB7CglyZXR1cm4gbmlsLCBmbXQuRXJyb3JmKCJ7eyAuSGFuZGxlciB9fURlY29kZXIgaXMgbm90IGltcGxlbWVudGVkIikKfQp7ey0gZW5kIH19Cg==\"") + packr.PackJSONBytes("./templates", "partials/amqp/encode_decode/subscribe_decode.tpl", "\"e3stIGRlZmluZSAiYW1xcF9zdWJzY3JpYmVfZGVjb2RlIiB9fQovLyB7eyAuSGFuZGxlciB9fURlY29kZXIgd2lsbCB1bm1hcnNoYWwgdGhlIEJvZHkgb2YgdGhlIGluY29taW5nIERlbGl2ZXJ5IGludG8gYSBwcm90b2J1ZiBtZXNzYWdlLgovLwovLyBOb3RlOiBHb2RpbiB3aWxsIG5vdCByZWdlbmVyYXRlIHRoaXMgZmlsZSwgb25seSBhcHBlbmQgbmV3IGZ1bmN0aW9ucy4gU28gaWYgdGhpcyBmaWxlIHdhcyBhbHJlYWR5IHByZXNlbnQgd2hlbgovLyB5b3UgYWRkZWQgdGhlIHN1YnNjcmliZXIsIHlvdSBuZWVkIHRvIGZpeCB0aGUgaW1wb3J0cyBieSBhZGRpbmc6Ci8vCSB7eyB1bnRpdGxlIC5IYW5kbGVyIH19UHJvdG8gInt7IC5Qcm90b2J1Zi5JbXBvcnQgfX0iCmZ1bmMge3sgLkhhbmRsZXIgfX1EZWNvZGVyKGRlbGl2ZXJ5ICpyYWJiaXRtcS5EZWxpdmVyeSkgKGRlY29kZWQgaW50ZXJmYWNle30sIGVyciBlcnJvcikgewoJdmFyIGV2ZW50ICp7eyB1bnRpdGxlIC5IYW5kbGVyIH19UHJvdG8ue3sgLlByb3RvYnVmLk1lc3NhZ2UgfX0KCglpZiBlcnIgOj0gcHJvdG8uVW5tYXJzaGFsKGRlbGl2ZXJ5LkJvZHksIGV2ZW50KTsgZXJyICE9IG5pbCB7CgkJcmV0dXJuIG5pbCwgZm10LkVycm9yZigiZmFpbGVkIHRvIHVubWFyc2hhbCBEZWxpdmVyeSBpbnRvICp7eyB1bnRpdGxlIC5IYW5kbGVyIH19UHJvdG8ue3sgLlByb3RvYnVmLk1lc3NhZ2UgfX06ICVzIiwgZXJyKQoJfQoKCXJldHVybiBldmVudCwgbmlsCn0Ke3stIGVuZCB9fQo=\"") packr.PackJSONBytes("./templates", "partials/amqp/encode_decode/subscribe_decoder_interfaces.tpl", "\"e3stIGRlZmluZSAiYW1xcF9zdWJzY3JpYmVfZGVjb2Rlcl9pbnRlcmZhY2UiIH19Cnt7LSBlbmQgfX0K\"") packr.PackJSONBytes("./templates", "partials/endpoint.tpl", "\"e3stIGRlZmluZSAiZW5kcG9pbnQiIH19Ci8vIHt7IC5OYW1lIH19RW5kcG9pbnQgcHJvdmlkZXMgc2VydmljZS57eyAuTmFtZSB9fSgpIGFzIGdlbmVyYWwgZW5kcG9pbnQKLy8gd2hpY2ggY2FuIGJlIHVzZWQgd2l0aCBhcmJpdHJhcnkgdHJhbnNwb3J0IGxheWVycy4KZnVuYyB7eyAuTmFtZSB9fUVuZHBvaW50KHNlcnZpY2Ugc2VydmljZS57eyB0aXRsZSAuU2VydmljZU5hbWUgfX0pIGVuZHBvaW50LkVuZHBvaW50IHsKICAgIHJldHVybiBmdW5jIChjdHggY29udGV4dC5Db250ZXh0LCByZXF1ZXN0IGludGVyZmFjZXt9KSAoaW50ZXJmYWNle30sIGVycm9yKSB7CiAgICAgICAgcmVxIDo9IHJlcXVlc3QuKHt7IC5SZXF1ZXN0TmFtZSB9fSkKICAgICAgICBfID0gcmVxIC8vIGJ5cGFzcyAiZGVjbGFyZWQgYW5kIG5vdCB1c2VkIiBjb21waWxlciBlcnJvciBpZiB0aGUgcmVxdWVzdCBpcyBlbXB0eSBhbmQgbm90IHVzZWQKICAgICAgICB7eyAuUmV0dXJuVmFyaWFibGVMaXN0IH19IDo9IHNlcnZpY2Uue3sgLk5hbWUgfX0oCiAgICAgICAgICAgIHt7LSByYW5nZSAuUGFyYW1zIH19CiAgICAgICAgICAgICAgICB7ey0gaWYgZXEgLk5hbWUgImN0eCIgfX0KICAgICAgICAgICAgICAgICAgICB7ey0gLk5hbWUgfX0sCiAgICAgICAgICAgICAgICB7ey0gZWxzZSAtfX0KICAgICAgICAgICAgICAgICAgICByZXEue3sgdGl0bGUgLk5hbWUgfX0sCiAgICAgICAgICAgICAgICB7ey0gZW5kIH19CiAgICAgICAgICAgIHt7LSBlbmQgfX0pCgogICAgICAgIHJldHVybiB7eyAuUmVzcG9uc2VOYW1lIH19ewogICAgICAgICAgICB7ey0gcmFuZ2UgLlJldHVybnMgfX0KICAgICAgICAgICAge3sgdGl0bGUgLk5hbWUgfX06IHt7IC5OYW1lIH19LAogICAgICAgICAgICB7ey0gZW5kIH19CiAgICAgICAgfSwgZXJyCiAgICB9Cn0Ke3stIGVuZCB9fQo=\"") packr.PackJSONBytes("./templates", "partials/grpc/encode_decode/request_decoder.tpl", "\"e3sgZGVmaW5lICJncnBjX3JlcXVlc3RfZGVjb2RlciIgfX0KLy8ge3sgLlJlcXVlc3QgfX1EZWNvZGVyIG1hcHMgdGhlIHByb3RvYnVmIHJlcXVlc3Qgb2YgdGhlIGdSUEMgdHJhbnNwb3J0IGxheWVyIG9udG8gdGhlIGRvbWFpbi1sZXZlbCB7eyAuUmVxdWVzdCB9fQpmdW5jIHt7IC5SZXF1ZXN0IH19RGVjb2RlcihwYlJlcXVlc3QgKnBiLnt7IC5Qcm90b2J1ZlJlcXVlc3QgfX0pIChyZXF1ZXN0IGVuZHBvaW50Lnt7IC5SZXF1ZXN0IH19LCBlcnIgZXJyb3IpIHsKICAgIC8vIFRPRE86IG1hcCAncGJSZXF1ZXN0JyB0byAncmVxdWVzdCcgYW5kIHJldHVybgogICAgcmV0dXJuIHJlcXVlc3QsIGVycgp9Cnt7IGVuZCB9fQo=\"") diff --git a/templates/amqp_encode_decode.tpl b/templates/amqp_encode_decode.tpl index ff04b74..8b600fd 100644 --- a/templates/amqp_encode_decode.tpl +++ b/templates/amqp_encode_decode.tpl @@ -6,6 +6,12 @@ import ( "github.com/go-godin/rabbitmq" pb "{{ .Protobuf.Package }}" + {{- if gt (len .Service.Subscriber) 0 }} + "github.com/golang/protobuf/proto" + {{- range .Service.Subscriber }} + {{ untitle .Handler }}Proto "{{ .Protobuf.Import }}" + {{- end }} + {{- end }} ) {{- if gt (len .Service.Publisher) 0 }} diff --git a/templates/amqp_subscriber_handler.tpl b/templates/amqp_subscriber_handler.tpl index 7576982..4d5b848 100644 --- a/templates/amqp_subscriber_handler.tpl +++ b/templates/amqp_subscriber_handler.tpl @@ -21,6 +21,9 @@ subscriber only, so we can safely assume that there is only one element in the s */}} {{ range .Service.Subscriber }} // {{ .Handler }} is responsible of handling all incoming AMQP messages with routing key '{{ .Subscription.Topic }}' +// It might seem overly complicated at first, but the design is on purpose. You WANT to have access to the Delivery, +// thus it would not make sense to use a middleware for Decoding it into a DAO or domain-level object as you would +// loose access to the Delivery. func {{ .Handler }}Subscriber(logger log.Logger, usecase service.{{ title $serviceName }}, decoder rabbitmq.SubscriberDecoder) rabbitmq.SubscriptionHandler { return func(ctx context.Context, delivery *rabbitmq.Delivery) { logger = logger.With(string(grpcMetadata.RequestID), ctx.Value(string(grpcMetadata.RequestID))) @@ -56,7 +59,7 @@ func decode{{ .Handler }}(delivery *rabbitmq.Delivery, decoder rabbitmq.Subscrib } logger.Debug("decoded {{ .Protobuf.Message }}", "event", event) - return event.(*{{ untitle .Handler }}Proto.{{ .Protobuf.Message }}), nil + return event, nil } {{ end }} diff --git a/templates/partials/amqp/encode_decode/subscribe_decode.tpl b/templates/partials/amqp/encode_decode/subscribe_decode.tpl index 9f3be57..cc40424 100644 --- a/templates/partials/amqp/encode_decode/subscribe_decode.tpl +++ b/templates/partials/amqp/encode_decode/subscribe_decode.tpl @@ -1,6 +1,16 @@ {{- define "amqp_subscribe_decode" }} -// {{ .Handler }}Decoder +// {{ .Handler }}Decoder will unmarshal the Body of the incoming Delivery into a protobuf message. +// +// Note: Godin will not regenerate this file, only append new functions. So if this file was already present when +// you added the subscriber, you need to fix the imports by adding: +// {{ untitle .Handler }}Proto "{{ .Protobuf.Import }}" func {{ .Handler }}Decoder(delivery *rabbitmq.Delivery) (decoded interface{}, err error) { - return nil, fmt.Errorf("{{ .Handler }}Decoder is not implemented") + var event *{{ untitle .Handler }}Proto.{{ .Protobuf.Message }} + + if err := proto.Unmarshal(delivery.Body, event); err != nil { + return nil, fmt.Errorf("failed to unmarshal Delivery into *{{ untitle .Handler }}Proto.{{ .Protobuf.Message }}: %s", err) + } + + return event, nil } {{- end }}