MUSCLE

Software screenshot:
MUSCLE
Dettagli del software:
Versione: 6.82 Aggiornato
Data di caricamento: 22 Jun 18
Sviluppatore: Jeremy Friesner
Licenza: Libero
Popolarità: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE è l'acronimo di Multi Link Server Client Linkage Environment ed è un sistema di messaggistica open source, gratuito, robusto, scalabile e multipiattaforma che comprende componenti server e client. Ti aiuterà a scrivere ogni sorta di software distribuito, dai giochi multiplayer e dai client di chat IRC, alle app di calcolo SETI.


Caratteristiche a colpo d'occhio

Con MUSCLE, gli utenti saranno in grado di personalizzare facilmente il "server muscoloso" incluso definendo la propria logica di sessione o il protocollo di streaming dei messaggi. Il software ti aiuta a scrivere il tuo codice cliente in entrambi i linguaggi di programmazione C ++, C, C #, Java, Delphi o Python.

Il programma utilizza il muscolo di tipo BMessage :: Messaggi, supporta l'invio di muscoli appiattiti :: Messaggi tra computer tramite TCP (Transmission Control Protocol) flussi, distribuzione di un & ldquo; server muscoloso & rdquo; su un server, consentendo di scrivere programmi client che possono essere utilizzati per comunicare con il server.

Inoltre, include API di messaggistica a thread singolo e multiplo che supportano tutti i suddetti linguaggi di programmazione. & Ldquo; server muscoloso & rdquo; può essere facilmente personalizzato definendo un protocollo di streaming dei messaggi o una logica di sessione.

Introduzione a MUSCLE

Dopo un login riuscito, i programmi client possono determinare chi altro ha effettuato l'accesso al server centrale, oltre a memorizzare muscle :: Messages nella RAM (memoria di sistema) e inviare muscle :: Messages ad altri client che sono collegati al server. Tieni presente che i programmi client possono iscriversi a dati specifici sul server e ricevere notifiche istantanee quando i dati cambiano.


Supporta una vasta gamma di percorsi di messaggi

Il software è stato progettato per supportare una vasta gamma di percorsi di messaggi, inclusi stili unicast, broadcast-style e multicast-style attraverso un meccanismo di routing intelligente e gerarchico di pattern matching.


Sistemi operativi e disponibilità supportati

MUSCLE gira su qualsiasi sistema operativo conforme a POSIX. È distribuito come un unico archivio universale di fonti che consente agli utenti di ottimizzare l'applicazione per il proprio sistema GNU / Linux. Al momento sono supportate entrambe le piattaforme hardware a 32 e 64 bit.

Novità in questa versione:

  • test / Makefile-mt non tenta più di compilare testreflectsession tranne quando si esegue su un sistema operativo supportato da testreflectsession.
  • Sono state apportate alcune modifiche minori e la ri-organizzazione del & quot; MUSCLE by Example & quot; pagine.
  • Sostituito un numero di `tag` in MkDocs con [URL] (...)
  • Rimossa l'ereditarietà privata di CountedObject da tutte le classi che lo avevano - ora includono invece una variabile membro privato CountedObject. Ciò è stato fatto solo perché tutta quell'eredità privata stava ingombrando i grafici dell'ereditarietà dell'ossigeno.
  • Aggiunta una macro DECLARE_COUNTED_OBJECT a CountedObject.h in modo che qualsiasi potenziale sovraccarico di memoria di CountedObjects possa essere eliminato nei casi in cui il conteggio degli oggetti non è desiderato.
  • Rimosso il supporto per -DMUSCLE_AVOID_OBJECT_COUNTING e aggiunto una macro -DMUSCLE_ENABLE_OBJECT_COUNTING al suo posto. (Ovvero, la classe CountedObject ora è disabilitata per default e deve essere esplicitamente abilitata per poterla usare)
  • Aggiunto & quot; MUSCLE per esempio & quot; documentazione per MiscUtilityFunctions. {cpp, h}
  • Modificato un numero di `tag` nel sorgente MkCm da MUSCLE per esempio in [urls] in modo che i metodi che menzionano possano essere rivisti rapidamente.
  • server / Makefile ora specifica libmuscle.a dopo il file main () .o.
  • Risolti alcuni avvisi di gcc nella cartella dei test (secondo i suggerimenti di Mika)
  • UnparseFile () non stava citando correttamente parole chiave con spazi. Fisso.
  • Corrette le dipendenze nel & quot; MUSCLE per Esempio & quot; esempi 'Makefile.

