From 2566db19357f41684a23d1eaff86e68989e85f43 Mon Sep 17 00:00:00 2001 From: aggressive-jerk Date: Thu, 24 Mar 2022 12:58:41 +0300 Subject: [PATCH] 1 --- .../7.1/executionHistory/executionHistory.bin | Bin 41317 -> 54784 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/7.1/fileHashes/fileHashes.bin | Bin 22397 -> 23547 bytes .gradle/7.1/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/buildOutputCleanup/outputFiles.bin | Bin 20549 -> 21197 bytes .idea/runConfigurations.xml | 10 +++ .idea/vcs.xml | 6 ++ src/main/kotlin/Main.kt | 74 +++++++++++++++--- 9 files changed, 77 insertions(+), 13 deletions(-) create mode 100644 .idea/runConfigurations.xml create mode 100644 .idea/vcs.xml diff --git a/.gradle/7.1/executionHistory/executionHistory.bin b/.gradle/7.1/executionHistory/executionHistory.bin index e246eeaf83dbdade5e626a69662ac38ea87d283e..ad997ac211a429a71506d71c347cd2efac88571d 100644 GIT binary patch literal 54784 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 XJ$j15U5bQ*kO*e}HEV@LaKZlpgKc@m delta 550 zcmZoz!~FCR(*zMl=82-}jFuY%Pl!)U5Sc6~p(Pcl{~ro8!zZrbTH&;X0Sx*%C&xQU6T(6 zDsA4m@HOA&yo7(6Dl=v$r(_poWTu*wRwbI3Wt19aBo-J~7G;^{mqIi#XiP5jSYw!I znqq31lA2z`m`=`Kz#$}A`WYds59V#da0$iTp5I5}db5+lpz_&_Db$sZSl zOuiXpHhJP)7e+=P>CAX-GUE*M$?+}RlO^Y=qwqu~hs;Z6JP((jK96_uk$HZMr{N-T z^En}=2nu8txU5+Av~|*PsjrD~E;IEe%Y_+Cn&HUA#0Vs*Xx$4W%Plugn|_`X01*?^ Am;e9( diff --git a/.gradle/7.1/executionHistory/executionHistory.lock b/.gradle/7.1/executionHistory/executionHistory.lock index c4f0e4ad93104cda4c39a11f52b8d8a6113aa841..c6e405701b778ad0ca3069fe8b0dbad43cc6963d 100644 GIT binary patch literal 17 UcmZS9`N_Ly!%{Y51_)RT04?4GBLDyZ literal 17 UcmZS9`N_Ly!%{Y51_)>Z04==)0ssI2 diff --git a/.gradle/7.1/fileHashes/fileHashes.bin b/.gradle/7.1/fileHashes/fileHashes.bin index 8f6ab440cea638441e4be4cb1c7d02e0fa1d8fde..d4701e18bb18f78616e4a4416fb45a1fa112e557 100644 GIT binary patch delta 918 zcmeynj`8<)#tkMClBtd9d46*p-rZsVgDCd@P%zn4!a$?7;A6<8H2=9!$!wTpd(L}x zwmausAmZTApo)bjtI7sw_(XdAZYp257pizVOtH_$ zBWoAWl4OU9pWK`)tHG#|^{eaG%k;_85YedfFxA;Y_DxR4(`G=#!)qt^%FPg{IP#ZA zdeaez7(=A}WLbFyfm#!9tyr7SFQMi#PBxW~V&d%FsQ5#Cqrn8e&5j;6{F7rtlvs90 zE4-ep@2Ll3oSK{nVVs=Y=mQqHH90T@#5nE`RdZYcs^+*nRLyZ)pc<+AhNHsE6*gp9 z%2YGh-S0n<&A`A|zdQPv1H=I`?m$`(6f2rQtO&va;oGz0!&sLxTd^7J*);VdFmgdU zPUQh5fq?5BkU-P%KAs{9^MDG02YoEijD%_T6oKS)a9kegub<2Auub7b58?hIk% zg{VFaQOh7!IC)|)NcF9K(2%$_2O1K$W>$2z376fd65cL^CB6fMqqdJiwcN= JV)Z~;4*EF#tkMCjDC}SB@8C71>&y~A142mG??rvB{8{F%3$(dApI7IWu-q%R+Xuo zyiG=bvZ$=V=2%%v#>vOz+&A0GD=<#(RhTf@R8eAbs$vimd*VjLAL1Jgb_i^C^swOv E0L@n<@c;k- diff --git a/.gradle/7.1/fileHashes/fileHashes.lock b/.gradle/7.1/fileHashes/fileHashes.lock index 02e1216ab52faf219280fc90fb647e7573f99b81..cfbcc8ef3f5cb36014f805a6e82f3c0b7937acd5 100644 GIT binary patch literal 17 UcmZR6%oy0<*XuHi0RmnF04ya0T>t<8 literal 17 UcmZR6%oy0<*XuHi0Rm0|04xLqJOBUy diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 25617e132aae00625fd44a7ff59f8413df23c880..93197b7d41f5dd7b858d0868f40849a7e0ce7020 100644 GIT binary patch literal 17 UcmZQRqWGDBdA=+~dwKSVx51sx}Um9*er zDKUK)-vd`BsNiH3DMf)bkHq7{3mq>(#V$^^l?o8pQgm-E=Smenh+x3{$*n-aUGp`o zU-GL~LRAJ&J}YG*aO{#Q=hL9lLr}rBlmAL72%O!p$zNifv?)}3?_^Qw4F0Qc-ekXF zIv@rS44Pabohk4j!a?!M_s7qmV(gQzO8?OK*BC9?@qfNCRQFX_i2QdiIC1pUy)6*& zz|P4>Wg7V#4!wwP5#9|oz;?2&tbzcy)FYv_D|1Sr25g)hDw`o7cf4kCUiTV1s9^Zy zt+D|Es<*Yy>RQ-_L5i^zzy4<9)jv>`u_xmI_lG`PQyq>(MU>sQB#3e-#u265r4M zYP}&~Db$44$)bu48d<-(e!WbeEDaU(hnbKqWZ&duJZ%O#zI>O5 ziXEQJsx(8O*2G&Y*5>m|r~!$Srz%A;@hNUp{2{*4;0NbsM-LW`$@yM}lM_6mCL4Gk U1JWLoANZI}Zt(P&T;N*>05^>@RsaA1 delta 143 zcmV;A0C4}!r2)mD0kAX}0dkWy7)X@ATX14AW4(fATN_0 xA@P$wB1eBzcooC6AN+B~k(k!LcFu7qKu{4YNT=1PI&;I12y( diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..797acea --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index 18c0de6..b62712d 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -1,6 +1,5 @@ -import io.reactivex.rxjava3.core.Completable -import io.reactivex.rxjava3.core.Flowable -import io.reactivex.rxjava3.core.Maybe +import io.reactivex.rxjava3.annotations.NonNull +import io.reactivex.rxjava3.core.* import java.rmi.server.ServerNotActiveException import java.util.* import java.util.concurrent.TimeUnit @@ -20,49 +19,97 @@ fun main() { // // Несмотря на то, что в некоторых заданиях фигурируют слова "синхронный" и "асинхронный" в рамках текущего ДЗ // это всего лишь имитация, реальное переключение между потоками будет рассмотрено на следующем семинаре + + println("1") + requestDataFromServerAsync() + .blockingSubscribe( + { + println(it) + }, + { + println(it.message) + } + ) + println("---------") + println("2") + requestServerAsync() + .blockingSubscribe( + { + println("success") + }, + { + println(it.message) + } + ) + println("---------") + println("3") + requestDataFromDbAsync() + .blockingSubscribe( + { + println("success") + println(it) + }, + { + println(it.message) + }, + { + println("complete") + } + ) + println("---------") + println("4") + emitEachSecond() + + + //xMap { flatMapCompletable(it) } + //xMap { concatMapCompletable (it) } + //xMap { switchMapCompletable(it) } } // 1) Какой источник лучше всего подойдёт для запроса на сервер, который возвращает результат? // Почему? // Дописать функцию -fun requestDataFromServerAsync() /* -> ??? */ { +fun requestDataFromServerAsync(): Single /* -> ??? */ { // Функция имитирует синхронный запрос на сервер, возвращающий результат fun getDataFromServerSync(): ByteArray? { - Thread.sleep(LATENCY); + Thread.sleep(LATENCY) val success = Random.nextBoolean() return if (success) Random.nextBytes(RESPONSE_LENGTH) else null } - /* return ??? */ + + return Single.fromCallable { getDataFromServerSync() } + } // 2) Какой источник лучше всего подойдёт для запроса на сервер, который НЕ возвращает результат? -// Почему? +// Почему? Completable т.к. важено только выплнение запроса а не результат // Дописать функцию -fun requestServerAsync() /* -> ??? */ { +fun requestServerAsync(): Completable /* -> ??? */ { // Функция имитирует синхронный запрос на сервер, не возвращающий результат fun getDataFromServerSync() { Thread.sleep(LATENCY) if (Random.nextBoolean()) throw ServerNotActiveException() } + return Completable.fromAction { getDataFromServerSync() } - /* return ??? */ } // 3) Какой источник лучше всего подойдёт для однократного асинхронного возвращения значения из базы данных? -// Почему? +// Почему? Maybe т.к. из бд можно получить null // Дописать функцию -fun requestDataFromDbAsync() /* -> ??? */ { +fun requestDataFromDbAsync(): Maybe /* -> ??? */ { // Функция имитирует синхронный запрос к БД не возвращающий результата fun getDataFromDbSync(): T? { Thread.sleep(LATENCY); return null } - /* return */ + return Maybe.fromCallable { getDataFromDbSync() } + } // 4) Примените к источнику оператор (несколько операторов), которые приведут к тому, чтобы элемент из источника @@ -77,7 +124,8 @@ fun emitEachSecond() { // Принтер fun printer(value: Long) = println("${Date()}: value = $value") - // code here + source().filter { it % 2 == 0L }.map { it / 2 } + .blockingSubscribe(::printer) } // 5) Функция для изучения разницы между операторами concatMap, flatMap, switchMap