diff --git a/AlgebraicDataflowArchitectureModel/models/Twitter.model b/AlgebraicDataflowArchitectureModel/models/Twitter.model index 596ad7b..fe64776 100644 --- a/AlgebraicDataflowArchitectureModel/models/Twitter.model +++ b/AlgebraicDataflowArchitectureModel/models/Twitter.model @@ -1,16 +1,20 @@ -channel CIO1(myId:Str) { - out accounts(ac:List, signup(name:Str)) = cons(tuple(name, nil, nil), t1) +channel SignUp { + out accounts(acDB:Map, signup(myId:Str, name:Str)) = insert(acDB, myId, {"name": name, "tweets": nil, "followees": nil, "timeline": nil}) } -channel CIO2(id:Str) { - out accounts.{id}.tweets(t1:List, tweet(text:Str, time:Long)) = cons(tuple(time, text), t1) +channel Tweet(id:Str) { + out accounts.{id}.tweets(twList:List, tweet(text:Str, time:Long)) = append(twList, {"time": time, "text": text}) } -channel C(myId:Str) { +channel AddFollowee(id:Str) { + out accounts.{id}.followees(fwList:List, addFollowee(flwId:Str)) = append(fwList, flwId) +} + +channel Timeline(myId:Str) { in accounts.{myId}.tweets(t1:List, m) = m.myTweets sub C2(no:Int) { in accounts.{myId}.followees.{no}(id:Str, m) = m.flw.{no}.id - in accounts.{flw.id}.tweets(t2:List, m) = m.flw.{no}.tweets + in accounts.{m.flw.{no}.id}.tweets(t2:List, m) = m.flw.{no}.tweets } out accounts.{myId}.timeline(l:List, m) = merge(m.myTweets, m.flw) } \ No newline at end of file