Novità nella versione:

  • Aggiunto un metodo di convenienza ShrinkToFit () alla coda, Hashtable, e classi di stringhe. Questo metodo riduce l'oggetto in modo che la quantità di memoria allocata internamente corrisponda alla dimensione dei dati effettivamente contenuti.
  • Hashtable :: EnsureSize () e Queue :: EnsureSize () ora accettano un argomento opzionale (allowShrink), che (se impostato su true) consente di riallineare l'array internamente allocato dell'oggetto se è maggiore del necessario.
  • Ottimizzato il comportamento di espansione del buffer della classe String per essere un po 'più efficiente.
  • Aggiunta una protezione contro una potenziale ricorsione infinita che potrebbe verificarsi durante la registrazione di & quot; OUT OF MEMORY & quot; errore dopo un errore di allocazione della memoria, se un LogCallback ha tentato di allocare memoria.

Novità nella versione 6.01:

  • Aggiunto un metodo di convenienza PrependWord () alla classe String.
  • Aggiunti i metodi di convenienza WithReplacements () alla classe String.
  • Aggiunto un metodo SetExplicitDelayMicros () alla classe DetectNetworkConfigChangesSession.
  • Aggiunto un metodo IsCopperDetected () alla classe NetworkInterfaceInfo, in modo che il codice possa stabilire se un jack Ethernet ha un cavo collegato o meno.
  • Aggiunto un & quot; quietsend & quot; argomento a hexterm.
  • Il metodo virtuale NetworkInterfacesChanged () nella classe DetectNetworkConfigChangesSession è stato modificato per accettare un argomento che richiama in particolare le interfacce di rete modificate. Questa funzionalità è attualmente implementata solo sotto Linux, MacOS / X e Windows. Per gli altri sistemi operativi, l'argomento sarà sempre una lista vuota.
  • Risolto un bug nell'implementazione Linux di DetectNetworkConfigChangesSession che poteva causare un errore di segmentazione se recvmsg () restituiva un errore (ad esempio a causa di un segnale ricevuto).

Novità in nella versione 6.00:

  • Riscrivi la classe SSLSocketDataIO per funzionare meglio con I / O non bloccanti (in combinazione con la nuova classe SSLSocketAdapterGateway).
  • Aggiunte implementazioni di SSLSocketDataIO :: SetPrivateKey () e SSLSocketDataIO :: SetCertificate () che accettano un ByteBuffer come argomento.
  • Aggiunta una classe SSLSocketAdapterGateway che viene utilizzata per gestire la macchina di stato interna di OpenSSL quando si utilizza una classe SSLSocketDataIO con il gateway.
  • Aggiunti i metodi SetSSLPrivateKey () e GetSSLPrivateKey () alla classe ReflectServer, per abilitare più facilmente l'autenticazione SSL su tutte le connessioni TCP in entrata. Questi metodi sono disponibili se è definito MUSCLE_ENABLE_SSL.
  • Aggiunti i metodi SetSSLPublicKeyCertificate () e GetSSLPublicKeyCertificate () alla classe ReflectServer, per facilitare l'attivazione dell'autenticazione SSL sulle connessioni TCP in uscita. Questi metodi sono disponibili se è definito MUSCLE_ENABLE_SSL.
  • Aggiunti i metodi SetSSLPrivateKey () e SetSSLPublicKeyCertificate () alla classe MessageTransceiverThread, per facilitare l'attivazione della funzionalità SSL quando si utilizza l'I / O con thread.
  • Aggiunta una cartella ssl_data con alcune informazioni sulla generazione di coppie di chiavi pubbliche / private OpenSSL e una coppia di chiavi di esempio da utilizzare nel test di OpenSSL.
  • Quando MUSCLE_ENABLE_SSL è definito, muscoloso ora accetta un argomento opzionale 'privatekey = filename'. Quando specificato, la modalità SSL sarà abilitata e muscolosa accetterà solo le connessioni TCP in ingresso che presentano chiavi pubbliche che corrispondono a questa chiave privata / certificato.
  • Quando MUSCLE_ENABLE_SSL è definito, portablereflectclient e qt_example accettano ora un argomento opzionale 'publickey = nomefile'. Quando specificato, la modalità SSL verrà abilitata e questi client si collegheranno a muscolosi usando OpenSSL e presenteranno questo file come loro credenziali.
  • Aggiunto un & quot; Animazione & quot; checkbox alla demo qt_example. Selezionandolo, la finestra muove automaticamente il suo indicatore. Questo è divertente e utile anche se vuoi testare uno scenario in cui più client generano traffico simultaneamente.
  • Crea la demo di qt_example più carina.
  • Rinominato le macro di helper C ++ 11 in Hashtable.h e Queue.h per renderle meno soggette a collisione con le macro di altri pacchetti. * Risolti alcuni errori minori nella classe SSLSocketDataIO. o Rinominato SSLSocketDataIO :: SetKey () su SetPrivateKey (). o Rinominato SSLSocketDataIO :: SetCertificate () su SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () è ora un metodo virtuale.

