К основному контенту

Асинхронный web-сервер на F#

open Suave
open Suave.Filters
open Suave.Successful
open Suave.RequestErrors
open Suave.Operators
type Message =
| Add of int
| Fetch of AsyncReplyChannel<int>
let log msg =
let now = DateTime.Now.ToShortTimeString()
printfn "%s %A" now msg
let act = MailboxProcessor<Message>.Start(fun inbox ->
let rec loop (state) = async {
do log state
let! msg = inbox.Receive()
do log msg
match msg with
| Add a ->
return! loop (state + a)
| Fetch r ->
r.Reply(state)
return! loop state }
loop 0)
let add (a) =
context (fun ctx ->
act.Post (Add a)
OK(sprintf "%d posted<br> For check state send get-request to /fetch" a))
let app : WebPart =
choose
[
path "/fetch/" >=> request (fun ctx ->
let data = act.PostAndReply(fun r -> Fetch r)
OK(sprintf "Current State = %d.<br> For add data send get-request by example: /add/1" data))
pathScan "/add/%d" add
NOT_FOUND "Found no handlers" ]
[<EntryPoint>]
let main argv =
Async.Sleep 1000 |> Async.RunSynchronously
startWebServer defaultConfig app
exit 0

Комментарии

Популярные сообщения из этого блога

Кирилица в Arch Linux

После вчерашних обновлений в консоли Arch Linux при выборе русской локали вместо букв печатаются белые квадратики. Очевидно, что по какой-то причине не загружается прописанный в rc.conf шрифт. Временное лекарство от этого: выполнить команду setfont cyr-sun16 . Еще у меня в момент начальной загрузки появляется рябь на экране как от сильных электромагнитных помех в ЭЛТ, хотя у меня ЖК. Может быть это как-то связано.

Сортировка массивов в groovy

Любой массив в java и groovy можно отсортировать статическим методом: Arrays.sort(c); причем это будет очень быстро сто тысяч элементов типа int сортируются за 1 секунду на celeron M 1,8 Mg. Если это массив объектов можно использовать перегруженный метод Arrays.sort(c,comporator);

Arch Linux - руссификация консоли

Вчера, придя с работы, как всегда затеял InstallFest. Уже практически не задумываясь установил свежий арч. И тут заметил что в tty вместо русского - квадратики. Под утро нашел таки сообщение на форме, что в этом виноваты дрова от видео. Там правда речь шла о нвидиа, а у меня ати. Буду пробовать. И еще в lxterminal обратил внимание что сообщения на русском, а то что я вводил на русском потом возвращается системой в виде юникод-символов. Вот такие дела. UPDATE: драйвер не причем. переустановил в консоли(до установки X) по прежнему квадратики вместо букв. неужели придется переключатся на инглиш? Заметил что initscripts скачался c какого-то зеркала не с яндекса. возможно причина в нем.