From 6ea030301cfa2392670c1776b62838c01028bf89 Mon Sep 17 00:00:00 2001 From: "Tristan B. Velloza Kildaire" Date: Sun, 26 Mar 2023 12:19:56 +0200 Subject: [PATCH] - Added new logo to `README.md` - Fixed typos in `README.md` - Added new logo (source included) --- README.md | 12 ++++++------ branding/logo_base.xcf | Bin 0 -> 36783 bytes branding/logo_small.png | Bin 0 -> 2550 bytes branding/logo_small.xcf | Bin 0 -> 25911 bytes 4 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 branding/logo_base.xcf create mode 100644 branding/logo_small.png create mode 100644 branding/logo_small.xcf diff --git a/README.md b/README.md index a761138..6aba6d0 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,21 @@ -![](https://code.dlang.org/packages/tristanable/logo?s=5ef1c9f1250f57dd4c37efbf) +![](branding/logo_small.png) tristanable =========== -**Tristanable** is a library for D-based libraries and applications that need a way to receive variable-length messages of different types (via a `Socket`) and place these messages into their own resepctively tagged queues indicated by their _"type"_ or `id`. +**Tristanable** is a library for D-based libraries and applications that need a way to receive variable-length messages of different types (via a `Socket`) and place these messages into their own respectively tagged queues indicated by their _"type"_ or `id`. ## What problems does it solve? ### Human example -Say now you made a request to a server with a tag `1` and expect a reply with that same tag `1`. Now, for a moment, think about what would happen in a tagless system. You would be expecting a reply, say now the weather report for your area, but what if the server has another thread that writes an instant messenger notification to the server's socket before the weather message is sent? Now you will inetrpret those bytes as if they were a weather message. +Say now you made a request to a server with a tag `1` and expect a reply with that same tag `1`. Now, for a moment, think about what would happen in a tagless system. You would be expecting a reply, say now the weather report for your area, but what if the server has another thread that writes an instant messenger notification to the server's socket before the weather message is sent? Now you will interpret those bytes as if they were a weather message. -Tristanable provides a way for you to receive the "IM notification first" but block and dequeue (when it arrives in the queue) for the "weather report". Irresepctoive of wether (no pun intended) the weather report arrives before the "IM notification" or after. +Tristanable provides a way for you to receive the "IM notification first" but block and dequeue (when it arrives in the queue) for the "weather report". Irrespective of wether (no pun intended) the weather report arrives before the "IM notification" or after. ### Code example -If we wanted to implement the following we would do the following. One note is that instead of waiting on messages of a specific _"type"_ (or rather **tag**), tristanable provides not just a one-message lengthb uffer per tag but infact a full queue per tag, meaning any received message with tag `1` will be enqueued and not dropped after the first message of type `1` is buffered. +If we wanted to implement the following we would do the following. One note is that instead of waiting on messages of a specific _"type"_ (or rather **tag**), tristanable provides not just a one-message length buffer per tag but in fact a full queue per tag, meaning any received message with tag `1` will be enqueued and not dropped after the first message of type `1` is buffered. ```d import tristanable.manager; @@ -39,7 +39,7 @@ manager.addQueue(instantNotification); QueueItem message = weatherQueue.dequeue(); ``` -Surely, there must be some sort of encoding mechanism too? The messages afterall need to be encoded. **No problem!**, we have that sorted: +Surely, there must be some sort of encoding mechanism too? The messages after all need to be encoded. **No problem!**, we have that sorted: ```d import tristanable.encoding; diff --git a/branding/logo_base.xcf b/branding/logo_base.xcf new file mode 100644 index 0000000000000000000000000000000000000000..c6e7a0e0c60efc04e1e0203fafeaccc71bdf7e73 GIT binary patch literal 36783 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 LTSZ=eHLCp|XwR%R literal 0 HcmV?d00001 diff --git a/branding/logo_small.png b/branding/logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..3bbb90d66ae940745c266406c55cda0d86e06560 GIT binary patch literal 2550 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8Y9Be?5)7S2I0XfZ?&dvdz&dv%2Mfqu&IjIZ` z8WU?L+Ik#zkU1J3?5ZisZtYQcBEb5ltE)`5Xjg#Z6|S{bGh%+R`btd_5qCeh^}&PV zNmmaZjSOcGcNF-;P*_?RR5DTM|8$Y4BNYXA`pdt|mA_|L7@9om>U0*9yJnkTPMM*< zri*z!hf$oBEfvfP4u z>U|r!)(FiP_McJW_{e>ow%qHl2t+2umo|u=h^?O;* z)J?kgCTpW|LWT5>9q+PE$rbEm?y-~Hq`5n2!mTLNQ+Ey>&6h2cL4F4((#GEjuG zz$3Dlfk96hgc&QA+Lr+Z*-JcqUD=;AOL6fV{q=0o018Q#xJHyX=jZ08=9Mrw7o{ea zq^2m8XO?6rxO@5rgg5eu1GSy^ba4!+xb^n##%$q4i31PKpGs*S`oZjQ+S%q8E=I-BXD|77f;fbyeE_dR59=$6%tK^q@xug1h zpY9=Ea0(zU>>oINsGmROUeH#d?3asNV+{1avwi&Y`i4@0Gm^7`DXC%6NA2%T)<4Yp z7AH>Iz4Ke0j||_OUnZv>{hc28?pc(F*2bEpuNqk9+We@n=}ezrAI0+I#ygGfyMGhk zJ=?X_K>da4Bkgi>;zDEN5iX70fntR=r?`G@sr`BB&HSD0k9Ce6jgIG03(l`&kv)}C zZ`AwS`aZY$cd$1eoq1kSYtVD<;tgp|t^!U5M2?^+_#xp*d8Q&Rm;RgdMeg3lR%3&= zB}!S>|NVYFucktH@7GfH0H^EW;mViXjpsj3c^>-3%uL3EbLrc%BWKx-e;hdDRDB1M z>uHv&QSuj%gTkk!ts1M2a4F2+wtahYYU)uX26M_w7nB0(pU0X7H!hj8T%vHkYW+1Yh<_a1UsRbI?6S#&YuN#44;{qGANgzSy$PurX+I7d5v zCv(FBW`-s{1`aC*g%==%;6sF`mCPAA$3 wgm1~yf)Zfl83ELVa0L<3g58z_Z~ijNQ8boFyt=akR{0BL~U?*IS* literal 0 HcmV?d00001 diff --git a/branding/logo_small.xcf b/branding/logo_small.xcf new file mode 100644 index 0000000000000000000000000000000000000000..7e1b1b852acb6072ba78a322210197cb6408ed15 GIT binary patch literal 25911 zcmeI4Z)_W99mk(EY2xMonvMo&;A(d$6?l#9+D%XwAYo!fD~u)3|DcO~c8)oAWIHUG zgf6sivKLfrl~9>9B$i4H#H$9-CLyhLnO3ApNNW-0Z7X1JS$I()!SVau^Nn*()2?oO zIWN8^`aPfL-`zdW@A;Fv-}#=DJ~ge(#*@kq20|erM8m(OP*8}Uk~~V%&_G@fiEosW zSjg=pX(DMR`2@mT?lF>Ol8zLeIvCGRO=+0|#RX^X7|m&FK}#qv=!Hq;Yln|K%Q@Xv zQGH5HX~9%ZPjDKS{!M?rFqhVpd^W8o_OzR}i8lc!*SqzcjOhzv#dL}-p<@tzgGMU#3idEhgmcjDETxXkWI3pwD z|CKzRlsx^Otq_6@l-6MBnG%{#j-TfAZOCNxvYJhjJskehJo(fWB%IEAdIVvD@Y}+> zZQ)j1Sh0oMY~glWxWg9iqA*{tpX7%mEhKzxKL6tg6U1H)o8*WATi8BSKE>%I+&&sA z4SylZ{x4{=gALm==$m=g^lpH-c5QuO$^vxZk% z&7@{%%qxB^6MRwSGfk*@Ett@ATHI<@x{#y9wS!(6cp?;ug%5;cp@D;u!EiJ>5T&#z zF%pSViw?ww4h}^RP+DxL+{Jhze19fi(35jYT1yuAn%UXlR5qb0NvbGMGfsFxPtXL7 zMtJCRd{Wa>lLaMwF#JRmN!DB`HEvR;*3sm$n#LVyb4}URNNKS1ARyPYC^`N&@bBQi zB-t+=L*ebbwvhAvQnC%@I(c%C>->u3qd$_|`7ZcZ@Sl>OOiA`3?xz9A?sLb%*Cc~H zz{v%p;8T*JcO+woe-Ru;`Y;b{a!*;anK*?wPatxKdBT%B5&~85$CBUto#glsco;(^MxDcO_~qA^(CU$5VwkbVo#lk*XsJ|b3^>XG;j6YP)u{YPk8?3Xkf)2-$`$6 zjjrjEeg0nYG7IYsbA*rC<*@zIY5VBM{ro+S7<*WUVhd+;EAy*UY016x{@r!szTa$H zZVUZBX0NL|8}PmgM&rv~%QsB}wbSQLTZXH6{&)9YG{5fN4h_6B1kaKc+n>=jf4{J0 z59Bh^eqeO{eBIFM6D^l8TEfD7$BA$0D>)~xf?iF^HCEC|p#5U?zfP~@i+8Tc$Hl%u z&p`CQrO$z{+hawe@g+|Wv}=H;2f2F!^x*0fpVLpAG@mY-m-tJ2_rCe(y#`pf|LP4ENoj^rsH*bDZ9gW%KPF>n%`1sA{z;2YqZ z;5G0j_yKrF^0W`^1^dB4@M-WEI0?>z3*ZGwYn2Jm%5simiG*jJv+)i(e+ON!gRUoM zxwF?>+n!pxe&>9ER+DoiOITH$jkjG3&?<9|WQnALRmPe(yvnqVsPX6J{?|N;w$f6A zf66P9@?oLo{0rn`@D>^&*iOSD6FEK8j$&F1RMp&z&Mx( z&w}T{MQ{nc3SI|qgUgZ=jbINL03+ZiI0nYSJa`s74=#dB;8pNCcpF@nj5mTkU;vDO zqu>}A2lL=r@I1H(E`e9U>)>s0Su)WG_J9E}0*-=XU>wYYXTkH}BDe%z1+Rm*!DUIU zQSz=Ey1Sor%5RW1o?m`Lwej;+T0igl_8V$X|CNrPjh0_K{x&<_`V(Q;gw_GRp=V*o PH})$x_k2Td-Q52l^Bn#t literal 0 HcmV?d00001