├── .gitignore ├── LICENSE ├── README.md ├── benchmarks └── src │ └── main │ └── scala │ ├── Chameneos.scala │ ├── PingPong.scala │ ├── Ring.scala │ └── package.scala ├── examples └── src │ └── main │ ├── resources │ └── application.conf │ └── scala │ └── lchannels │ └── examples │ ├── Calc.scala │ ├── Greeting.scala │ ├── ScribbleGreeting.scala │ ├── chat │ ├── AuthServer.scala │ ├── ChatServer.scala │ ├── Client.scala │ ├── Demo.scala │ ├── Frontend.scala │ ├── Internal.scala │ └── Protocol.scala │ ├── game │ ├── ClientA.scala │ ├── ClientB.scala │ ├── ClientC.scala │ ├── Demo.scala │ ├── Server.scala │ └── protocol │ │ ├── Binary.scala │ │ ├── ClientA.scala │ │ ├── ClientB.scala │ │ └── ClientC.scala │ ├── http │ ├── Server.scala │ └── protocol │ │ ├── Binary.scala │ │ ├── Server.scala │ │ └── Types.scala │ ├── sleepingbarber │ ├── Barber.scala │ ├── Customer.scala │ ├── Demo.scala │ └── Shop.scala │ └── threebuyer │ ├── Alice.scala │ ├── Bob.scala │ ├── Carol.scala │ ├── Demo.scala │ ├── Seller.scala │ └── protocol │ ├── Alice.scala │ ├── Binary.scala │ ├── Bob.scala │ ├── Carol.scala │ └── Seller.scala ├── lchannels └── src │ └── main │ └── scala │ └── lchannels │ ├── Actor.scala │ ├── Channel.scala │ ├── Local.scala │ ├── Medium.scala │ ├── Protocol.scala │ ├── Queue.scala │ ├── Socket.scala │ ├── Stream.scala │ ├── package.scala │ └── util │ └── Fifo.scala ├── project └── build.properties └── scripts ├── benchmark.sh ├── greeting-server.py └── plot-benchmark.py /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/README.md -------------------------------------------------------------------------------- /benchmarks/src/main/scala/Chameneos.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/benchmarks/src/main/scala/Chameneos.scala -------------------------------------------------------------------------------- /benchmarks/src/main/scala/PingPong.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/benchmarks/src/main/scala/PingPong.scala -------------------------------------------------------------------------------- /benchmarks/src/main/scala/Ring.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/benchmarks/src/main/scala/Ring.scala -------------------------------------------------------------------------------- /benchmarks/src/main/scala/package.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/benchmarks/src/main/scala/package.scala -------------------------------------------------------------------------------- /examples/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/resources/application.conf -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/Calc.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/Calc.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/Greeting.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/Greeting.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/ScribbleGreeting.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/ScribbleGreeting.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/chat/AuthServer.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/chat/AuthServer.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/chat/ChatServer.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/chat/ChatServer.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/chat/Client.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/chat/Client.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/chat/Demo.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/chat/Demo.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/chat/Frontend.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/chat/Frontend.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/chat/Internal.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/chat/Internal.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/chat/Protocol.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/chat/Protocol.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/game/ClientA.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/game/ClientA.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/game/ClientB.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/game/ClientB.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/game/ClientC.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/game/ClientC.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/game/Demo.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/game/Demo.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/game/Server.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/game/Server.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/game/protocol/Binary.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/game/protocol/Binary.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/game/protocol/ClientA.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/game/protocol/ClientA.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/game/protocol/ClientB.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/game/protocol/ClientB.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/game/protocol/ClientC.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/game/protocol/ClientC.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/http/Server.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/http/Server.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/http/protocol/Binary.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/http/protocol/Binary.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/http/protocol/Server.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/http/protocol/Server.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/http/protocol/Types.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/http/protocol/Types.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/sleepingbarber/Barber.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/sleepingbarber/Barber.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/sleepingbarber/Customer.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/sleepingbarber/Customer.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/sleepingbarber/Demo.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/sleepingbarber/Demo.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/sleepingbarber/Shop.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/sleepingbarber/Shop.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/threebuyer/Alice.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/threebuyer/Alice.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/threebuyer/Bob.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/threebuyer/Bob.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/threebuyer/Carol.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/threebuyer/Carol.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/threebuyer/Demo.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/threebuyer/Demo.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/threebuyer/Seller.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/threebuyer/Seller.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/threebuyer/protocol/Alice.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/threebuyer/protocol/Alice.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/threebuyer/protocol/Binary.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/threebuyer/protocol/Binary.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/threebuyer/protocol/Bob.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/threebuyer/protocol/Bob.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/threebuyer/protocol/Carol.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/threebuyer/protocol/Carol.scala -------------------------------------------------------------------------------- /examples/src/main/scala/lchannels/examples/threebuyer/protocol/Seller.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/examples/src/main/scala/lchannels/examples/threebuyer/protocol/Seller.scala -------------------------------------------------------------------------------- /lchannels/src/main/scala/lchannels/Actor.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/lchannels/src/main/scala/lchannels/Actor.scala -------------------------------------------------------------------------------- /lchannels/src/main/scala/lchannels/Channel.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/lchannels/src/main/scala/lchannels/Channel.scala -------------------------------------------------------------------------------- /lchannels/src/main/scala/lchannels/Local.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/lchannels/src/main/scala/lchannels/Local.scala -------------------------------------------------------------------------------- /lchannels/src/main/scala/lchannels/Medium.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/lchannels/src/main/scala/lchannels/Medium.scala -------------------------------------------------------------------------------- /lchannels/src/main/scala/lchannels/Protocol.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/lchannels/src/main/scala/lchannels/Protocol.scala -------------------------------------------------------------------------------- /lchannels/src/main/scala/lchannels/Queue.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/lchannels/src/main/scala/lchannels/Queue.scala -------------------------------------------------------------------------------- /lchannels/src/main/scala/lchannels/Socket.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/lchannels/src/main/scala/lchannels/Socket.scala -------------------------------------------------------------------------------- /lchannels/src/main/scala/lchannels/Stream.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/lchannels/src/main/scala/lchannels/Stream.scala -------------------------------------------------------------------------------- /lchannels/src/main/scala/lchannels/package.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/lchannels/src/main/scala/lchannels/package.scala -------------------------------------------------------------------------------- /lchannels/src/main/scala/lchannels/util/Fifo.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/lchannels/src/main/scala/lchannels/util/Fifo.scala -------------------------------------------------------------------------------- /project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=0.13.17 2 | -------------------------------------------------------------------------------- /scripts/benchmark.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/scripts/benchmark.sh -------------------------------------------------------------------------------- /scripts/greeting-server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/scripts/greeting-server.py -------------------------------------------------------------------------------- /scripts/plot-benchmark.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alcestes/lchannels/HEAD/scripts/plot-benchmark.py --------------------------------------------------------------------------------