⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpd.py

📁 fortran并行计算包
💻 PY
📖 第 1 页 / 共 5 页
字号:
                mpdtid = Thread(target=self.runmainloop)                mpdtid.start()                # signals must be handled in main thread; thus we permit timeout of join                while mpdtid.isAlive():                    mpdtid.join(2)   # come out sometimes and handle signals                if self.exiting:                    break                if self.conSock:                    msgToSend = { 'cmd' : 'restarting_mpd' }                    self.conSock.msgToSend.send_dict_msg(msgToSend)                    self.streamHandler.del_handler(self.conSock)                    self.conSock.close()                    self.conSock = 0    def runmainloop(self):        # Main Loop        while 1:            if self.spawnQ  and  not self.spawnInProgress:                self.ring.rhsSock.send_dict_msg(self.spawnQ[0])                self.spawnQ = self.spawnQ[1:]                self.spawnInProgress = 1                continue            rv = self.streamHandler.handle_active_streams(timeout=8.0)            if rv[0] < 0:                if type(rv[1]) == ClassType  and  rv[1] == KeyboardInterrupt: # ^C                    sys.exit(-1)            if self.exiting:                break            if rv[0] == 0:                if self.pulse_cntr == 0  and  self.ring.rhsSock:                    self.ring.rhsSock.send_dict_msg({'cmd':'pulse'})                self.pulse_cntr += 1            if self.pulse_cntr >= 3:                if self.ring.rhsSock:  # rhs must have disappeared                    self.streamHandler.del_handler(self.ring.rhsSock)                    self.ring.rhsSock.close()                    self.ring.rhsSock = 0                if self.ring.lhsSock:                    self.streamHandler.del_handler(self.ring.lhsSock)                    self.ring.lhsSock.close()                    self.ring.lhsSock = 0                mpd_print(1,'no pulse_ack from rhs; re-entering ring')                rc = self.ring.reenter_ring(lhsHandler=self.handle_lhs_input,                                            rhsHandler=self.handle_rhs_input,                                            ntries=16)                if rc == 0:                    mpd_print(1,'back in ring')		else:                    mpd_print(1,'failed to reenter ring')                    sys.exit(-1)                self.pulse_cntr = 0        mpd_close_zc()  # only does something if we have zc    def usage(self):        print __doc__        print "This version of mpd is", mpd_version()        sys.exit(-1)    def cleanup(self):        try:            mpd_print(0, "CLEANING UP" )            if syslog_module_available:                syslog.syslog(syslog.LOG_INFO,"mpd ending mpdid=%s (inside cleanup)" % \                              (self.myId) )                syslog.closelog()            if self.conListenSock:    # only del if I created                os.unlink(self.conListenSock.conFilename)        except:            pass    def get_parms_from_cmdline(self):        global mpd_dbg_level        argidx = 1        while argidx < len(sys.argv):            if sys.argv[argidx] == '--help':                self.usage()                argidx += 1            elif sys.argv[argidx] == '-h':                if len(sys.argv) < 3:                    self.usage()                self.parmdb[('cmdline','MPD_ENTRY_IFHN')] = sys.argv[argidx+1]                argidx += 2            elif sys.argv[argidx].startswith('--host'):                try:                    entryHost = sys.argv[argidx].split('=',1)[1]                except:                    print 'failed to parse --host option'                    self.usage()                self.parmdb[('cmdline','MPD_ENTRY_IFHN')] = entryHost                argidx += 1            elif sys.argv[argidx] == '-p':                if argidx >= (len(sys.argv)-1):                    print 'missing arg for -p'                    sys.exit(-1)                if not sys.argv[argidx+1].isdigit():                    print 'invalid port %s ; must be numeric' % (sys.argv[argidx+1])                    sys.exit(-1)                self.parmdb[('cmdline','MPD_ENTRY_PORT')] = int(sys.argv[argidx+1])                argidx += 2            elif sys.argv[argidx].startswith('--port'):                try:                    entryPort = sys.argv[argidx].split('=',1)[1]                except:                    print 'failed to parse --port option'                    self.usage()                if not entryPort.isdigit():                    print 'invalid port %s ; must be numeric' % (entryPort)                    sys.exit(-1)                self.parmdb[('cmdline','MPD_ENTRY_PORT')] = int(entryPort)                argidx += 1            elif sys.argv[argidx].startswith('--ncpus'):                try:                    NCPUs = sys.argv[argidx].split('=',1)[1]                except:                    print 'failed to parse --ncpus option'                    self.usage()                if not NCPUs.isdigit():                    print 'invalid ncpus %s ; must be numeric' % (NCPUs)                    sys.exit(-1)                self.parmdb[('cmdline','MPD_NCPUS')] = int(NCPUs)                argidx += 1            elif sys.argv[argidx].startswith('--pid'):                try:                    splitPid = sys.argv[argidx].split('=')                except:                    print 'failed to parse --pid option'                    self.usage()                if len(splitPid) == 1  or  not splitPid[1]:                    pidFilename = '/var/run/mpd.pid'                else:                    pidFilename = splitPid[1]                self.parmdb[('cmdline','MPD_PID_FILENAME')] = pidFilename                argidx += 1            elif sys.argv[argidx].startswith('--ifhn'):                try:                    ifhn = sys.argv[argidx].split('=',1)[1]                except:                    print 'failed to parse --ifhn option'                    self.usage()                try:                    hostinfo = socket.gethostbyname_ex(ifhn)                    ifhn = hostinfo[2][0]                except:                    print 'mpd failed: gethostbyname_ex failed for %s' % (ifhn)                    sys.exit(-1)                self.parmdb[('cmdline','MPD_MY_IFHN')] = ifhn                argidx += 1            elif sys.argv[argidx] == '-l':                if argidx >= (len(sys.argv)-1):                    print 'missing arg for -l'                    sys.exit(-1)                if not sys.argv[argidx+1].isdigit():                    print 'invalid listenport %s ; must be numeric' % (sys.argv[argidx+1])                    sys.exit(-1)                self.parmdb[('cmdline','MPD_LISTEN_PORT')] = int(sys.argv[argidx+1])                argidx += 2            elif sys.argv[argidx].startswith('--listenport'):                try:                    myListenPort = sys.argv[argidx].split('=',1)[1]                except:                    print 'failed to parse --listenport option'                    self.usage()                if not myListenPort.isdigit():                    print 'invalid listenport %s ; must be numeric' % (myListenPort)                    sys.exit(-1)                self.parmdb[('cmdline','MPD_LISTEN_PORT')] = int(myListenPort)                argidx += 1            elif sys.argv[argidx] == '-hp':                if argidx >= (len(sys.argv)-1):                    print 'missing arg for -hp'                    sys.exit(-1)                try:                    (entryIfhn,entryPort) = sys.argv[argidx+1].split('_')                except:                    print 'invalid entry host: %s' % (sys.argv[argidx+1])                    sys.exit(-1)                if not entryPort.isdigit():                    print 'invalid port %s ; must be numeric' % (sys.argv[argidx+1])                    sys.exit(-1)                self.parmdb[('cmdline','MPD_ENTRY_IFHN')] = entryIfhn                self.parmdb[('cmdline','MPD_ENTRY_PORT')] = int(entryPort)                argidx += 2            elif sys.argv[argidx] == '-t'  or  sys.argv[argidx] == '--trace':                self.parmdb[('cmdline','MPD_TRACE_FLAG')] = 1                argidx += 1            elif sys.argv[argidx] == '--debug':                mpd_set_dbg_level(1)                argidx += 1            elif sys.argv[argidx] == '-n'  or  sys.argv[argidx] == '--noconsole':                self.parmdb[('cmdline','MPD_CONSOLE_FLAG')] = 0                argidx += 1            elif sys.argv[argidx] == '-e'  or  sys.argv[argidx] == '--echo':                self.parmdb[('cmdline','MPD_ECHO_PORT_FLAG')] = 1                 argidx += 1            elif sys.argv[argidx] == '-d'  or  sys.argv[argidx] == '--daemon':                self.parmdb[('cmdline','MPD_DAEMON_FLAG')] = 1                 argidx += 1            elif sys.argv[argidx] == '-b'  or  sys.argv[argidx] == '--bulletproof':                self.parmdb[('cmdline','MPD_BULLETPROOF_FLAG')] = 1                 argidx += 1            elif sys.argv[argidx] == '-zc':                if argidx >= (len(sys.argv)-1):                    print 'missing arg for -zc'                    sys.exit(-1)                if not sys.argv[argidx+1].isdigit():                    print 'invalid arg for -zc %s ; must be numeric' % (sys.argv[argidx+1])                    sys.exit(-1)                intarg = int(sys.argv[argidx+1])                if intarg < 1:                    print 'invalid arg for -zc %s ; must be >= 1' % (sys.argv[argidx+1])                    sys.exit(-1)                self.parmdb[('cmdline','MPD_ZC')] = intarg                argidx += 2            else:                print 'unrecognized arg: %s' % (sys.argv[argidx])                sys.exit(-1)        if (self.parmdb['MPD_ENTRY_IFHN']  and  not self.parmdb['MPD_ENTRY_PORT']) \        or (self.parmdb['MPD_ENTRY_PORT']  and  not self.parmdb['MPD_ENTRY_IFHN']):            print 'host and port must be specified together'            sys.exit(-1)    def handle_console_connection(self,sock):        if not self.conSock:            (self.conSock,newConnAddr) = sock.accept()            if hasattr(socket,'AF_UNIX')  and  sock.family == socket.AF_UNIX:                line = self.conSock.recv_char_msg().rstrip()                if not line:  # caller went away (perhaps another mpd seeing if I am here)                    self.streamHandler.del_handler(self.conSock)                    self.conSock.close()                    self.conSock = 0                    return                errorMsg = ''                try:                    (kv1,kv2) = line.split(' ',1)  # 'realusername=xxx secretword=yyy'                except:                    errorMsg = 'failed to split this msg on " ": %s' % line                if not errorMsg:                    try:                        (k1,self.conSock.realUsername) = kv1.split('=',1)                    except:                        errorMsg = 'failed to split first kv pair on "=": %s' % line                if not errorMsg:                    try:                        (k2,secretword) = kv2.split('=',1)                    except:                        errorMsg = 'failed to split second kv pair on "=": %s' % line                if not errorMsg  and  k1 != 'realusername':                    errorMsg = 'first key is not realusername'                if not errorMsg  and  k2 != 'secretword':                    errorMsg = 'second key is not secretword'                if not errorMsg  and  os.getuid() == 0  and  secretword != self.parmdb['MPD_SECRETWORD']:                    errorMsg = 'invalid secretword to root mpd'                if errorMsg:                    try:                        self.conSock.send_dict_msg({'error_msg': errorMsg})                    except:                        pass                    self.streamHandler.del_handler(self.conSock)                    self.conSock.close()                    self.conSock = 0                    return                self.conSock.beingChallenged = 0            else:                msg = self.conSock.recv_dict_msg()                if not msg:    # caller went away (perhaps another mpd seeing if I am here)                    self.streamHandler.del_handler(self.conSock)                    self.conSock.close()                    self.conSock = 0                    return                if not msg.has_key('cmd')  or  msg['cmd'] != 'con_init':                    mpd_print(1, 'console sent bad msg :%s:' % (msg) )                    try:  # try to let console know                        self.conSock.send_dict_msg({'cmd':'invalid_msg_received_from_you'})

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -