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

MariaDB
MariaDB

20 Jan 18

Jaxer
Jaxer

3 Jun 15

MySQL Sandbox
MySQL Sandbox

20 Feb 15

Free-Vote
Free-Vote

3 Jun 15

Altri software di sviluppo Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Commenti a MUSCLE

I commenti non trovato
Aggiungi commento
Accendere le immagini!