Example #1
0
#
# You should have received a copy of the GNU General Public License
# along with Warzone 2100; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
###############################################################################

__all__ = ['Protocol4']

from twisted.internet import defer
from twisted.python import log
from socketrpc.twisted_srpc import SocketRPCProtocol, set_serializer, Fault

from wzlobby import settings

set_serializer('bson')

NO_GAME = -402
NOT_ACCEPTABLE = -403
WRONG_LOGIN = -404
LOGIN_REQUIRED = -405
SESSION_INVALID = -406

class Protocol4(SocketRPCProtocol):
    game = None

    lobbyVersion = 4

    def connectionMade(self):
        SocketRPCProtocol.connectionMade(self)
# along with Warzone 2100; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
###############################################################################

# This is the V4 Variant of the Protocol - BSON.

__all__ = ['Protocol4']

from twisted.internet import defer
from twisted.python import log
from socketrpc.twisted_srpc import SocketRPCProtocol, set_serializer, Fault

from wzlobby import settings

set_serializer('jsonlib')

NO_GAME = -402
NOT_ACCEPTABLE = -403
WRONG_LOGIN = -404
LOGIN_REQUIRED = -405
SESSION_INVALID = -406

class Protocol4(SocketRPCProtocol):
    game = None

    lobbyVersion = 4

    def connectionMade(self):
        SocketRPCProtocol.connectionMade(self)
Example #3
0
def start(options):
    log.startLogging(sys.stdout)

    SocketRPCProtocol.debug = options['debug']
    set_serializer(options['serializer'])

    mode = options['mode']
    if mode == 'server':
        class ServerProtocol(SocketRPCProtocol):
            def docall_echo(self, args):
                return defer.succeed(args)

            def docall_bounce(self, args):
                """ This is just here to show that server is able to do
                    a "call" on the client
                """
                return self.call(args[0], args[1])

            def docall_largedata(self, args):
                return "\0" * 1024 * 1024 * 3

        f = protocol.ServerFactory()
        f.protocol = ServerProtocol
        reactor.listenTCP(options['port'], f)

    elif mode.startswith('client'):
        params = {'g': 'is',
                  'e': 'very',
                  'v': 'cool',
                  'e': 'fast',
                  'n': 'and',
                  't': 'sexy!'}

        class ClientProtocol(SocketRPCProtocol):
            def docall_log(self, args):
                log.msg('"%s" logged from the server' % args[1])
                return '%s: logged on the client, facility: %d' % (args[1], args[0])

        def gotProtocol(client, mode):
            if mode == 'clientbounce':
                client.call('bounce', ['log', (60, 'test')])

            elif mode == 'clientlarge':
                dl = []
                for i in xrange(options['requests']):
                    dl.append(client.call('largedata', []))
                dl = defer.DeferredList(dl)
                dl.addCallback(lambda ign: reactor.stop())

            elif mode == 'clientparallel':
                def run100():
                    dl = []

                    for i in xrange(100):
                        dl.append(client.call('echo', params))

                    dl = defer.DeferredList(dl)

                    return

                for i in xrange(options['requests'] / 100):
                    run100()

            elif mode == 'clientserial':
                d = defer.Deferred()

                for i in xrange(options['requests']):
                    d.addCallback(lambda ign: client.call('echo', params))

                d.addCallback(lambda ign: reactor.stop())
                d.callback(None)

        client = protocol.ClientCreator(reactor, ClientProtocol)
        client.connectTCP(options['host'], options['port']).addCallback(gotProtocol, mode)

    reactor.run()
# along with Warzone 2100; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
###############################################################################

# This is the V4 Variant of the Protocol - BSON.

__all__ = ['Protocol4']

from twisted.internet import defer
from twisted.python import log
from socketrpc.twisted_srpc import SocketRPCProtocol, set_serializer, Fault

from wzlobby import settings

set_serializer('jsonlib')

NO_GAME = -402
NOT_ACCEPTABLE = -403
WRONG_LOGIN = -404
LOGIN_REQUIRED = -405
SESSION_INVALID = -406


class Protocol4(SocketRPCProtocol):
    game = None

    lobbyVersion = 4

    def connectionMade(self):
        SocketRPCProtocol.connectionMade(self)
Example #5
0
import supybot.plugins as plugins
import supybot.ircdb as ircdb
import supybot.ircutils as ircutils
import supybot.callbacks as callbacks

# To notify all channels.
import supybot.world as world
import supybot.ircmsgs as ircmsgs

import struct
from supybot.drivers.Twisted import reactor
from twisted.internet.task import LoopingCall

from socketrpc.twisted_srpc import SocketRPCClient, set_serializer

set_serializer("jsonlib")


class LobbyClient(SocketRPCClient):
    def __init__(self, user, password):
        self._user = user
        self._password = password

    def clientConnectionMade(self, factory):
        SocketRPCClient.clientConnectionMade(self, factory)

        # Send the version command first.
        self.remote.transport.write(struct.pack("!8sI", "version", 4))

        # now login
        self.call("login", username=self._user, password=self._password)
Example #6
0
#
# You should have received a copy of the GNU General Public License
# along with Warzone 2100; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
###############################################################################

__all__ = ['Protocol4']

from twisted.internet import defer
from twisted.python import log
from socketrpc.twisted_srpc import SocketRPCProtocol, set_serializer, Fault

from wzlobby import settings

set_serializer('bson')

NO_GAME = -402
NOT_ACCEPTABLE = -403
WRONG_LOGIN = -404
LOGIN_REQUIRED = -405
SESSION_INVALID = -406


class Protocol4(SocketRPCProtocol):
    game = None

    lobbyVersion = 4

    def connectionMade(self):
        SocketRPCProtocol.connectionMade(self)
Example #7
0
import supybot.plugins as plugins
import supybot.ircdb as ircdb
import supybot.ircutils as ircutils
import supybot.callbacks as callbacks

# To notify all channels.
import supybot.world as world
import supybot.ircmsgs as ircmsgs

import struct
from supybot.drivers.Twisted import reactor
from twisted.internet.task import LoopingCall

from socketrpc.twisted_srpc import SocketRPCClient, set_serializer

set_serializer("jsonlib")

class LobbyClient(SocketRPCClient):
    def __init__(self, user, password):
        self._user = user
        self._password = password
        
    def clientConnectionMade(self, factory):
        SocketRPCClient.clientConnectionMade(self, factory)

        # Send the version command first.
        self.remote.transport.write(struct.pack("!8sI", "version", 4))
        
        # now login
        self.call("login", username=self._user, password=self._password)