daemon/core/broker.py
def recv(self, sock, host):
        ''' Receive data on an emulation server socket and broadcast it to
            all connected session handlers. Returns the length of data recevied
            and forwarded. Return value of zero indicates the socket has closed
            and should be removed from the self.servers dict.
        '''
        msghdr = sock.recv(coreapi.CoreMessage.hdrsiz)
        if len(msghdr) == 0:
            # server disconnected
            sock.close()
            return 0
        if len(msghdr) != coreapi.CoreMessage.hdrsiz:
            if self.verbose:
                self.session.info("warning: broker received not enough data " \
                                  "len=%s" % len(msghdr))
            return len(msghdr)

        msgtype, msgflags, msglen = coreapi.CoreMessage.unpackhdr(msghdr)
        msgdata = sock.recv(msglen)
        data = msghdr + msgdata
        count = None
        # snoop exec response for remote interactive TTYs
        if msgtype == coreapi.CORE_API_EXEC_MSG and \
           msgflags & coreapi.CORE_API_TTY_FLAG:
            data = self.fixupremotetty(msghdr, msgdata, host)
        elif msgtype == coreapi.CORE_API_NODE_MSG:
            # snoop node delete response to decrement node counts
            if msgflags & coreapi.CORE_API_DEL_FLAG:
                msg = coreapi.CoreNodeMessage(msgflags, msghdr, msgdata)
                nodenum = msg.gettlv(coreapi.CORE_TLV_NODE_NUMBER)
                if nodenum is not None:
                    count = self.delnodemap(sock, nodenum)
            # snoop node add response to increment booted node count
            # (only CoreNodes send these response messages)
            elif msgflags & \
                (coreapi.CORE_API_ADD_FLAG | coreapi.CORE_API_LOC_FLAG):
                self.incrbootcount()
                self.session.checkruntime()
        elif msgtype == coreapi.CORE_API_LINK_MSG:
            # this allows green link lines for remote WLANs
            msg = coreapi.CoreLinkMessage(msgflags, msghdr, msgdata)
            self.session.sdt.handledistributed(msg)

        self.session.broadcastraw(None, data)
        if count is not None and count < 1:
            return 0
        else:
            return len(data)
 Receive data on an emulation server socket and broadcast it to
            all connected session handlers. Returns the length of data recevied
            and forwarded. Return value of zero indicates the socket has closed
            and should be removed from the self.servers dict.
        
Receive data on an emulation server socket and broadcast it to
all connected session handlers. Returns the length of data recevied
and forwarded. Return value of zero indicates the socket has closed
and should be removed from the self.servers dict.
Receive data on an emulation server socket and broadcast it to all connected session handlers . Returns the length of data recevied and forwarded . Return value of zero indicates the socket has closed and should be removed from the self . servers dict .
def recv(self, sock, host):
        msghdr = sock.recv(coreapi.CoreMessage.hdrsiz)
        if len(msghdr) == 0:
            sock.close()
            return 0
        if len(msghdr) != coreapi.CoreMessage.hdrsiz:
            if self.verbose:
                self.session.info("warning: broker received not enough data " \
                                  "len=%s" % len(msghdr))
            return len(msghdr)
        msgtype, msgflags, msglen = coreapi.CoreMessage.unpackhdr(msghdr)
        msgdata = sock.recv(msglen)
        data = msghdr + msgdata
        count = None
        if msgtype == coreapi.CORE_API_EXEC_MSG and \
           msgflags & coreapi.CORE_API_TTY_FLAG:
            data = self.fixupremotetty(msghdr, msgdata, host)
        elif msgtype == coreapi.CORE_API_NODE_MSG:
            if msgflags & coreapi.CORE_API_DEL_FLAG:
                msg = coreapi.CoreNodeMessage(msgflags, msghdr, msgdata)
                nodenum = msg.gettlv(coreapi.CORE_TLV_NODE_NUMBER)
                if nodenum is not None:
                    count = self.delnodemap(sock, nodenum)
            elif msgflags & \
                (coreapi.CORE_API_ADD_FLAG | coreapi.CORE_API_LOC_FLAG):
                self.incrbootcount()
                self.session.checkruntime()
        elif msgtype == coreapi.CORE_API_LINK_MSG:
            msg = coreapi.CoreLinkMessage(msgflags, msghdr, msgdata)
            self.session.sdt.handledistributed(msg)
        self.session.broadcastraw(None, data)
        if count is not None and count < 1:
            return 0
        else:
            return len(data)
def recv ( self , sock , host ) : msghdr = sock . recv ( coreapi . CoreMessage . hdrsiz ) if len ( msghdr ) == 0 : sock . close ( ) return 0 if len ( msghdr ) != coreapi . CoreMessage . hdrsiz : if self . verbose : self . session . info ( "warning: broker received not enough data " "len=%s" % len ( msghdr ) ) return len ( msghdr ) msgtype , msgflags , msglen = coreapi . CoreMessage . unpackhdr ( msghdr ) msgdata = sock . recv ( msglen ) data = msghdr + msgdata count = None if msgtype == coreapi . CORE_API_EXEC_MSG and msgflags & coreapi . CORE_API_TTY_FLAG : data = self . fixupremotetty ( msghdr , msgdata , host ) elif msgtype == coreapi . CORE_API_NODE_MSG : if msgflags & coreapi . CORE_API_DEL_FLAG : msg = coreapi . CoreNodeMessage ( msgflags , msghdr , msgdata ) nodenum = msg . gettlv ( coreapi . CORE_TLV_NODE_NUMBER ) if nodenum is not None : count = self . delnodemap ( sock , nodenum ) elif msgflags & ( coreapi . CORE_API_ADD_FLAG | coreapi . CORE_API_LOC_FLAG ) : self . incrbootcount ( ) self . session . checkruntime ( ) elif msgtype == coreapi . CORE_API_LINK_MSG : msg = coreapi . CoreLinkMessage ( msgflags , msghdr , msgdata ) self . session . sdt . handledistributed ( msg ) self . session . broadcastraw ( None , data ) if count is not None and count < 1 : return 0 else : return len ( data )
Receive data on an emulation server socket and broadcast it to
all connected session handlers.
Receive data on an emulation server socket and broadcast it to all connected session handlers .
''' Receive data on an emulation server socket and broadcast it to
            all connected session handlers. Returns the length of data recevied
            and forwarded. Return value of zero indicates the socket has closed
            and should be removed from the self.servers dict.
        ''' # server disconnected # snoop exec response for remote interactive TTYs # snoop node delete response to decrement node counts # snoop node add response to increment booted node count # (only CoreNodes send these response messages) # this allows green link lines for remote WLANs
self
sock
host