Iteratee and stream with Play2 scala
-
Upload
quentin-adam -
Category
Technology
-
view
1.701 -
download
0
description
Transcript of Iteratee and stream with Play2 scala
MANAGE STREAMS WITH ITERATEE AND PLAY FRAMEWORKBY @WAXZCE
TOKYO SCALA USER GROUP
WHO AM I ?CEO of Clever Cloud
PaaS provider
@waxzce on twitter
www.clever-cloud.com
WHY WE NEED ITERATEE ?
SO,
ITERATEE HANDLING STREAMS, LET’S FIND EXAMPLE
IN FACTS
WHAT IS INSIDE AN HTTP REQUEST ?
Verb• The action
Resource• The object of the action
Headers • The context of the action
Body • Optional• The datas
IN MANY CASE THE REQUEST IS MANIPULATE ALL FROM MEMORY
File upload for example
BUT SOMETIMES THE BODY PART IS FAT
THERE IS 3 WAY TO RESOLVE THE PROBLEM
PUT ALL IN MEMORY
CREATE TEMP FILE
Built in on play with
ACTING DIRECTLY ON STREAM
HTTP REQUEST IS STREAM
SO WE WILL JUST MANAGE THE BODY STREAM
JUST DO NOT REWRITE HTTP PARSER
CLASSIC JAVA STREAM MANAGEMENT
CLASSIC JAVA STREAM MANAGEMENT • Low performances if not buffered
• Not modular
• Thread blocking
• Code is ugly
SCALA WAY : ITERATEE
Like a recipe
Consume the data
ITERATEE : HOW TO MANAGE A STREAM
Produce the data
ENUMERATOR : DATA STREAM
Set of tools to do cool things with Iteratee and Enumerator
ENUMERATEE
SIMPLE ITERATEE EXAMPLE
BODY PARSERSREQUEST HEADERS -> ITERATEE[ARRAY[BYTE], EITHER[RESULT, ?]]
EXAMPLE MANAGING BODY
GET FILE AND CALCULATE HASH FROM CHUNK
NOW LIVE CODE !
GIFT FROM CLEVER CLOUD
Use tokyoscala as coupon code for free hosting
On clever-cloud.com