You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2008/03/06 14:00:59 UTC

svn commit: r634255 - in /incubator/qpid/trunk/qpid/python: hello-010-world qpid/codec010.py qpid/datatypes.py qpid/session.py server010 tests/datatypes.py

Author: rhs
Date: Thu Mar  6 05:00:58 2008
New Revision: 634255

URL: http://svn.apache.org/viewvc?rev=634255&view=rev
Log:
added codec for sequence_set; added id to Message; RangeSet -> RangedSet; added RangedSet.add(lower, upper)

Modified:
    incubator/qpid/trunk/qpid/python/hello-010-world
    incubator/qpid/trunk/qpid/python/qpid/codec010.py
    incubator/qpid/trunk/qpid/python/qpid/datatypes.py
    incubator/qpid/trunk/qpid/python/qpid/session.py
    incubator/qpid/trunk/qpid/python/server010
    incubator/qpid/trunk/qpid/python/tests/datatypes.py

Modified: incubator/qpid/trunk/qpid/python/hello-010-world
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/hello-010-world?rev=634255&r1=634254&r2=634255&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/hello-010-world (original)
+++ incubator/qpid/trunk/qpid/python/hello-010-world Thu Mar  6 05:00:58 2008
@@ -4,7 +4,7 @@
 from qpid.connection010 import Connection
 from qpid.spec010 import load
 from qpid.util import connect
-from qpid.datatypes import Message
+from qpid.datatypes import Message, RangedSet
 
 if "-v" in sys.argv:
   level = logging.DEBUG
@@ -27,10 +27,16 @@
 ssn.message_transfer("a")
 ssn.message_transfer("test")
 
-print ssn.incoming("this").get()
-print ssn.incoming("is").get()
-print ssn.incoming("a").get()
-print ssn.incoming("test").get()
+m1 = ssn.incoming("this").get()
+print m1
+m2 = ssn.incoming("is").get()
+print m2
+m3 = ssn.incoming("a").get()
+print m3
+m4 = ssn.incoming("test").get()
+print m4
+
+ssn.message_accept(RangedSet(m1.id, m2.id, m3.id, m4.id))
 
 print ssn.queue_query("testing")
 

Modified: incubator/qpid/trunk/qpid/python/qpid/codec010.py
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/qpid/codec010.py?rev=634255&r1=634254&r2=634255&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/qpid/codec010.py (original)
+++ incubator/qpid/trunk/qpid/python/qpid/codec010.py Thu Mar  6 05:00:58 2008
@@ -18,6 +18,7 @@
 #
 
 from packer import Packer
+from datatypes import RangedSet
 
 class Codec(Packer):
 
@@ -122,6 +123,23 @@
   def write_vbin16(self, b):
     self.write_uint16(len(b))
     self.write(b)
+
+  def read_sequence_set(self):
+    result = RangedSet()
+    size = self.read_uint16()
+    nranges = size/8
+    while nranges > 0:
+      lower = self.read_sequence_no()
+      upper = self.read_sequence_no()
+      result.add(lower, upper)
+      nranges -= 1
+    return result
+  def write_sequence_set(self, ss):
+    size = 8*len(ss.ranges)
+    self.write_uint16(size)
+    for range in ss.ranges:
+      self.write_sequence_no(range.lower)
+      self.write_sequence_no(range.upper)
 
   def read_vbin32(self):
     return self.read(self.read_uint32())

Modified: incubator/qpid/trunk/qpid/python/qpid/datatypes.py
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/qpid/datatypes.py?rev=634255&r1=634254&r2=634255&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/qpid/datatypes.py (original)
+++ incubator/qpid/trunk/qpid/python/qpid/datatypes.py Thu Mar  6 05:00:58 2008
@@ -42,20 +42,26 @@
       self.headers = args[:-1]
     else:
       self.headers = None
+    self.id = None
 
   def __repr__(self):
     args = []
     if self.headers:
-      args.extend(self.headers)
+      args.extend(map(repr, self.headers))
     if self.body:
-      args.append(self.body)
-    return "Message(%s)" % ", ".join(map(repr, args))
+      args.append(repr(self.body))
+    if self.id is not None:
+      args.append("id=%s" % self.id)
+    return "Message(%s)" % ", ".join(args)
 
 class Range:
 
