Skip to content

Instantly share code, notes, and snippets.

View sznurek's full-sized avatar

Łukasz Dąbek sznurek

View GitHub Profile
@sznurek
sznurek / coroutine.py
Created February 19, 2014 22:37
Python asynchronous server featuring generator (coroutines).
#!/usr/bin/env python3
import sys
import socket
import select
def command(name, args=None):
return {'name': name, 'args': args}
def readcmd():
@sznurek
sznurek / gist:3306924
Created August 9, 2012 18:37
Gotcha in JS
var my_array = {
'one': 1337,
'two': 69,
};
@sznurek
sznurek / gist:3306888
Created August 9, 2012 18:35
Array elements
<?php
$my_array = array(
'one' => 1337,
'two' => 69,
);
class ActionManager(IOBase):
def __init__(self, action, socket, finished_callback=None):
self.action = action
self.socket = socket
self.finished_callback = finished_callback
self.vars = {}
def register(self, fdmanager):
if self.action is None:
return
class ReadAction(Action):
def __init__(self, name):
super().__init__()
self.name = name
def run(self, socket, vars):
data = socket.recv(MAGIC_CONSTANT)
vars[self.name] = data
class WriteAction(Action):
class Action:
def __init__(self):
self.next_action = None
def run(self, socket, vars):
pass # this will be overloaded
def __rshift__(self, other):
self.append_action(other)
login_action = Write('LOGIN') >> \
Read('login') >> \
Write(lambda v: 'HELLO %s' % v['login'])
@sznurek
sznurek / sendtext.py
Created July 30, 2012 07:32
SendText
class SendText(IOBase):
def __init__(self, fd, text=None):
self.fd = fd
self.text = text
if not self.text:
self.text = lambda: b"Hello!"
def register(self, fdmanager):
fdmanager.register_write(self.fs, self.write)
@sznurek
sznurek / example.py
Created July 30, 2012 07:24
Example
class SendText(IOBase):
def __init__(self, fd, text=b"Hello!"):
self.fd = fd
self.text = text
def register(self, fdmanager):
fdmanager.register_write(self.fs, self.write)
def write(self):
os.write(self.fd, self.text)
@sznurek
sznurek / fdmanager.py
Created July 30, 2012 07:20
FDManager
class FDManager:
def register_read(self, file_descriptor, callback):
# ...
def register_write(self, file_descriptor, callback):
# ...
def register_error(self, file_descriptor, callback):
# ...