Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions ipcqueue/posixmq.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
Interprocess POSIX message queue implementation.
"""

from .serializers import PickleSerializer
from typing import Type

from .serializers import PickleSerializer, SerializerBase

try:
import Queue as queue
Expand Down Expand Up @@ -73,7 +75,7 @@ class Queue(object):
POSIX message queue.
"""

def __init__(self, name, maxsize=10, maxmsgsize=1024, serializer=PickleSerializer):
def __init__(self, name, maxsize=10, maxmsgsize=1024, serializer: Type[SerializerBase]=PickleSerializer):
"""
Constructor for message queue. *name* is an unique identifier of the
queue, must starts with ``/``. *maxsize* is an integer that sets
Expand Down
15 changes: 15 additions & 0 deletions ipcqueue/serializers.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
import abc
from typing import Any

try:
import cPickle as pickle
except ImportError:
import pickle


class SerializerBase(abc.ABC):
@staticmethod
@abc.abstractmethod
def dumps(obj) -> bytes:
raise NotImplementedError()

@staticmethod
@abc.abstractmethod
def loads(obj) -> Any:
raise NotImplementedError()


class PickleSerializer:
@staticmethod
def dumps(obj):
Expand Down
6 changes: 4 additions & 2 deletions ipcqueue/sysvmq.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
Interprocess SYS V message queue implementation.
"""

from .serializers import PickleSerializer
from typing import Type

from .serializers import PickleSerializer, SerializerBase

try:
import Queue as queue
Expand Down Expand Up @@ -58,7 +60,7 @@ class Queue(object):
SYS V message queue.
"""

def __init__(self, key=None, max_bytes=None, serializer=PickleSerializer):
def __init__(self, key=None, max_bytes=None, serializer: Type[SerializerBase]=PickleSerializer):
"""
Constructor for message queue. *key* is an unique identifier of
the queue, must be positive number or ``0`` for private queue.
Expand Down