-  def __init__(self, lower, upper):
+  def __init__(self, lower, upper = None):
     self.lower = lower
-    self.upper = upper
+    if upper is None:
+      self.upper = lower
+    else:
+      self.upper = upper
 
   def __contains__(self, n):
     return self.lower <= n and n <= self.upper
@@ -69,16 +75,15 @@
   def span(self, r):
     return Range(min(self.lower, r.lower), max(self.upper, r.upper))
 
-  def __str__(self):
-    return "Range(%s, %s)" % (self.lower, self.upper)
-
   def __repr__(self):
-    return str(self)
+    return "Range(%s, %s)" % (self.lower, self.upper)
 
-class RangeSet:
+class RangedSet:
 
-  def __init__(self):
+  def __init__(self, *args):
     self.ranges = []
+    for n in args:
+      self.add(n)
 
   def __contains__(self, n):
     for r in self.ranges:
@@ -100,14 +105,11 @@
         idx += 1
     self.ranges.append(range)
 
-  def add(self, n):
-    self.add_range(Range(n, n))
-
-  def __str__(self):
-    return "RangeSet(%s)" % str(self.ranges)
+  def add(self, lower, upper = None):
+    self.add_range(Range(lower, upper))
 
   def __repr__(self):
-    return str(self)
+    return "RangedSet(%s)" % str(self.ranges)
 
 class Future:
   def __init__(self, initial=None):

Modified: incubator/qpid/trunk/qpid/python/qpid/session.py
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/qpid/session.py?rev=634255&r1=634254&r2=634255&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/qpid/session.py (original)
+++ incubator/qpid/trunk/qpid/python/qpid/session.py Thu Mar  6 05:00:58 2008
@@ -19,7 +19,7 @@
 
 from threading import Event, RLock
 from invoker import Invoker
-from datatypes import RangeSet, Struct, Future
+from datatypes import RangedSet, Struct, Future
 from codec010 import StringCodec
 from assembler import Segment
 from queue import Queue
@@ -170,7 +170,7 @@
     self.session = session
     self.next_id = None
     self.next_offset = None
-    self._completed = RangeSet()
+    self._completed = RangedSet()
 
   def received(self, seg):
     if self.next_id == None or self.next_offset == None:
@@ -220,8 +220,6 @@
       else:
         idx += 1
 
-from queue import Queue, Closed, Empty
-
 class Delegate:
 
   def __init__(self, session):
@@ -238,6 +236,7 @@
   def message_transfer(self, cmd, headers, body):
     m = Message(body)
     m.headers = headers
+    m.id = cmd.id
     messages = self.session.incoming(cmd.destination)
     messages.put(m)
     msg.debug("RECV: %s", m)

Modified: incubator/qpid/trunk/qpid/python/server010
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/server010?rev=634255&r1=634254&r2=634255&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/server010 (original)
+++ incubator/qpid/trunk/qpid/python/server010 Thu Mar  6 05:00:58 2008
@@ -33,6 +33,9 @@
     m.header = header
     self.session.message_transfer(cmd.destination, cmd.accept_mode, cmd.acquire_mode, m)
 
+  def message_accept(self, messages):
+    print "ACCEPT %s" % messages
+
 server = Server()
 
 for s in listen("0.0.0.0", spec.port):

Modified: incubator/qpid/trunk/qpid/python/tests/datatypes.py
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/tests/datatypes.py?rev=634255&r1=634254&r2=634255&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/tests/datatypes.py (original)
+++ incubator/qpid/trunk/qpid/python/tests/datatypes.py Thu Mar  6 05:00:58 2008
@@ -20,7 +20,7 @@
 from unittest import TestCase
 from qpid.datatypes import *
 
-class RangeSetTest(TestCase):
+class RangedSetTest(TestCase):
 
   def check(self, ranges):
     posts = []
@@ -39,7 +39,7 @@
       idx += 2
 
   def test(self):
-    rs = RangeSet()
+    rs = RangedSet()
 
     self.check(rs.ranges)
 
@@ -85,7 +85,7 @@
     rs.add(-3)
     self.check(rs.ranges)
 
-    rs.add_range(Range(1, 20))
+    rs.add(1, 20)
     assert 21 not in rs
     assert 20 in rs
     self.check(rs.ranges)