# -*- test-case-name: xmantissa.test.test_q2q -*-
from axiom import item, attributes
from vertex import q2qclient
from xmantissa import ixmantissa
class UniversalEndpointService(item.Item):
"""
"""
typeName = 'mantissa_q2q_service'
schemaVersion = 1
q2qPortNumber = attributes.integer(default=8787)
inboundTCPPortNumber = attributes.integer(default=None)
publicIP = attributes.integer(default=None)
udpEnabled = attributes.integer(default=False)
certificatePath = attributes.path(default=None)
_svcInst = attributes.inmemory()
def __init__(self, **kw):
super(UniversalEndpointService, self).__init__(**kw)
if self.certificatePath is None:
self.certificatePath = self.store.newDirectory(str(self.storeID), 'certificates')
if not self.certificatePath.exists():
self.certificatePath.makedirs()
def activate(self):
self._svcInst = None
def _makeService(self):
self._svcInst = q2qclient.ClientQ2QService(
self.certificatePath.path,
publicIP=self.publicIP,
inboundTCPPortnum=self.inboundTCPPortNumber,
udpEnabled=self.udpEnabled,
)
def _getService(self):
if self._svcInst is None:
self._makeService()
return self._svcInst
def installOn(self, other):
other.powerUp(self, ixmantissa.IQ2QService)
def listenQ2Q(self, fromAddress, protocolsToFactories, serverDescription):
return self._getService().listenQ2Q(fromAddress,
protocolsToFactories,
serverDescription)
def connectQ2Q(self, fromAddress, toAddress, protocolName,
protocolFactory, usePrivateCertificate=None,
fakeFromDomain=None, chooser=None):
return self._getService().connectQ2Q(
fromAddress, toAddress, protocolName, protocolFactory,
usePrivateCertificate, fakeFromDomain, chooser)
syntax highlighted by Code2HTML, v. 0.9.1