botsense  3.2.0
RoadNarrows Client-Server Proxied Services Framework
BotSense.BotSenseTypes.ByteBuf Class Reference

Public Member Functions

def __init__ (self, size=bsCore.BSPROXY_MSG_BODY_MAX)
 
def __del__ (self)
 
def __getitem__ (self, i)
 
def __getslice__ (self, i, j)
 
def __iadd__ (self, y)
 
def __imul__ (self, y)
 
def __iter__ (self)
 
def __len__ (self)
 
def __str__ (self)
 
def __setitem__ (self, i, y)
 
def __setslice__ (self, i, j, y)
 
def __sizeof__ (self)
 
def avail (self)
 
def copyFromSwigObj (self, n, i=0, j=0)
 
def copyToSwigObj (self, n, i=0, j=0)
 
def getSwigObj (self)
 
def getBuffer (self)
 
def sizeof (self)
 

Static Public Member Functions

def Constructor (seq)
 
def Clone (buf)
 
def byte (val)
 
def bytelist (seq)
 
def bytec (val)
 
def bytestring (seq)
 

Public Attributes

 buf
 python byte string
 

Detailed Description

BotSense Byte Buffer Class.

    The ByteBuf class provides a wrapper around the byte_t* SWIG object.
    The byte_t is typedef'ed in C as an unsigned char. Byte buffers are used
    in packing and unpacking messages and in communication between the
    client and server.

    Note: There does not seem to be any way to advance the pointer of the
          underlining byte_t* SWIG object, so a copy from/to a python byte
          list (buffer) is required.

Definition at line 355 of file BotSenseTypes.py.

Constructor & Destructor Documentation

def BotSense.BotSenseTypes.ByteBuf.__init__ (   self,
  size = bsCore.BSPROXY_MSG_BODY_MAX 
)
Initialize byte buffer instance.

Parameters:
  size  - Number of bytes of the underlining fixed sized SWIG
          object.

Definition at line 369 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.ByteBuf._size, and BotSense.BotSenseTypes.ByteBuf._swigObj.

369  def __init__(self, size=bsCore.BSPROXY_MSG_BODY_MAX):
370  """ Initialize byte buffer instance.
371 
372  Parameters:
373  size - Number of bytes of the underlining fixed sized SWIG
374  object.
375  """
376  # add header length
377  size += bsCore.BSPROXY_MSG_HDR_LEN
378 
379  ## internal swig object
380  self._swigObj = bsCore.new_byteArray(size)
381 
382  ## internal swig object fixed buffer size
383  self._size = size
384 
385  ## python byte string
386  self.buf = ''
def __init__(self, size=bsCore.BSPROXY_MSG_BODY_MAX)
_size
internal swig object fixed buffer size
_swigObj
internal swig object
def BotSense.BotSenseTypes.ByteBuf.__del__ (   self)
Delete byte buffer instance. 

Definition at line 390 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.ByteBuf._swigObj.

390  def __del__(self):
391  """ Delete byte buffer instance. """
392  bsCore.delete_byteArray(self._swigObj)
_swigObj
internal swig object

Member Function Documentation

def BotSense.BotSenseTypes.ByteBuf.__getitem__ (   self,
  i 
)
x.__getitem__(i)  <==> x[i] 

Definition at line 439 of file BotSenseTypes.py.

439  def __getitem__(self, i):
440  """ x.__getitem__(i) <==> x[i] """
441  return self.buf.__getitem__(i)
def BotSense.BotSenseTypes.ByteBuf.__getslice__ (   self,
  i,
  j 
)
x.__getslice__(i, j)  <==> x[i:j] 

Definition at line 445 of file BotSenseTypes.py.

445  def __getslice__(self, i, j):
446  """ x.__getslice__(i, j) <==> x[i:j] """
447  return self.buf.__getslice__(i, j)
def BotSense.BotSenseTypes.ByteBuf.__iadd__ (   self,
  y 
)
x.__iadd__(y)  <==> x+=y 

Definition at line 451 of file BotSenseTypes.py.

451  def __iadd__(self, y):
452  """ x.__iadd__(y) <==> x+=y """
453  z = ByteBuf.bytestring(y)
454  self.buf.__iadd__(z)
455  return self
def BotSense.BotSenseTypes.ByteBuf.__imul__ (   self,
  y 
)
x.__imul__(y)  <==> x*=y 

Definition at line 459 of file BotSenseTypes.py.

459  def __imul__(self, y):
460  """ x.__imul__(y) <==> x*=y """
461  self.buf.__imul__(y)
462  return self
def BotSense.BotSenseTypes.ByteBuf.__iter__ (   self)
x.__iter__()  <==> iter(x) 

Definition at line 466 of file BotSenseTypes.py.

