Example #1
0
 def connect(self, serverHost, serverPort, messageCallback = None, requestCallback = None, errorCallback = None):
     if self.connected: return
     self.messageCallback = messageCallback
     self.requestCallback = requestCallback
     self.errorCallback   = errorCallback
     try:
         self.serverHost = socket.gethostbyname(serverHost)
         self.serverPort = serverPort
         addr = ( self.serverHost, self.serverPort )
         self.socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
         linger = struct.pack('ii', 1, 0)
         self.socket.setsockopt( socket.SOL_SOCKET, socket.SO_KEEPALIVE, 0 )
         self.socket.setsockopt( socket.SOL_SOCKET, socket.SO_LINGER, linger )
         self.socket.connect( addr )
         # Once connected, the first thing is to obtain the client key,
         # after that conversation can be started
         myClientKey = self.socket.recv(2)
         myClientKey ,= struct.unpack( IPC_KEY_ENCODING, myClientKey )
         self.clientKey = int(myClientKey)
         LOG( self.name + ": Obtained client key: " + repr(self.clientKey), level = LOG_COMM)
         self.reader = IPCinput( self.name, self.socket, self.clientKey, self )
         self.writer = IPCoutput( self.name, self.socket, self.clientKey, self )
         # Start the input thread
         self.reader.start()       
         LOG( self.name + ": Client channel ready", level = LOG_COMM)
         self.connected = True
     except BaseException,ex:
         LOG( self.name + ": Setup failed, disconnecting", LOG_ERROR, level = LOG_COMM)
         self.disconnect()
         raise ex
Example #2
0
 def connect(self,
             serverHost,
             serverPort,
             messageCallback=None,
             requestCallback=None,
             errorCallback=None):
     if self.connected: return
     self.messageCallback = messageCallback
     self.requestCallback = requestCallback
     self.errorCallback = errorCallback
     try:
         self.serverHost = socket.gethostbyname(serverHost)
         self.serverPort = serverPort
         addr = (self.serverHost, self.serverPort)
         self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         linger = struct.pack('ii', 1, 0)
         self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 0)
         self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, linger)
         self.socket.connect(addr)
         # Once connected, the first thing is to obtain the client key,
         # after that conversation can be started
         myClientKey = self.socket.recv(2)
         myClientKey, = struct.unpack(IPC_KEY_ENCODING, myClientKey)
         self.clientKey = int(myClientKey)
         LOG(self.name + ": Obtained client key: " + repr(self.clientKey),
             level=LOG_COMM)
         self.reader = IPCinput(self.name, self.socket, self.clientKey,
                                self)
         self.writer = IPCoutput(self.name, self.socket, self.clientKey,
                                 self)
         # Start the input thread
         self.reader.start()
         LOG(self.name + ": Client channel ready", level=LOG_COMM)
         self.connected = True
     except BaseException, ex:
         LOG(self.name + ": Setup failed, disconnecting",
             LOG_ERROR,
             level=LOG_COMM)
         self.disconnect()
         raise ex
Example #3
0
class IPCinterfaceClient(object):

    # Interface name
    name = None

    # Callbacks for processing incoming requests, messages and errors
    messageCallback = None
    requestCallback = None
    errorCallback = None

    # Connectivity data
    clientKey = None
    serverHost = None
    serverPort = None

    # Input reader and output writer for the server
    writer = None
    reader = None

    # Connected flag
    connected = False

    # Connection socket
    socket = None

    # Mailbox stores for a while the responses
    mailbox = None

    # Outgoing request sequence count
    reqSeq = None
    reqLock = None

    #===========================================================================
    def __init__(self, name):
        self.name = name
        self.clientKey = None
        self.serverHost = None
        self.serverPort = None

        self.messageCallback = None
        self.requestCallback = None
        self.errorCallback = None

        self.writer = None
        self.reader = None

        self.socket = None

        self.mailbox = Mailbox(name)

        self.reqSeq = 0
        self.reqLock = thread.allocate_lock()

        self.connected = False

    #===========================================================================
    def connect(self,
                serverHost,
                serverPort,
                messageCallback=None,
                requestCallback=None,
                errorCallback=None):
        if self.connected: return
        self.messageCallback = messageCallback
        self.requestCallback = requestCallback
        self.errorCallback = errorCallback
        try:
            self.serverHost = socket.gethostbyname(serverHost)
            self.serverPort = serverPort
            addr = (self.serverHost, self.serverPort)
            self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            linger = struct.pack('ii', 1, 0)
            self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 0)
            self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, linger)
            self.socket.connect(addr)
            # Once connected, the first thing is to obtain the client key,
            # after that conversation can be started
            myClientKey = self.socket.recv(2)
            myClientKey, = struct.unpack(IPC_KEY_ENCODING, myClientKey)
            self.clientKey = int(myClientKey)
            LOG(self.name + ": Obtained client key: " + repr(self.clientKey),
                level=LOG_COMM)
            self.reader = IPCinput(self.name, self.socket, self.clientKey,
                                   self)
            self.writer = IPCoutput(self.name, self.socket, self.clientKey,
                                    self)
            # Start the input thread
            self.reader.start()
            LOG(self.name + ": Client channel ready", level=LOG_COMM)
            self.connected = True
        except BaseException, ex:
            LOG(self.name + ": Setup failed, disconnecting",
                LOG_ERROR,
                level=LOG_COMM)
            self.disconnect()
            raise ex
Example #4
0
class IPCinterfaceClient(object):

    # Interface name
    name = None

    # Callbacks for processing incoming requests, messages and errors
    messageCallback = None
    requestCallback = None
    errorCallback   = None

    # Connectivity data
    clientKey       = None
    serverHost      = None
    serverPort      = None
    
    # Input reader and output writer for the server
    writer          = None
    reader          = None
    
    # Connected flag
    connected       = False
    
    # Connection socket
    socket          = None
    
    # Mailbox stores for a while the responses
    mailbox         = None

    # Outgoing request sequence count
    reqSeq          = None
    reqLock         = None
    
    #===========================================================================
    def __init__(self, name):
        self.name = name
        self.clientKey  = None
        self.serverHost = None
        self.serverPort = None
        
        self.messageCallback = None
        self.requestCallback = None
        self.errorCallback   = None
        
        self.writer = None
        self.reader = None

        self.socket = None

        self.mailbox  = Mailbox(name)
        
        self.reqSeq = 0
        self.reqLock = thread.allocate_lock()
        
        self.connected = False

    #===========================================================================
    def connect(self, serverHost, serverPort, messageCallback = None, requestCallback = None, errorCallback = None):
        if self.connected: return
        self.messageCallback = messageCallback
        self.requestCallback = requestCallback
        self.errorCallback   = errorCallback
        try:
            self.serverHost = socket.gethostbyname(serverHost)
            self.serverPort = serverPort
            addr = ( self.serverHost, self.serverPort )
            self.socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
            linger = struct.pack('ii', 1, 0)
            self.socket.setsockopt( socket.SOL_SOCKET, socket.SO_KEEPALIVE, 0 )
            self.socket.setsockopt( socket.SOL_SOCKET, socket.SO_LINGER, linger )
            self.socket.connect( addr )
            # Once connected, the first thing is to obtain the client key,
            # after that conversation can be started
            myClientKey = self.socket.recv(2)
            myClientKey ,= struct.unpack( IPC_KEY_ENCODING, myClientKey )
            self.clientKey = int(myClientKey)
            LOG( self.name + ": Obtained client key: " + repr(self.clientKey), level = LOG_COMM)
            self.reader = IPCinput( self.name, self.socket, self.clientKey, self )
            self.writer = IPCoutput( self.name, self.socket, self.clientKey, self )
            # Start the input thread
            self.reader.start()       
            LOG( self.name + ": Client channel ready", level = LOG_COMM)
            self.connected = True
        except BaseException,ex:
            LOG( self.name + ": Setup failed, disconnecting", LOG_ERROR, level = LOG_COMM)
            self.disconnect()
            raise ex