Changeset 1639
- Timestamp:
- 08/14/06 14:14:34 (4 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
ipython/branches/chainsaw/ipython1/kernel/controllerclient.py
r1634 r1639 28 28 29 29 arraytypeList = [] 30 # try:30 # try: 31 31 # import Numeric 32 # except ImportError:32 # except ImportError: 33 33 # pass 34 # else:34 # else: 35 35 # arraytypeList.append(Numeric.arraytype) 36 36 try: … … 40 40 else: 41 41 arraytypeList.append(numpy.ndarray) 42 # try:42 # try: 43 43 # import numarray 44 # except ImportError:44 # except ImportError: 45 45 # pass 46 # else:46 # else: 47 47 # arraytypeList.append(numarray.numarraycore.NumArray) 48 48 … … 87 87 self.__data = '' 88 88 self.__buffer = '' 89 self.verbose = False 89 90 90 91 def writeNetstring(self,data): … … 97 98 2. No errors are caught currently. 98 99 """ 100 if self.verbose: 101 print "client:",data 99 102 prefix = "%d:" % len(data) 100 103 … … 110 113 while offset < lengthToSend: 111 114 slice = buffer(data, offset, lengthToSend - offset) 112 amountWritten = self.sock.send(slice )115 amountWritten = self.sock.send(slice[:65536]) 113 116 offset += amountWritten 114 117 115 self.sock.send(',')118 return self.sock.send(',') 116 119 117 120 … … 130 133 self.__data = self.__data[1:] 131 134 return True 132 133 135 134 136 def recvLength(self): … … 164 166 string = self.__buffer 165 167 self.__buffer = '' 168 if self.verbose: 169 print "controller:",string 166 170 return string 167 171 … … 274 278 if isinstance(ids, slice): 275 279 #parse slice 276 idlist = rc. statusAll().keys()280 idlist = rc.getIDs() 277 281 if ids.step is None: 278 282 step = 1 … … 387 391 self.es = NetstringSocket(self.s) 388 392 393 def legalTargets(self, targets): 394 if isinstance(targets, int): 395 return targets >= 0 396 elif isinstance(targets, (list, tuple)): 397 if not targets: 398 return False 399 for t in targets: 400 if t < 0: 401 return False 402 return True 403 elif targets == 'all': 404 return True 405 else: 406 return False 407 408 def multiTargets(self, targets): 409 return not isinstance(targets, int) and len(targets) > 1 410 389 411 def executeAll(self, source, block=False): 390 412 return self.execute('all', source, block) … … 406 428 do not wait, return as soon as source has been sent, print nothing. 407 429 """ 430 if not self.legalTargets(targets) or not source: 431 # need something to do 432 return False 408 433 self._check_connection() 409 if isinstance(targets, list):434 if isinstance(targets, (list, tuple)): 410 435 targetstr = '::'.join(map(str, targets)) 411 436 else: 412 targetstr = str(targets) 413 414 if not targetstr or not source: 415 # need something to do 416 return False 437 targetstr = str(targets) 417 438 418 439 if self.block or block: … … 441 462 print cmd 442 463 else: 443 print cmd444 464 target = cmd[0] 445 465 cmd_num = cmd[1] … … 502 522 The python objects to send and their remote keys. i.e. a=1, b='asdf' 503 523 """ 524 if not self.legalTargets(targets) or not namespace: 525 #need something to do 526 return False 504 527 self._check_connection() 505 if isinstance(targets, list):528 if isinstance(targets, (list, tuple)): 506 529 targetstr = '::'.join(map(str, targets)) 507 530 else: 508 531 targetstr = str(targets) 509 532 510 if not namespace or not targetstr:511 #need something to send, someone to send it to512 return False513 533 514 534 self.es.writeNetstring("PUSH ::%s" % targetstr) … … 572 592 l.append(rc.pull(t, *keys)) 573 593 """ 574 self._check_connection() 575 if isinstance(targets, list): 594 if not self.legalTargets(targets) or not keys: 595 # need something to do 596 return False 597 self._check_connection() 598 599 if isinstance(targets, (list, tuple)): 576 600 targetstr = '::'.join(map(str, targets)) 577 601 else: … … 582 606 return False 583 607 584 if not keys or not targetstr: 585 return False 586 multitargets = not isinstance(targets, int) and len(targets) > 1 608 multitargets = self.multiTargets(targets) 587 609 self.es.writeNetstring("PULL %s::%s" % (keystr, targetstr)) 588 610 string = self.es.readNetstring() … … 625 647 results = [] 626 648 string = self.es.readNetstring() 627 #finish command649 #finish pulling 628 650 if not returns: 629 651 #if it was not a nested list … … 662 684 663 685 """ 664 if not keys or targets is []:665 return False666 self._check_connection()667 multitargets = not isinstance(targets, int) and len(targets) > 1668 # this checks for valid id without doing *much*669 # we do not want to do this686 if not self.legalTargets(targets) or not keys: 687 # need something to do 688 return False 689 self._check_connection() 690 691 multitargets = self.multiTargets(targets) 670 692 values = self.pull(targets, *keys) 671 693 if values == False: 672 694 # could be bad, but not *necessarily* 673 695 if multitargets or len(keys) > 1: 674 # guaranteed this should not be False696 # definitely bad 675 697 return False 676 698 elif not self.execute(targets, ' '): 677 699 # check bad target failure 700 # probably do not want to do this 678 701 return False 679 702 … … 701 724 returns = returns[0] 702 725 return returns 703 726 704 727 def getResult(self, targets, i=None): 705 """Gets a specific result from the kernels, returned as a tuple.""" 728 """Gets a specific result from the kernels, returned as a tuple, or 729 list of tuples if multiple targets.""" 730 if not self.legalTargets(targets): 731 # need something to do 732 return False 706 733 self._check_connection() 707 if isinstance(targets, list):734 if isinstance(targets, (list, tuple)): 708 735 targetstr = '::'.join(map(str, targets)) 709 736 else: 710 737 targetstr = str(targets) 711 712 if not targetstr:713 return False714 738 715 739 if i is None: … … 728 752 else: 729 753 if string == "GETRESULT OK": 730 if len(data) is 1 and targets != 'all':754 if not self.multiTargets(targets): 731 755 data = data[0] 732 756 return data … … 741 765 def status(self, targets): 742 766 """Check the status of the kernel.""" 767 if not self.legalTargets(targets): 768 # need something to do 769 return False 743 770 self._check_connection() 744 if isinstance(targets, list):771 if isinstance(targets, (list, tuple)): 745 772 targetstr = '::'.join(map(str, targets)) 746 773 else: 747 774 targetstr = str(targets) 748 749 if not targetstr:750 return False751 775 752 776 self.es.writeNetstring("STATUS ::%s" %targetstr) … … 762 786 else: 763 787 if string == "STATUS OK": 788 if not self.multiTargets(targets): 789 data = data[0][1] 764 790 return data 765 791 else: … … 768 794 # For other data types 769 795 pass 796 797 def getIDs(self): 798 status = self.statusAll() 799 if(status): 800 return zip(*self.statusAll())[0] 801 else: 802 return status 770 803 771 804 def notify(self, addr=None, flag=True): … … 814 847 def reset(self, targets): 815 848 """Clear the namespace if the kernel.""" 849 if not self.legalTargets(targets): 850 # need something to do 851 return False 816 852 self._check_connection() 817 if isinstance(targets, list):853 if isinstance(targets, (list, tuple)): 818 854 targetstr = '::'.join(map(str, targets)) 819 855 else: 820 856 targetstr = str(targets) 821 822 if not targetstr:823 return False824 857 825 858 self.es.writeNetstring("RESET ::%s" %targetstr) … … 832 865 def kill(self, targets): 833 866 """Kill the engine completely.""" 867 if not self.legalTargets(targets): 868 # need something to do 869 return False 834 870 self._check_connection() 835 if isinstance(targets, list):871 if isinstance(targets, (list, tuple)): 836 872 targetstr = '::'.join(map(str, targets)) 837 873 else: 838 874 targetstr = str(targets) 839 840 if not targetstr:841 return False842 875 843 876 self.es.writeNetstring("KILL ::%s" %targetstr)