Novità nella versione 5.92:

  • Supporto migliorato per la semantica del movimento C ++ 11 nelle classi Queue e Hashtable (abilitato solo quando -DMUSCLE_USE_CPLUSPLUS11 è definito)
  • Aggiunti alcuni strumenti alla classe String in modo da poter vedere quante volte un oggetto String viene copiato, spostato, ecc. (abilitato solo quando viene definito -DMUSCLE_COUNT_STRING_COPY_OPERATIONS)
  • Aggiunta una funzione PrintAndClearStringCopyCounts () che stamperà i dati relativi alle stringhe raccolti sopra.
  • Aggiunto un po 'di magia SFINAE a muscleSwap () in modo che si scambia chiamando SwapContents () quando possibile, piuttosto che copiando su un oggetto temporaneo.
  • Aggiunto un costruttore di inizializzatore e sovraccarico di AddTailMulti () alla classe Queue (disponibile solo quando -DMUSCLE_USE_CPLUSPLUS11 è definito, ovviamente)
  • Rinominato la coda e gli overload di array di Queue :: AddTail () in AddTailMulti (), per evitare conflitti con il nuovo supporto per l'analisi del template in C ++ 11.
  • Rinominato la coda e gli overload di array di Queue :: AddHead () in AddHeadMulti (), per evitare conflitti con il nuovo supporto per l'analisi del template in C ++ 11.
  • Sostituita la macro MCRASH_IMPL con una chiamata da asserire (false).
  • Un po 'più tweakage per la compatibilità con Android.
  • Molti dei programmi nella cartella dei test non venivano compilati in C ++ 11. Fisso.
  • Corretti diversi potenziali bug che sono stati rilevati dallo strumento di analisi statica di clang.

Novità nella versione 5.91:

  • Aggiunto il metodo di convenienza CleanCanPut () per la classe Hashtable.
  • Aggiunto il metodo di convenienza CleanCanAdd () per la classe Queue.
  • Modificato DoMutexAtomicIncrement () come funzione inline per rendere più efficiente la chiamata.
  • Modificato QMessageTransceiverThread e QAcceptSocketsThread per chiamare QCoreApplication :: postEvent () anziché QApplication :: postEvent (), per consentire app Qt non-GUI.
  • Aggiornamento del documento Guida per principianti per riflettere il miglior supporto UDP di MUSCLE.
  • Unita in alcune modifiche di compatibilità Android fornite da Jean-François Mullet.
  • L'utilizzo del flag di compilazione MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS causerebbe il blocco di MUSCLE all'avvio a causa di un problema di ordine delle operazioni. Questo è stato risolto ora.
  • Il flag di compilazione MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS è stato precedentemente utilizzato solo se non era disponibile un'altra implementazione di AtomicCounter. Ora il flag ha precedenza più alta, quindi impostando il flag significa che verranno utilizzati i mutex, anche se è disponibile un altro meccanismo (più efficiente).