466  def __iter__(self):
467  """ x.__iter__() <==> iter(x) """
468  return self.buf.__iter__()
def BotSense.BotSenseTypes.ByteBuf.__len__ (   self)
x.__len__() <==> len(x)

Number of bytes used in buffer. 

Definition at line 472 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.ByteBuf.buf.

472  def __len__(self):
473  """ x.__len__() <==> len(x)
474 
475  Number of bytes used in buffer.
476  """
477  return len(self.buf)
def BotSense.BotSenseTypes.ByteBuf.__setitem__ (   self,
  i,
  y 
)
x.__setitem__(i, y)  <==> x[i]=y 

Definition at line 487 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.ByteBuf.byte().

487  def __setitem__(self, i, y):
488  """ x.__setitem__(i, y) <==> x[i]=y """
489  z = self.byte(y)
490  self.buf.__setitem__(i, z)
491  return self
def BotSense.BotSenseTypes.ByteBuf.__setslice__ (   self,
  i,
  j,
  y 
)
x.__setslice__(i, j, y)  <==> x[i:j]=y 

Definition at line 495 of file BotSenseTypes.py.

495  def __setslice__(self, i, j, y):
496  """ x.__setslice__(i, j, y) <==> x[i:j]=y """
497  z = ByteBuf.bytestring(y)
498  self.buf.__setslice__(i, j, z)
499  return self
def __setslice__(self, i, j, y)
def BotSense.BotSenseTypes.ByteBuf.__sizeof__ (   self)
x.__sizeof__() -- size of swig object byte buffer, in bytes. 

Definition at line 503 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.ByteBuf._size.

Referenced by BotSense.BotSenseTypes.ByteBuf.sizeof().

503  def __sizeof__(self):
504  """ x.__sizeof__() -- size of swig object byte buffer, in bytes. """
505  return self._size
_size
internal swig object fixed buffer size
def BotSense.BotSenseTypes.ByteBuf.__str__ (   self)
x.__str__() <==> str(x) <==> print x 

Definition at line 481 of file BotSenseTypes.py.

481  def __str__(self):
482  """ x.__str__() <==> str(x) <==> print x """
483  return self.buf.__str__()
def BotSense.BotSenseTypes.ByteBuf.avail (   self)
Available bytes in fixed swig object buffer. 

Definition at line 509 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.ByteBuf._size, and BotSense.BotSenseTypes.ByteBuf.buf.

509  def avail(self):
510  """ Available bytes in fixed swig object buffer. """
511  return self._size - len(self.buf)
_size
internal swig object fixed buffer size
def BotSense.BotSenseTypes.ByteBuf.byte (   val)
static
Static method to convert a value into a byte.

Parameters:
  val   - Value to convert. Value type can be an integer [0,255],
          a string of length 1, or a list of length 1 of element
          type of integer, string, list.

Return:
  On success, returns converted byte value.
  On failure, a BotSenseError exception is raised.

Definition at line 577 of file BotSenseTypes.py.

Referenced by BotSense.BotSenseTypes.ByteBuf.__setitem__().

577  def byte(val):
578  """ Static method to convert a value into a byte.
579 
580  Parameters:
581  val - Value to convert. Value type can be an integer [0,255],
582  a string of length 1, or a list of length 1 of element
583  type of integer, string, list.
584 
585  Return:
586  On success, returns converted byte value.
587  On failure, a BotSenseError exception is raised.
588  """
589  if type(val) == int:
590  if val > 255:
591  raise bsError.BotSenseError(bsCore.BS_ECODE_BAD_VAL, "%s" % str(val))
592  else:
593  return val
594  elif type(val) == str:
595  if len(val) != 1:
596  raise bsError.BotSenseError(bsCore.BS_ECODE_BAD_VAL, "%s" % str(val))
597  else:
598  return ord(val[0])
599  elif type(val) == list:
600  if len(val) != 1:
601  raise bsError.BotSenseError(bsCore.BS_ECODE_BAD_VAL, "%s" % str(val))
602  else:
603  return ByteBuf.byte(val[0])
604  else:
605  raise bsError.BotSenseError(bsCore.BS_ECODE_BAD_VAL, "%s" % str(val))
def BotSense.BotSenseTypes.ByteBuf.bytec (   val)
static
Static method to convert a value into a byte character string.

Parameters:
  val   - Value to convert. Value type can be an integer [0,255],
          a string of length 1, or a list of length 1 of element
          type of integer, string, list.

Return:
  On success, returns converted byte value.
  On failure, a BotSenseError exception is raised.

Definition at line 638 of file BotSenseTypes.py.

638  def bytec(val):
639  """ Static method to convert a value into a byte character string.
640 
641  Parameters:
642  val - Value to convert. Value type can be an integer [0,255],
643  a string of length 1, or a list of length 1 of element
644  type of integer, string, list.
645 
646  Return:
647  On success, returns converted byte value.
648  On failure, a BotSenseError exception is raised.
649  """
650  if type(val) == int:
651  if val > 255:
652  raise bsError.BotSenseError(bsCore.BS_ECODE_BAD_VAL, "%s" % str(val))
653  else:
654  return chr(val)
655  elif type(val) == str:
656  if len(val) != 1:
657  raise bsError.BotSenseError(bsCore.BS_ECODE_BAD_VAL, "%s" % str(val))
658  else:
659  return val[0]
660  elif type(val) == list:
661  if len(val) != 1:
662  raise bsError.BotSenseError(bsCore.BS_ECODE_BAD_VAL, "%s" % str(val))
663  else:
664  return ByteBuf.bytec(val[0])
665  else:
666  raise bsError.BotSenseError(bsCore.BS_ECODE_BAD_VAL, "%s" % str(val))
def BotSense.BotSenseTypes.ByteBuf.bytelist (   seq)
static
Static method to convert a value sequence into a byte list.

Parameters:
  seq     - Sequence of values to convert. Sequence type can be an
            integer [0,255], a string, or a list of elements of
            type integer, string, list.

Return:
  On success, returns converted byte value list.
  On failure, a BotSenseError exception is raised.

Definition at line 610 of file BotSenseTypes.py.

610  def bytelist(seq):
611  """ Static method to convert a value sequence into a byte list.
612 
613  Parameters:
614  seq - Sequence of values to convert. Sequence type can be an
615  integer [0,255], a string, or a list of elements of
616  type integer, string, list.
617 
618  Return:
619  On success, returns converted byte value list.
620  On failure, a BotSenseError exception is raised.
621  """
622  if seq is None:
623  return []
624  elif type(seq) == int:
625  outbuf = [ ByteBuf.byte(seq) ]
626  return outbuf
627  elif type(seq) == str or type(seq) == list:
628  outbuf = []
629  for val in seq:
630  outbuf += [ ByteBuf.byte(val) ]
631  return outbuf
632  else:
633  raise bsError.BotSenseError(bsCore.BS_ECODE_BAD_VAL, "%s" % str(val))
def BotSense.BotSenseTypes.ByteBuf.bytestring (   seq)
static
Static method to convert a value sequence into a byte string.

Parameters:
  seq     - Sequence of values to convert. Sequence type can be an
            integer [0,255], a string, or a list of elements of
            type integer, string, list.

Return:
  On success, returns converted byte value list.
  On failure, a BotSenseError exception is raised.

Definition at line 671 of file BotSenseTypes.py.

671  def bytestring(seq):
672  """ Static method to convert a value sequence into a byte string.
673 
674  Parameters:
675  seq - Sequence of values to convert. Sequence type can be an
676  integer [0,255], a string, or a list of elements of
677  type integer, string, list.
678 
679  Return:
680  On success, returns converted byte value list.
681  On failure, a BotSenseError exception is raised.
682  """
683  if seq is None:
684  return ''
685  elif type(seq) == int:
686  return ByteBuf.bytec(seq)
687  elif type(seq) == str or type(seq) == list:
688  outbuf = ''
689  for val in seq:
690  outbuf += ByteBuf.bytec(val)
691  return outbuf
692  else:
693  raise bsError.BotSenseError(bsCore.BS_ECODE_BAD_VAL, "%s" % str(val))
def BotSense.BotSenseTypes.ByteBuf.Clone (   buf)
static
Smart clone constructor.

If buf is a ByteBuf instance, then simply return buf.
Otherwise convert buf to a ByteBuf instance.

The underlining swig object contents are not touched, so swig copies
will need to be done prior to or after calling a byte_t* core routine.

Parameters:
  buf   - Either a ByteBuf instance or a sequence of values to convert.
          Sequence type can be an integer [0,255], a string, or a list
          of elements of type integer, string, list.

Return:
  Existing or new ByteBuf().

Definition at line 415 of file BotSenseTypes.py.

415  def Clone(buf):
416  """ Smart clone constructor.
417 
418  If buf is a ByteBuf instance, then simply return buf.
419  Otherwise convert buf to a ByteBuf instance.
420 
421  The underlining swig object contents are not touched, so swig copies
422  will need to be done prior to or after calling a byte_t* core routine.
423 
424  Parameters:
425  buf - Either a ByteBuf instance or a sequence of values to convert.
426  Sequence type can be an integer [0,255], a string, or a list
427  of elements of type integer, string, list.
428 
429  Return:
430  Existing or new ByteBuf().
431  """
432  if isinstance(buf, ByteBuf):
433  return buf
434  else:
435  return ByteBuf.Constructor(buf)
def BotSense.BotSenseTypes.ByteBuf.Constructor (   seq)
static
Conversion constructor.

Parameters:
  seq   - Sequence of values to convert. Sequence type can be an
          integer [0,255], a string, or a list of elements of
          type integer, string, list.

Return:
  New initialized ByteBuf().

Definition at line 397 of file BotSenseTypes.py.

397  def Constructor(seq):
398  """ Conversion constructor.
399 
400  Parameters:
401  seq - Sequence of values to convert. Sequence type can be an
402  integer [0,255], a string, or a list of elements of
403  type integer, string, list.
404 
405  Return:
406  New initialized ByteBuf().
407  """
408  buf = ByteBuf.bytestring(seq)
409  bytebuf = ByteBuf(size=len(buf))
410  bytebuf.buf = buf
411  return bytebuf
412 
def BotSense.BotSenseTypes.ByteBuf.copyFromSwigObj (   self,
  n,
  i = 0,
  j = 0 
)
Copy swig object buffer to python buffer.

Parameters:
  n   - Number of bytes to copy.
  i   - Starting source index in swig object buffer.
  j   - Starting destination index in python buffer.

Definition at line 515 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.ByteBuf._size, BotSense.BotSenseTypes.ByteBuf._swigObj, and BotSense.BotSenseTypes.ByteBuf.buf.

515  def copyFromSwigObj(self, n, i=0, j=0):
516  """ Copy swig object buffer to python buffer.
517 
518  Parameters:
519  n - Number of bytes to copy.
520  i - Starting source index in swig object buffer.
521  j - Starting destination index in python buffer.
522  """
523  if i+n > self._size:
524  raise bsError.BotSenseError(bsCore.BS_ECODE_BUF_TOO_SMALL,
525  "copyFromSwigObj: swig object buffer size=%d < %d bytes" % \
526  (self._size, i+n))
527  l = len(self.buf)
528  if l < j+n:
529  self.buf += chr(0) * (j + n - l)
530  s = ''
531  for k in xrange(n):
532  s += chr(bsCore.byteArray_getitem(self._swigObj, i+k))
533  self.buf = self.buf[:j] + s
def copyFromSwigObj(self, n, i=0, j=0)
_size
internal swig object fixed buffer size
_swigObj
internal swig object
def BotSense.BotSenseTypes.ByteBuf.copyToSwigObj (   self,
  n,
  i = 0,
  j = 0 
)
Copy python buffer to instance swig object buffer.

Parameters:
  n   - Number of bytes to copy.
  i   - Starting source index in python buffer.
  j   - Starting destination index in swig object buffer.

Definition at line 537 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.ByteBuf._size, BotSense.BotSenseTypes.ByteBuf._swigObj, and BotSense.BotSenseTypes.ByteBuf.buf.

537  def copyToSwigObj(self, n, i=0, j=0):
538  """ Copy python buffer to instance swig object buffer.
539 
540  Parameters:
541  n - Number of bytes to copy.
542  i - Starting source index in python buffer.
543  j - Starting destination index in swig object buffer.
544  """
545  if i+n > len(self.buf):
546  raise bsError.BotSenseError(bsCore.BS_ECODE_BUF_TOO_SMALL,
547  "copyToSwigObj: python buffer size=%d < %d bytes" % \
548  (len(self.buf), i+n))
549  elif j+n > self._size:
550  raise bsError.BotSenseError(bsCore.BS_ECODE_BUF_TOO_SMALL,
551  "copyToSwigObj: swig object buffer size=%d < %d bytes" % \
552  (self._size, j+n))
553  for k in xrange(n):
554  bsCore.byteArray_setitem(self._swigObj, j+k, ord(self.buf[i+k]))
def copyToSwigObj(self, n, i=0, j=0)
_size
internal swig object fixed buffer size
_swigObj
internal swig object
def BotSense.BotSenseTypes.ByteBuf.getBuffer (   self)
Return python buffer. 

Definition at line 564 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.ByteBuf.buf.

564  def getBuffer(self):
565  """ Return python buffer. """
566  return self.buf
def BotSense.BotSenseTypes.ByteBuf.getSwigObj (   self)
Return raw swig object. 

Definition at line 558 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.ByteBuf._swigObj.

558  def getSwigObj(self):
559  """ Return raw swig object. """
560  return self._swigObj
_swigObj
internal swig object
def BotSense.BotSenseTypes.ByteBuf.sizeof (   self)
Size of fixed swig object byte buffer, in bytes. 

Definition at line 570 of file BotSenseTypes.py.

References BotSense.BotSenseTypes.BsClient.__sizeof__(), and BotSense.BotSenseTypes.ByteBuf.__sizeof__().

570  def sizeof(self):
571  """ Size of fixed swig object byte buffer, in bytes. """
572  return self.__sizeof__()

The documentation for this class was generated from the following file: