diff options
Diffstat (limited to 'cholerab/cholerab-live')
| -rw-r--r-- | cholerab/cholerab-live/README | 6 | ||||
| -rw-r--r-- | cholerab/cholerab-live/chol_net.py | 82 | ||||
| -rw-r--r-- | cholerab/cholerab-live/chol_net.pyc | bin | 4361 -> 0 bytes | |||
| -rwxr-xr-x | cholerab/cholerab-live/cholerab.py | 36 | ||||
| -rw-r--r-- | cholerab/cholerab-live/view.py | 112 | 
5 files changed, 0 insertions, 236 deletions
| diff --git a/cholerab/cholerab-live/README b/cholerab/cholerab-live/README deleted file mode 100644 index b778b98c..00000000 --- a/cholerab/cholerab-live/README +++ /dev/null @@ -1,6 +0,0 @@ - -view.py: contains view classes for cholerab -cholerab.py: main file - -start with : -python cholerab.py diff --git a/cholerab/cholerab-live/chol_net.py b/cholerab/cholerab-live/chol_net.py deleted file mode 100644 index ee0f5378..00000000 --- a/cholerab/cholerab-live/chol_net.py +++ /dev/null @@ -1,82 +0,0 @@ -from socket import socket, AF_INET,SOCK_DGRAM,IPPROTO_UDP,SOL_SOCKET,SO_REUSEADDR,IP_MULTICAST_TTL,IP_MULTICAST_LOOP,INADDR_ANY,inet_aton,IP_ADD_MEMBERSHIP,IPPROTO_IP -import struct -import threading  -import logging -log = None -from select import select -GROUP = '224.110.42.23' -PORT  = 42023 -log = logging.getLogger('CholerabNet') -class CholerabMulicastNet(threading.Thread): -  def __init__(self,cholerab,group=GROUP,port=PORT): -    threading.Thread.__init__(self) -    self.cholerab=cholerab -    self.group=group -    self.port=port -    self.initSocket() -  def send_char(self,x,y,char): -    """ translates given params into network message """ -    self.send_mc("%s %d %d" %(str(ord(char)),x,y)) -  def send_mc(self,arg): -    """ Sends message via multicast""" -    try: -      log.debug("Sending '%s' to %s:%d" % (arg,self.group,self.port))  -      self.ignore_next += 1# we need this to work together correctly with reused sockets -      self.s.sendto("%s" % arg,0,(self.group,self.port)) -    except Exception ,e: -      self.ignore_next -=1 -      log.error("IN send_mc:%s"%str(e)) - -  def initSocket (self,rcv=1): -    ''' Initializes a Multicast socket ''' -    host = '' -    log.debug("Setting up Multicast Socket") -    self.s = socket(AF_INET,SOCK_DGRAM, IPPROTO_UDP) -    self.s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) -    self.s.setsockopt(IPPROTO_IP, IP_MULTICAST_TTL, 32) -    self.s.setsockopt(IPPROTO_IP,IP_MULTICAST_LOOP,1) # we do not want our own packets to be replayed  -    if rcv==1: -      log.debug("Configuring for Read AND Write") -      self.s.bind((host,PORT)) -      mreq = struct.pack("4sl", inet_aton(GROUP), INADDR_ANY) -      self.s.setsockopt(IPPROTO_IP,IP_ADD_MEMBERSHIP,mreq) -  def run(self): -    self.running = 1 -    self.ignore_next = 0 -    while self.running: -      # break if we do not want to loop on -      ready,output,exception = select([self.s],[],[],1) # try every second -      for r in ready: -        if r == self.s: -          log.debug(str(self.ignore_next)) -          (data,addr) = self.s.recvfrom(1024) -          if not self.ignore_next: -            log.debug("Received Data from %s, data %s"%(str(addr),str(data))) -            self.receive_net(addr,data) -          else: -            self.ignore_next -= 1  - -  def send_stupid(self,addr): -    """ sends YOU ARE MADE OF STUPID to the right host """ -    #TODO implement me -    pass - -  def receive_net(self,addr,data): -    """ resolves which nick sent the message -    TODO handle user resolution in mulicast """ -    try:  -      address,port = addr -      arr = str(data).split() -      char = arr[0] -      x = arr[1] -      y = arr[2] -      self.cholerab.write_char(int(x),int(y),chr(int(char))) -    except Exception, e: -      log.error("Triggered YOU ARE MADE OF STUPID: %s" % str(e)) -      self.send_stupid(addr) - -  def stop(self): -    ''' -    stops the whole treading stuff gracefully -    ''' -    self.running=0 diff --git a/cholerab/cholerab-live/chol_net.pyc b/cholerab/cholerab-live/chol_net.pycBinary files differ deleted file mode 100644 index 0694ad6d..00000000 --- a/cholerab/cholerab-live/chol_net.pyc +++ /dev/null diff --git a/cholerab/cholerab-live/cholerab.py b/cholerab/cholerab-live/cholerab.py deleted file mode 100755 index eb9e66df..00000000 --- a/cholerab/cholerab-live/cholerab.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/python2 -# -*- coding: utf-8 -*- -import curses,time -from view import CursesView -from chol_net import CholerabMulicastNet -import logging -logging.basicConfig(filename='here.log',level=logging.DEBUG) -log = logging.getLogger('main') -class Cholerab: -  def __init__(self): -    self.view = CursesView(cholerab=self) -    self.transport = CholerabMulicastNet(cholerab=self) -  def send_char(self,x,y,char): -    log.info("Sending %s at (%d,%d) to connected peers" %(char,x,y)) -    self.transport.send_char(x,y,char) - -  def write_char(self,x,y,char): -    log.info("Writing %s at (%d,%d) to view" %(char,x,y)) -    self.view.write_char(x,y,char,user=2) -  def stop(self): -    self.view.stop() -    self.transport.stop() -  def main(self): -    self.view.start() -    self.transport.start() -    self.view.join() -    #after view dies, kill the transport as well -    self.transport.stop()  -    self.transport.join() -def main(): -  log.debug('started main') -  chol = Cholerab() -  chol.main() - -if __name__ == "__main__": -  main() diff --git a/cholerab/cholerab-live/view.py b/cholerab/cholerab-live/view.py deleted file mode 100644 index 6a75f655..00000000 --- a/cholerab/cholerab-live/view.py +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/python2 - -from curses import * -import socket -import threading -import logging -log = logging.getLogger('cholerab-curses') - -class CursesView(threading.Thread): -  def addch(self,char): -    """ -    adds a char at the current cursor position -    abstraction to the curses win.addch() -    """ -    try: self.win.addch(char) -    except: pass -    self.cholerab.send_char(self.x,self.y,chr(char)) -  def stop(self): -    #TODO setting back the whole terminal currently does not work correctly, fix me harder -    self.running = False -    self.clear() -    self.win.refresh() -    nocbreak(); self.scr.keypad(0); echo() -    #endwin() - -  def run(self): -    """ -    input loop - -    TODO add Unicode Input Support -    """ -    self.running = True -    def try_move(x,y): -      if x >= self.width: x = 0;y = y+1 -      if x < 0 : x = self.width-1; y= y-1 -      if y >= self.height : x = x+1;y = 0 -      if y < 0 : x = x-1; y = self.height-1 -      self.win.move(y,x); return x,y - -    while self.running: -      c = self.scr.getch() #get_char(self.scr)  -                           #TODO UTF8 here, get_wch not yet implemented -      log.debug("Pressed : %d" % c) -      if c == KEY_LEFT : self.x -=1 -      elif c == KEY_RIGHT : self.x +=1 -      elif c == KEY_UP : self.y -=1 -      elif c == KEY_DOWN : self.y +=1 -      elif c == ord('q') : self.stop() -      elif c == 127 or c == KEY_BACKSPACE:  -        log.info('backspace pressed') -        self.x -=1;  -        self.x,self.y = try_move(self.x,self.y) -        self.addch(ord(' ')) -      elif c == ord('\n'):  -        log.info('enter pressed') -        self.y +=1;  -        self.x,self.y = try_move(self.x,self.y) -      else :  -        self.addch(c)  -        self.x +=1 -      self.x,self.y = try_move(self.x,self.y) -      self.refresh() - -  def write_char(self,x,y,char,user=1): -    user = user % 3 + 1 -    self.win.addch(y,x,char,color_pair(user)) -    self.win.move(self.y,self.x) -    self.refresh() -  def write_str(self,x,y,string,user=1): -    self.win.addstr(y,x,string,color_pair(user)) -    self.win.move(self.y,self.x) -    self.refresh() -  def refresh(self): -    self.scr.refresh() -    self.win.refresh() -  def clear(self): -    self.win.clear() -    pass -  def write_field(self,ar): -    """ -    writes the whole field with given 2-dimensional array -    """ -    self.clear() -    pass - -  def __init__(self,height=24,width=80,cholerab=None,scr=None): -    # TODO handle sessions somehow -    if scr: -     self.scr = scr -    else: -     self.scr = initscr() -    start_color() -    init_pair(1,COLOR_WHITE,COLOR_BLACK) -    init_pair(2,COLOR_RED,COLOR_BLACK) -    init_pair(3,COLOR_GREEN,COLOR_BLACK) -    init_pair(3,COLOR_CYAN,COLOR_BLACK) -    threading.Thread.__init__(self) -    self.cholerab = cholerab - -    noecho() -    cbreak() -    self.scr.keypad(1) -    try: curs_set(2) -    except: pass # go home with your non-standard terminals! - -    begin_x = 0;begin_y = 0 -    self.height = height -    self.width = width -    self.x = 0 ; self.y = 0 - -    self.win = newwin(height,width,begin_y,begin_x) -    self.clear() | 