Novità in nella versione 5.90:

  • Aggiunto un metodo GetPacketMaximumSize () alla classe DataIO per consentire al codice gateway di gestire in modo più intelligente le comunicazioni pacchettizzate in stile UDP.
  • MessageIOGateway ora funziona utilmente in combinazione con UDPSocketDataIO.
  • Aggiunte le funzioni di tipo CreateObjectFromArchiveMessage () a Message.h, per fungere da controparte lato ripristino di GetArchiveMessageFromPool (), ecc.
  • AtomicCounter :: AtomicIncrement () ora restituisce un valore booleano (true se il nuovo valore del contatore è uguale a uno).
  • Modificata la classe HashtableIterator in modo che le iterazioni di Hashtable di sola lettura siano ora thread-safe anche se il flag HTIT_FLAG_NOREGISTER non è specificato.
  • Aggiunta una classe muscle_thread_id a SetupSystem.h, per rappresentare correttamente un ID di thread in modo neutrale all'implementazione.
  • Aggiunto un & quot; deadlock & quot; programma nella cartella test. Questo programma rischia deliberatamente di creare un deadlock, come un modo per esercitare / dimostrare il test del deadlockfinder.
  • Aggiunto supporto per un flag della riga di comando -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS, per coloro che preferiscono evitare il sovraccarico della sicurezza del thread automatico e promettono di fornire manualmente gli argomenti HTIT_FLAG_NOREGISTER dove necessario.
  • Aggiunta una cache di ricerca LRU opzionale alla funzione GetHostByName (), in modo che possa tornare più rapidamente quando gli stessi nomi host vengono risolti più e più volte.
  • Aggiunta una funzione SetHostNameCacheSettings () che abilita e regola la cache di ricerca LRU in GetHostByName ().
  • Aggiunto supporto per & quot; dnscache & quot; e & quot; dnscachesize & quot; argomenti della riga di comando in HandleStandardDaemonArgs (), per consentire la specifica della riga di comando del comportamento della cache di ricerca LRU.
  • Modificata la classe Hashtable in modo che i valori dei membri _iterHead, _iterTail e _freeHead ora siano uint32 anziché puntatori, per ridurre l'utilizzo della memoria.
  • Rimosso il metodo ThreadLocalStorage :: SetFreeHeldObjectsOnExit () e aggiunto un argomento booleano al suo costruttore, poiché i pthreads non ti permettono di cambiare quell'impostazione dopo che è stato chiamato pthread_key_create ().
  • Spostato GetCurrentThreadID () nella classe muscle_thread_id come funzione membro statico e modificato per restituire un oggetto muscle_thread_id piuttosto che unsigned long.
  • Modificato il nome host predefinito per le sessioni senza un indirizzo IP noto da & quot; & quot; a & quot; _unknown_ & quot ;, poiché le parentesi angolari nella precedente stringa hanno un significato speciale a partire dalla versione 5.84, e questo potrebbe interferire con la corrispondenza del percorso del nodo in modi involontari.
  • I metodi CalculateChecksum () in Message.cpp sono stati modificati per essere più affidabili nel rilevamento delle differenze di trasposizione dei dati.
  • Rimosso il supporto MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS da AtomicCounter.h, poiché la classe QAtomicInt di Qt non supporta la funzionalità richiesta dal nuovo valore di ritorno del metodo AtomicIncrement ().
  • Removed MessageIOGateway :: FlattenMessage () e MessageIOGateway :: UnflattenMessage (). Aggiunti al loro posto: MessageIOGateway :: FlattenHeaderAndMessage () e MessageIOGateway :: UnflattenHeaderAndMessage (). Questi nuovi metodi gestiscono contemporaneamente sia i byte di intestazione che il corpo del messaggio.
  • Aggiunto un file udpproxy.vcproj alla cartella tests, per aiutare a compilare udpproxy sotto Windows.
  • Messaggio: Flatten () ora scorre i campi del messaggio una volta, invece di due volte.
  • GetCurrentThreadID () ora è una funzione inline, dal momento che ora può essere chiamata spesso da HashtableIterator.
  • Modificato il codice del deadlockfinder per usare Code invece di Hashtables, poiché muscle_thread_id non può più essere usato come un tipo di chiave Hashtable.
  • Risolto testudp.cpp per utilizzare correttamente MessageIOGateway per la sua comunicazione UDP.
  • Ottimizzato gli ifdefs in FilePathInfo.cpp un po 'di più in modo che statInfo.st_birthtimespec non sia accessibile quando si utilizzano gli SDK MacOS / X che non lo forniscono.
  • MessageDataIOGateway non tenta più di svincolare un messaggio da un buffer di dati deflazionato con zlib che non è stato in grado di rigonfiare.
  • Risolto un bug in SendDataUDP () che poteva causare a SendDataUDP () di restituire erroneamente un errore quando si inviava a un indirizzo multicast usando la modalità non bloccante e il buffer di output era pieno.

