MUSCLE

Software screenshot:
MUSCLE
Software informatie:
Versie: 6.82 Bijgewerkt
Upload datum: 22 Jun 18
Ontwikkelaar: Jeremy Friesner
Licentie: Gratis
Populariteit: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE staat voor Multi User Server Client Linkage Environment en is een open source, gratis, robuust, schaalbaar en platformonafhankelijk berichtensysteem dat bestaat uit server- en clientcomponenten. Het helpt je om allerlei gedistribueerde software te schrijven, van multiplayer-spellen en IRC-chatclients tot SETI-berekenings-apps.


Functies in één oogopslag

Met MUSCLE kunnen gebruikers eenvoudig de meegeleverde "gespierde server" aanpassen door hun eigen sessielogica of berichtstreamingprotocol te definiëren. De software helpt u om uw clientcode te schrijven in een van de programmeertalen C ++, C, C #, Java, Delphi of Python.

Het programma gebruikt BMessage-achtige spier :: Berichten, ondersteunt verzending van afgevlakte spier :: Berichten tussen computers via TCP (Transmission Control Protocol) -stromen, implementeert een & quot; gespierde server & rdquo; op een servercomputer, zodat u clientprogramma's kunt schrijven die kunnen worden gebruikt om met de server te communiceren.

Bovendien bevat het berichtenuitwisseling-API's met één of meerdere threads die alle voornoemde programmeertalen ondersteunen. De 'gespierde server' & rdquo; kan gemakkelijk worden aangepast door een message-streaming-protocol of een sessielogica te definiëren.

Aan de slag met MUSCLE

Na een succesvolle login kunnen de clientprogramma's bepalen wie er nog meer op de centrale server is ingelogd, evenals om spiermassa op te slaan :: Berichten in het RAM (systeemgeheugen) en spierverzending :: berichten naar andere clients die verbonden zijn naar de server. Houd er rekening mee dat clientprogramma's zich kunnen abonneren op specifieke gegevens op de server en direct meldingen kunnen ontvangen wanneer de gegevens worden gewijzigd.


Ondersteunt een breed scala aan berichtrouterings

De software is ontworpen om een ​​breed scala aan berichtenrouteringen te ondersteunen, inclusief unicast-stijl, broadcast-stijl en multicast-stijl via een intelligent, hiërarchisch patroon-passend routeringsmechanisme.


Ondersteunde besturingssystemen en beschikbaarheid

MUSCLE werkt op elk POSIX-compatibel besturingssysteem. Het wordt gedistribueerd als een enkel archief met universele bronnen waarmee gebruikers de toepassing voor hun GNU / Linux-systeem kunnen optimaliseren. Zowel 32-bits als 64-bits hardwareplatforms worden momenteel ondersteund.

Wat is nieuw in deze release:

  • testen / Makefile-mt probeert niet langer testreflectsessie te compileren, behalve bij het uitvoeren van een OS dat testreflectsession ondersteunt.
  • Heeft een aantal kleine bewerkingen en herschikkingen van de & quot; MUSCLE door Example & quot; pagina's.
  • Vervangen een aantal `tags` in de MkDocs met [URL's] (...)
  • Privévererving van CountedObject verwijderd uit alle klassen die het hadden - nu nemen ze in plaats daarvan een Private Member-variabele van CountedObject op. Dit gebeurde alleen omdat al die privévererving de DOxygen-overervingsgrafieken volstoppen.
  • Een DECLARE_COUNTED_OBJECT-macro toegevoegd aan CountedObject.h zodat eventuele potentiële geheugenoverhead van CountedObjects kan worden geëlimineerd in gevallen waarin object-telling niet gewenst is.
  • Ondersteuning voor de -DMUSCLE_AVOID_OBJECT_COUNTING verwijderd en een -DMUSCLE_ENABLE_OBJECT_COUNTING -macro op zijn plaats toegevoegd. (Dat wil zeggen dat de klasse GeteldObject nu standaard is uitgeschakeld en expliciet moet worden ingeschakeld om deze te kunnen gebruiken)
  • Toegevoegd & quot; MUSCLE by Example & quot; documentatie voor MiscUtilityFunctions. {cpp, h}
  • Een aantal `tags` in de MUSCLE-by-Example MkDocs-bron gewijzigd in [urls], zodat de methoden die ze vermelden snel kunnen worden gecontroleerd.
  • server / Makefile geeft nu libmuscle.a op na het hoofdbestand () .o-bestand.
  • Enkele gcc-waarschuwingen in de testmap hersteld (per suggesties van Mika)
  • UnparseFile () citeerde geen zoekwoorden met spaties correct. Fixed.
  • De afhankelijkheden in de & quot; MUSCLE by Example & quot; voorbeelden 'Makefiles.

Wat is nieuw in versie:

  • Een ShrinkToFit () -gemaksmethode toegevoegd aan de wachtrij, hashtabel, en String-klassen. Met deze methode wordt het object kleiner, zodat de hoeveelheid intern toegewezen geheugen overeenkomt met de grootte van de gegevens die het daadwerkelijk vasthoudt.
  • Hashtable :: sureSize () en Queue :: WhichSize () nemen nu een optioneel (allowShrink) -argument, dat (indien ingesteld op true), de intern toegewezen array van het object kleiner kan toewijzen als het groter is dan nodig.
  • Tweaked het buffer-expansiegedrag van de klasse String om iets efficiënter te zijn.
  • Een beveiliging toegevoegd tegen een potentiële oneindige recursie die zou kunnen optreden tijdens het loggen van een & quot; OUT OF MEMORY & quot; fout na een geheugentoewijzingsfout, als een LogCallback geprobeerd heeft geheugen toe te wijzen.

Wat is nieuw in versie 6.01:

  • Een PrependWord () -gemakkelijke methode toegevoegd aan de klasse String.
  • Met WithReplacements () gemaksmethoden toegevoegd aan de String-klasse.
  • Een SetExplicitDelayMicros () -methode toegevoegd aan de klasse DetectNetworkConfigChangesSession.
  • Een IsCopperDetected () -methode toegevoegd aan de klasse NetworkInterfaceInfo, zodat de code kan aangeven of er op een Ethernet-aansluiting een kabel is aangesloten.
  • Toegevoegd een & quot; quietsend & quot; argument voor hexterm.
  • De virtuele methode NetworkInterfacesChanged () in de klasse DetectNetworkConfigChangesSession is gewijzigd om een ​​argument aan te nemen dat oproept welke netwerkinterfaces in het bijzonder zijn gewijzigd. Deze functionaliteit wordt momenteel alleen geïmplementeerd onder Linux, MacOS / X en Windows. Voor andere besturingssystemen is het argument altijd een lege lijst.
  • Probleem opgelost in de Linux-implementatie van DetectNetworkConfigChangesSession die een segmentatiefout kon veroorzaken als recvmsg () een fout retourneerde (bijvoorbeeld omdat er een signaal werd ontvangen).

Wat is nieuw in versie 6.00:

  • Wijs de klasse SSLSocketDataIO opnieuw toe om beter te werken met niet-blokkerende I / O (in combinatie met de nieuwe SSLSocketAdapter Gateway-klasse).
  • Implementaties van SSLSocketDataIO :: SetPrivateKey () en SSLSocketDataIO :: SetCertificate () toegevoegd waarvoor een ByteBuffer als argument is vereist.
  • Een SSLSocketAdapterGateway-klasse toegevoegd die wordt gebruikt om de interne statusmachine van OpenSSL te beheren wanneer een SSLSocketDataIO-klasse wordt gebruikt met uw gateway.
  • SetSSLPrivateKey () en GetSSLPrivateKey () -methoden toegevoegd aan de ReflectServer-klasse, voor het eenvoudiger inschakelen van SSL-verificatie op alle inkomende TCP-verbindingen. Deze methoden zijn beschikbaar als MUSCLE_ENABLE_SSL is gedefinieerd.
  • SetSSLPublicKeyCertificate () en GetSSLPublicKeyCertificate () -methoden toegevoegd aan de ReflectServer-klasse voor het eenvoudiger inschakelen van SSL-verificatie op uitgaande TCP-verbindingen. Deze methoden zijn beschikbaar als MUSCLE_ENABLE_SSL is gedefinieerd.
  • SetSSLPrivateKey () en SetSSLPublicKeyCertificate () -methoden toegevoegd aan de klasse MessageTransceiverThread, voor het eenvoudiger inschakelen van SSL-functionaliteit bij gebruik van I / O met threads.
  • Een ssl_data-map toegevoegd met enige informatie over het genereren van OpenSSL openbare / private keypairs en een voorbeeld keypair voor gebruik bij het testen van OpenSSL.
  • Wanneer MUSCLE_ENABLE_SSL is gedefinieerd, accepteert muscled nu een optioneel argument 'privatekey = bestandsnaam'. Wanneer dit is opgegeven, wordt SSL-modus ingeschakeld en gespierd accepteert alleen inkomende TCP-verbindingen die openbare sleutels bevatten die overeenkomen met deze privésleutel / certificaat.
  • Wanneer MUSCLE_ENABLE_SSL is gedefinieerd, accepteren portablereflectclient en qt_example nu een optioneel argument 'publickey = bestandsnaam'. Wanneer dit is opgegeven, wordt de SSL-modus ingeschakeld en verbinden deze clients verbinding met muscled via OpenSSL en presenteren dit bestand als hun inloggegevens.
  • Toegevoegd een & quot; Animate & quot; checkbox naar de demo qt_example. Als u dit aanvinkt, zal het venster zijn indicator automatisch laten bewegen. Dit is leuk en ook handig als u een scenario wilt testen waarbij meerdere clients gelijktijdig verkeer genereren.
  • Heeft de qt_example demo mooier gemaakt.
  • Hernoemd de C ++ 11-helper macro's in Hashtable.h en Queue.h om ze minder snel te laten botsen met de macro's van andere pakketten. * Enkele kleine fouten in de klasse SSLSocketDataIO opgelost. o Hernoemd SSLSocketDataIO :: SetKey () naar SetPrivateKey (). o Hernoemd SSLSocketDataIO :: SetCertificate () naar SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () is nu een virtuele methode.

Wat is nieuw in versie 5.92:

  • Verbeterde ondersteuning voor C ++ 11-verplaatsingssemantiek in de wachtrij- en hashtabelklassen (alleen ingeschakeld wanneer -DMUSCLE_USE_CPLUSPLUS11 is gedefinieerd)
  • Een beetje instrumentatie aan de klasse String toegevoegd, zodat ik kan zien hoe vaak een stringobject wordt gekopieerd, verplaatst, enzovoort (alleen ingeschakeld wanneer -DMUSCLE_COUNT_STRING_COPY_OPERATIONS is gedefinieerd)
  • Er is een PrintAndClearStringCopyCounts () -functie toegevoegd die de hierboven verzamelde String-operation-gegevens zal afdrukken.
  • SFINAE magic toegevoegd aan muscleSwap () zodat het kan worden verwisseld door SwapContents () indien mogelijk te gebruiken in plaats van te kopiëren naar een tijdelijk object.
  • Toegevoegd een initializer-lijstconstructor en overbelasting van AddTailMulti () aan de wachtrijklasse (alleen beschikbaar wanneer -DMUSCLE_USE_CPLUSPLUS11 natuurlijk is gedefinieerd)
  • Hernoemde rij en reeks overbelasting van wachtrij :: AddTail () aan AddTailMulti (), om conflicten met de nieuwe parsing-ondersteuning voor C ++ 11-sjabloon te vermijden.
  • Hernoemden wachtrij en array-overloads van wachtrij :: AddHead () aan AddHeadMulti () om conflicten met de nieuwe parsing-ondersteuning voor C ++ 11-sjabloon te voorkomen.
  • Macro MCRASH_IMPL is vervangen door een aanroep om te beweren (onwaar).
  • Een beetje meer tweerage over Android-compatibiliteit.
  • Veel van de programma's in de testmap waren niet gecompileerd onder C ++ 11. Fixed.
  • Verschillende mogelijke bugs hersteld die werden gedetecteerd door de statische analysetool van clang.

Wat is nieuw in versie 5.91:

  • Toegevoegde methode ConvenienceCanPut () toegevoegd aan de klasse Hashtable.
  • Toegevoegde methode gemak gemak (gemak gemakshalve) toevoegen aan de klasse Wachtrij.
  • Veranderd DoMutexAtomicIncrement () om een ​​inline-functie te zijn om het efficiënter te maken.
  • QMessageTransceiverThread en QAcceptSocketsThread gewijzigd om QCoreApplication aan te roepen :: postEvent () in plaats van QApplication :: postEvent (), om niet-GUI Qt-apps toe te staan.
  • Het Beginner's Guide-document bijgewerkt om de verbeterde UDP-ondersteuning van MUSCLE weer te geven.
  • Samengevoegd in sommige wijzigingen in Android-compatibiliteit door Jean-FranAois Mullet.
  • Gebruik van de compileer-vlag MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS zou ertoe leiden dat MUSCLE bij het opstarten crasht als gevolg van een probleem met de volgorde van de bewerkingen. Dit is nu opgelost.
  • De compilatievlag MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS werd eerder alleen gebruikt als er geen andere implementatie van AtomicCounter beschikbaar was. Nu heeft de vlag een hogere prioriteit, dus het instellen van de vlag betekent dat Mutexes zullen worden gebruikt, zelfs als een ander (efficiënter) mechanisme beschikbaar is.

Wat is nieuw in versie 5.90:

  • Een GetPacketMaximumSize () -methode toegevoegd aan de DataIO-klasse om gatewaycode toe te staan ​​om op meer intelligente wijze om te gaan met pakketcommunicatie in UDP-stijl.
  • MessageIOGateway werkt nu nuttig in combinatie met UDPSocketDataIO.
  • Toegevoegde CreateObjectFromArchiveMessage () -melfuncties toegevoegd aan Message.h, om te dienen als tegenhanger voor het herstellen van GetArchiveMessageFromPool (), enzovoort.
  • AtomicCounter :: AtomicIncrement () retourneert nu een booleaanse waarde (true iff de nieuwe tellerwaarde is gelijk aan één).
  • De HashtableIterator-klasse gewijzigd, zodat alleen-lezen hashtabel-iteraties nu threadveilig zijn, zelfs als de HTIT_FLAG_NOREGISTER-vlag niet is opgegeven.
  • Een muscle_thread_id-klasse toegevoegd aan SetupSystem.h om een ​​thread-ID correct weer te geven op een implementatie-neutrale manier.
  • Een & quot; deadlock & quot; toegevoegd programma naar de testmap. Dit programma dreigt opzettelijk een impasse te veroorzaken, als een manier om de deadlockfinder-test uit te oefenen / demonstreren.
  • Ondersteuning toegevoegd voor een -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS opdrachtregelvlag, voor degenen die liever de overhead van automatische threadbeveiliging vermijden en beloven om HTIT_FLAG_NOREGISTER argumenten handmatig te leveren waar nodig.
  • Optionele LRU-lookup-cache toegevoegd aan de functie GetHostByName (), zodat deze sneller kan worden hersteld wanneer dezelfde hostnamen steeds weer opnieuw worden verwerkt.
  • Een SetHostNameCacheSettings () -functie toegevoegd die de LRU opzoekcache in GetHostByName () inschakelt en aanpast.
  • Ondersteuning toegevoegd voor & quot; dnscache & quot; en & quot; dnscachesize & quot; opdrachtregelargumenten in HandleStandardDaemonArgs (), om opdrachtregelspecificatie van het gedrag van de LRU opzoekcache mogelijk te maken.
  • De Hashtable-klasse zodanig gewijzigd dat de _iterHead, _iterTail en _freeHead ledenwaarden nu uint32s zijn in plaats van pointers, om het geheugengebruik te verminderen.
  • De ThreadLocalStorage :: SetFreeHeldObjectsOnExit () -methode verwijderd en een Boolean-argument aan de constructor toegevoegd, omdat pthreads niet toestaan ​​dat u die instelling wijzigt nadat pthread_key_create () is aangeroepen.
  • GetCurrentThreadID () verplaatst naar de muscle_thread_id-klasse als een statische lidfunctie en deze gewijzigd om een ​​muscle_thread_id-object te retourneren in plaats van unsigned lang.
  • De standaard hostnaam voor sessies zonder een bekend IP-adres gewijzigd van & quot; & quot; naar & quot; _unknown_ & quot; aangezien de punthaken in de vorige tekenreeks een speciale betekenis hebben vanaf de 5.84-release en die op ongeoorloofde manieren interferentie kunnen veroorzaken met het koppelen van knooppunten.
  • De methoden CalculateChecksum () in Message.cpp zijn gewijzigd om robuuster te zijn in het detecteren van verschillen in gegevensoverdracht.
  • De ondersteuning MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS van AtomicCounter.h verwijderd, omdat de QAtomicInt-klasse van Qt de functionaliteit niet ondersteunt die de nieuwe geretourneerde waarde van de methode AtomicIncrement () vereist.
  • MessageIOGateway verwijderd: FlattenMessage () en MessageIOGateway :: UnflattenMessage (). Toegevoegd in hun plaats: MessageIOGateway :: FlattenHeaderAndMessage () en MessageIOGateway :: UnflattenHeaderAndMessage (). Deze nieuwe methoden behandelen zowel de headerbytes als de berichttekst op hetzelfde moment.
  • Een udpproxy.vcproj-bestand toegevoegd aan de testmap om udpproxy onder Windows te compileren.
  • Bericht: Flatten () wordt nu één keer herhaald in de velden in het bericht, in plaats van tweemaal.
  • GetCurrentThreadID () is nu een inline-functie, omdat het nu vaak door HashtableIterator wordt aangeroepen.
  • De deadlockfinder-code aangepast om Wachtrijen te gebruiken in plaats van hashtabellen, aangezien muscle_thread_id niet meer als hashes-toetstype kan worden gebruikt.
  • Fixed testudp.cpp om een ​​MessageIOGateway correct te gebruiken voor zijn UDP-communicatie.
  • Tweaked de ifdefs in FilePathInfo.cpp een beetje meer zodat statInfo.st_birthtimespec niet wordt benaderd bij het gebruik van MacOS / X SDK's die het niet leveren.
  • MessageDataIOGateway probeert niet langer een bericht te verwijderen uit een zlib-deflated gegevensbuffer die niet meer opnieuw kan worden opgeblazen.
  • Bug verholpen in SendDataUDP () waardoor SendDataUDP () een fout kon retourneren bij verzending naar een multicast-adres met een niet-blokkerende modus en de uitvoerbuffer vol was.

Wat is nieuw in versie 5.85:

  • LogTime-aanroep (MUSCLE_LOG_DEBUG) aan alle foutpaden in MessageIOGateway :: DoInputImplementation () en Message :: Unflatten () toegevoegd, zodat het gemakkelijker is om te bepalen wanneer TCP-verbindingen worden afgebroken vanwege gegevens corruptie.
  • Een PreviousOperationHadTransientFailure () -functie toegevoegd, die true als ifrno is EINTR of ENOBUFS retourneert.
  • Door spamspersecond = -1 in te stellen, wordt hexterm nu zo snel mogelijk spamgegevens verzonden.
  • De MUSCLE_USE_POLL-implementatie van SocketMultiplexer.h leverde POLLERR aan WSAPoll () maar WSAPoll () biedt geen ondersteuning voor POLLERR, dus WSAPoll () retourneert een fout wanneer dit zich voordoet. Heeft het probleem opgelost door POLLERR te filteren tijdens het compileren onder Windows.
  • Probleem opgelost waarbij send () terugkeer ENOBUFS ertoe kon leiden dat de socketverbinding werd verbroken, ook al is ENOBUFS geen fatale situatie.
  • SocketMultiplexer.cpp compileert niet wanneer MUSCLE_USE_POLL is gedefinieerd. Fixed.
  • De methode ZLibCodec :: Deflate () kan niet alle gegevens in een zeer grote buffer (bijvoorbeeld meer dan 42 MB) comprimeren. Fixed.

Wat is nieuw in versie 5.84:

  • De numerieke reeks syntaxis van de klasse StringMatcher is uitgebreid zodat u nu meerdere bereiken kunt opgeven. Bijvoorbeeld & quot; & quot; zou overeenkomen met strings "19", "20", "21", "25", "30", "31", [...] en "50".
  • GetCurrentTime64ForRunTime64 () en GetRunTime64ForCurrenTime64 () conversiefuncties toegevoegd aan TimeUtilityFunctions.h.
  • Een GetDescendant () -hulpprogramma toegevoegd aan de DataNode-klasse.
  • C ++ 11 move-constructors en move-assignment-operators toegevoegd aan de klassen Hashtable, Queue, String, Message en ByteBuffer. Voor achterwaartse compatibiliteit met oudere compilers wordt deze code alleen gecompileerd als -DMUSCLE_USE_CPLUSPLUS11 is opgegeven op de compileerregel.
  • SharedMemory klasse zal zich nu zelf in een niet-gedeelde geheugenklasse nestelen als -DMUSCLE_FAKE_SHARED_MEMORY is opgegeven.
  • Er is een testfilepathinfo-test toegevoegd aan de testmap.
  • Alle auteursrechtvermeldingen bijgewerkt om 2000-2013 Meyer Sound te lezen.
  • Spaties toegevoegd tussen macro-tokens (bijvoorbeeld UINT32_FORMAT_SPEC) en reeksconstanten (bijvoorbeeld & quot; Hello & quot;) om C ++ 11-compilers tevreden te maken.
  • ByteBuffer.cpp had een syntaxisfout die zou voorkomen dat het compileert op big-endian hosts. Fixed.
  • alleen MacOS / X: Vervallen niet-functionele Carbon-functieaanroepen vervangen door Mach-equivalenten, om waarschuwingswaarschuwingen onder 10.8.x te voorkomen.

Wat is nieuw in versie 5.83:

  • Gemaksvarianten toegevoegd van InflateByteBuffer () en DeflateByteBuffer () die neem een ​​ByteBufferRef als argument.
  • Enkele verouderde / ongebruikte methoden (GivenBufferSize () en FreeLargeBuffer ()) uit de klasse AbstractMessageIOGateway verwijderd.
  • Enkele typfouten in de opmerkingen in de Delphi-submap hersteld.
  • De klasse Hashtable genereert geen waarschuwingen meer bij het compileren onder MSVC waarbij -DMUSCLE_AVOID_MINIMIZED_HASHTABLES is gedefinieerd.
  • Probleem opgelost in IPAddressAndPort :: ToString () waardoor IPv4-adresstrings dubbel werden geformatteerd wanneer (preferIPv4Style) was ingesteld op false.

Vergelijkbare software

H2 Database Engine
H2 Database Engine

17 Feb 15

Jaxer
Jaxer

3 Jun 15

Apache Xindice
Apache Xindice

2 Jun 15

MySQL Sandbox
MySQL Sandbox

20 Feb 15

Andere software van ontwikkelaar Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Reacties op MUSCLE

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!