Skip to content

Commit

Permalink
Added examples
Browse files Browse the repository at this point in the history
  • Loading branch information
Dmitry Vasiliev committed Jan 2, 2010
1 parent 0d1c090 commit bf5c1bf
Show file tree
Hide file tree
Showing 7 changed files with 102 additions and 1 deletion.
3 changes: 2 additions & 1 deletion .gitignore
@@ -1,5 +1,6 @@
*.swp
*.pyc
*.py[co]
*.beam
/src/*.egg-info
/build
/dist
18 changes: 18 additions & 0 deletions examples/generator.erl
@@ -0,0 +1,18 @@
-module(generator).
-export([generate/1]).

generate(N) when N >= 0 ->
Port = open_port({spawn, "python handler.py"},
[{packet, 1}, nouse_stdio, binary, {env, [{"PYTHONPATH", "../src"}]}]),
generate(Port, N),
receive
{Port, {data, Data}} ->
port_close(Port),
binary_to_term(Data)
end.

generate(Port, 0) ->
port_command(Port, term_to_binary(stop));
generate(Port, N) ->
port_command(Port, term_to_binary(now())),
generate(Port, N - 1).
18 changes: 18 additions & 0 deletions examples/generator.py
@@ -0,0 +1,18 @@
import time

from erlport import Port, Protocol
from erlport import Atom


class EventGenerator(Protocol):

def handle(self, port, n):
while n > 0:
port.write(tuple(time.localtime()))
n -= 1
port.write(Atom("stop"))


if __name__ == "__main__":
proto = EventGenerator()
proto.run(Port())
20 changes: 20 additions & 0 deletions examples/handler.erl
@@ -0,0 +1,20 @@
-module(handler).
-export([handle/1]).

handle(N) when N >= 0 ->
Port = open_port({spawn, "python generator.py"},
[{packet, 1}, nouse_stdio, binary, {env, [{"PYTHONPATH", "../src"}]}]),
port_command(Port, term_to_binary(N)),
handle(Port, []).

handle(Port, Acc) ->
receive
{Port, {data, Data}} ->
case binary_to_term(Data) of
stop ->
port_close(Port),
lists:reverse(Acc);
Term ->
handle(Port, [Term | Acc])
end
end.
20 changes: 20 additions & 0 deletions examples/handler.py
@@ -0,0 +1,20 @@
from erlport import Port, Protocol
from erlport import Atom


class EventHandler(Protocol):

def __init__(self):
self.collected = []

def handle(self, port, message):
if message == Atom("stop"):
port.write(self.collected)
self.collected = []
else:
self.collected.append(message)


if __name__ == "__main__":
proto = EventHandler()
proto.run(Port())
12 changes: 12 additions & 0 deletions examples/hello.erl
@@ -0,0 +1,12 @@
-module(hello).
-export([hello/1]).

hello(Name) ->
Port = open_port({spawn, "python hello.py"},
[{packet, 1}, nouse_stdio, binary, {env, [{"PYTHONPATH", "../src"}]}]),
port_command(Port, term_to_binary({hello, Name})),
receive
{Port, {data, Data}} ->
port_close(Port),
binary_to_term(Data)
end.
12 changes: 12 additions & 0 deletions examples/hello.py
@@ -0,0 +1,12 @@
from erlport import Port, Protocol


class HelloProtocol(Protocol):

def handle_hello(self, name):
return "Hello, %s" % name


if __name__ == "__main__":
proto = HelloProtocol()
proto.run(Port())

0 comments on commit bf5c1bf

Please sign in to comment.