Novità nella versione 5.85:

  • Aggiunte le chiamate LogTime (MUSCLE_LOG_DEBUG) a tutti i percorsi di errore in MessageIOGateway :: DoInputImplementation () e Message :: Unflatten (), in modo che sia più facile determinare quando le connessioni TCP vengono interrotte a causa dei dati la corruzione.
  • Aggiunta una funzione PreviousOperationHadTransientFailure (), che restituisce true se f errno è EINTR o ENOBUFS.
  • La specifica di spamspersecond = -1 farà ora sì che hexterm invii i dati spam il più velocemente possibile.
  • L'implementazione MUSCLE_USE_POLL di SocketMultiplexer.h stava fornendo POLLERR a WSAPoll () ma WSAPoll () non supporta POLLERR quindi WSAPoll () restituirebbe un errore quando ciò si verificava. Ha risolto il problema filtrando POLLERR durante la compilazione in Windows.
  • Risolto un bug in cui send () restituendo ENOBUFS poteva causare la chiusura della connessione socket, anche se ENOBUFS non era una condizione fatale.
  • SocketMultiplexer.cpp non verrebbe compilato quando MUSCLE_USE_POLL è stato definito. Fisso.
  • Il metodo ZLibCodec :: Deflate () non riuscirebbe a comprimere tutti i dati in un buffer molto grande (ad esempio oltre 42 MB). Fisso.

Novità nella versione 5.84:

  • La sintassi dell'intervallo numerico della classe StringMatcher è stata estesa in modo da poter specificare più intervalli. Ad esempio, & quot; & quot; corrisponderebbe alle stringhe "19", "20", "21", "25", "30", "31", [...] e & quot; 50 & quot;.
  • Aggiunte le funzioni di conversione GetCurrentTime64ForRunTime64 () e GetRunTime64ForCurrenTime64 () a TimeUtilityFunctions.h.
  • Aggiunto un metodo di utilità GetDescendant () alla classe DataNode.
  • Aggiunti i costruttori di movimento C ++ 11 e gli operatori spostamento-assegnazione alle classi Hashtable, Queue, String, Message e ByteBuffer. Per compatibilità con i vecchi compilatori, questo codice verrà compilato solo se -DMUSCLE_USE_CPLUSPLUS11 è specificato sulla riga di compilazione.
  • La classe SharedMemory ora eseguirà il nerf stesso in una classe di memoria non condivisa se è specificato -DMUSCLE_FAKE_SHARED_MEMORY.
  • Aggiunto un test testfilepathinfo alla cartella test.
  • Aggiornate tutte le intestazioni degli avvisi di copyright per leggere il suono Meyer 2000-2013.
  • Aggiunti spazi tra token macro (ad esempio UINT32_FORMAT_SPEC) e costanti di stringa (ad es. & quot; Hello & quot;) per rendere felici i compilatori C ++ 11.
  • ByteBuffer.cpp aveva un errore di sintassi che impediva la compilazione su host big-endian. Fisso.
  • Solo MacOS / X: sostituite chiamate di funzioni di carbone deprecate con equivalenti Mach, per evitare avvisi di deprecazione sotto 10.8.x.

Novità nella versione 5.83:

  • Aggiunte versioni convenienti di InflateByteBuffer () e DeflateByteBuffer () che prendi un ByteBufferRef come argomento.
  • Rimossi alcuni metodi obsoleti / non utilizzati (EnsureBufferSize () e FreeLargeBuffer ()) dalla classe AbstractMessageIOGateway.
  • Corretti alcuni refusi nei commenti nella sottocartella delphi.
  • La classe Hashtable non genera più avvisi quando è compilata in MSVC con -DMUSCLE_AVOID_MINIMIZED_HASHTABLES definito.
  • Risolto un bug in IPAddressAndPort :: ToString () che causava la formattazione ambigua delle stringhe degli indirizzi IPv4 quando (preferIPv4Style) era impostato su false.

Programmi simili

MySQL Sandbox
MySQL Sandbox

20 Feb 15

PostGIS
PostGIS

19 Feb 15

Oracle Database
Oracle Database

17 Feb 15

Altri software di sviluppo Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Commenti a MUSCLE

I commenti non trovato
Aggiungi commento
Accendere le immagini!