Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.16 KB | None | 0 0
  1.    class AppProtocol < Protocol
  2.       def handle_hooray(packet)
  3.          puts "Oh happy day!"
  4.       end
  5.    end
  6.  
  7.    class App
  8.       def initialize(client, reactor)
  9.          @client = AppProtocol.new(client)
  10.          @reactor = reactor
  11.          @reactor.set(client, @client, Ponytron::Reactor::READABLE)
  12.       end
  13.    end
  14.  
  15.    class AppServer
  16.       def initialize(name, server, routemesh, reactor)
  17.          @io_hell = []
  18.          @apps = []
  19.          @server = server
  20.          @routemesh = routemesh
  21.          @reactor = reactor
  22.          @routemesh.send_packet(['register_app', name, @server.addr[1]])
  23.          @reactor.set(@server, method(:accept), Ponytron::Reactor::READABLE)
  24.       end
  25.  
  26.       def accept(request)
  27.          client = request.socket.kgio_tryaccept
  28.          return if client.nil?
  29.          @reactor.set(client, self, Ponytron::Reactor::READABLE)
  30.       end
  31.  
  32.       def call(request)
  33.          r = request.socket.recvmsg_nonblock(:scm_rights => true)
  34.          @io_hell << r[3].unix_rights[0]
  35.          real_sock = Kgio::TCPSocket.for_fd(r[3].unix_rights[0].fileno)
  36.          app = App.new(real_sock, @reactor)
  37.          @apps << app
  38.       end
  39.    end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement