Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class AppProtocol < Protocol
- def handle_hooray(packet)
- puts "Oh happy day!"
- end
- end
- class App
- def initialize(client, reactor)
- @client = AppProtocol.new(client)
- @reactor = reactor
- @reactor.set(client, @client, Ponytron::Reactor::READABLE)
- end
- end
- class AppServer
- def initialize(name, server, routemesh, reactor)
- @io_hell = []
- @apps = []
- @server = server
- @routemesh = routemesh
- @reactor = reactor
- @routemesh.send_packet(['register_app', name, @server.addr[1]])
- @reactor.set(@server, method(:accept), Ponytron::Reactor::READABLE)
- end
- def accept(request)
- client = request.socket.kgio_tryaccept
- return if client.nil?
- @reactor.set(client, self, Ponytron::Reactor::READABLE)
- end
- def call(request)
- r = request.socket.recvmsg_nonblock(:scm_rights => true)
- @io_hell << r[3].unix_rights[0]
- real_sock = Kgio::TCPSocket.for_fd(r[3].unix_rights[0].fileno)
- app = App.new(real_sock, @reactor)
- @apps << app
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement