Skip to content
Snippets Groups Projects
Commit ab444298 authored by Anael Beutot's avatar Anael Beutot
Browse files

Moved SocketBuffer in utils.py.

parent 3aa5c928
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,6 @@ import logging
from os.path import exists as path_exists
from time import sleep
from hashlib import md5
from collections import deque
from StringIO import StringIO
from subprocess import CalledProcessError
from xml.etree import ElementTree as et
......@@ -15,7 +14,7 @@ import pyev
from cloudcontrol.node.exc import TunnelError, DRBDAllocationError, DRBDError
from cloudcontrol.node.jobs import BaseThreadedJob
from cloudcontrol.node.utils import subproc_call
from cloudcontrol.node.utils import SocketBuffer, subproc_call
logger = logging.getLogger(__name__)
......@@ -249,61 +248,6 @@ class ExportVolume(BaseThreadedJob):
self.clean_fds()
class SocketBuffer(deque):
"""Holds bytes in a list.
This class don't handle maximum size but instead give help like handling
count automatically.
"""
def __init__(self, max_len=8 * 64 * 1024):
deque.__init__(self)
self.max_len = max_len
self.current_len = 0
def append(self, x):
deque.append(self, x)
self.current_len += len(x)
def appendleft(self, x):
deque.appendleft(self, x)
self.current_len += len(x)
def clear(self):
deque.clear(self)
self.current_len = 0
def extend(self, iterable):
raise NotImplementedError
def extendleft(self, iterable):
raise NotImplementedError
def pop(self):
elt = deque.pop(self)
self.current_len -= len(elt)
return elt
def popleft(self):
elt = deque.popleft(self)
self.current_len -= len(elt)
return elt
def remove(value):
raise NotImplementedError
def reverse(self):
raise NotImplementedError
def rotate(self, n):
raise NotImplementedError
def is_full(self):
return self.current_len >= self.max_len
def is_empty(self):
return self.current_len == 0
class TCPTunnel(object):
"""Handles a TCP tunnel."""
......
import subprocess
from collections import deque
def and_(iter):
......@@ -25,3 +26,58 @@ def subproc_call(args, stdin=None):
raise subprocess.CalledProcessError(proc.returncode,
'Error while executing command')
return result
class SocketBuffer(deque):
"""Holds bytes in a list.
This class don't handle maximum size but instead give help like handling
count automatically.
"""
def __init__(self, max_len=8 * 64 * 1024):
deque.__init__(self)
self.max_len = max_len
self.current_len = 0
def append(self, x):
deque.append(self, x)
self.current_len += len(x)
def appendleft(self, x):
deque.appendleft(self, x)
self.current_len += len(x)
def clear(self):
deque.clear(self)
self.current_len = 0
def extend(self, iterable):
raise NotImplementedError
def extendleft(self, iterable):
raise NotImplementedError
def pop(self):
elt = deque.pop(self)
self.current_len -= len(elt)
return elt
def popleft(self):
elt = deque.popleft(self)
self.current_len -= len(elt)
return elt
def remove(value):
raise NotImplementedError
def reverse(self):
raise NotImplementedError
def rotate(self, n):
raise NotImplementedError
def is_full(self):
return self.current_len >= self.max_len
def is_empty(self):
return self.current_len == 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment