Iteratee and stream with Play2 scala

Preview:

DESCRIPTION

slides of my talk for tokyo scala user group

Citation preview

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

Recommended