MUSCLE

Software skärmdump:
MUSCLE
Mjukvaruinformation:
Version: 6.82 Uppdaterad
Ladda upp dagen: 22 Jun 18
Utvecklare: Jeremy Friesner
Licens: Gratis
Popularitet: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE står för Multi User Server Client Linkage Environment och det är ett open source, gratis, robust, skalbart och plattforms-meddelandesystem som består av server- och klientkomponenter. Det hjälper dig att skriva alla typer av distribuerad programvara, från multiplayer-spel och IRC-klientklienter, till SETI-beräkningsprogram.


Funktioner i ett ögonkast

Med MUSCLE kan användarna enkelt anpassa den medföljande "muscled-servern" genom att definiera sin egen sessionslogik eller meddelande-streaming-protokoll. Programvaran hjälper dig att skriva din klientkod i något av C ++, C, C #, Java, Delphi eller Python programmeringsspråk.

Programmet använder BMessage-liknande muskler :: Meddelanden, stöder sändning av utplattad muskel :: Meddelanden mellan datorer via TCP (Transmission Control Protocol) -strömmar, använder en & musdad server & rdquo; på en server maskin, så att du kan skriva klientprogram som kan användas för att kommunicera med servern.

Dessutom innehåller den enkla och multi-threaded meddelandep APIs som stöder alla ovannämnda programmeringsspråk. Den "muscled" servern & rdquo; kan enkelt anpassas genom att definiera ett meddelande-streaming-protokoll eller en sessionlogik.

Komma igång med MUSCLE

Efter en framgångsrik inloggning kan klientprogrammen bestämma vem som är inloggad på den centrala servern, såväl som att lagra muskler :: Meddelanden i RAM (systemminne) och skicka muskler :: Meddelanden till andra klienter som är anslutna till servern. Observera att klientprogram kan abonnera på specifika data på servern och få omedelbara meddelanden när data ändras.


Stöder ett brett spektrum av meddelandevägar

Programvaran har utformats för att stödja ett brett utbud av meddelandedragningar, inklusive unicast-stil, sändningsstil och multicast-stil, genom en intelligent, hierarkisk mönster-matchande routermekanism.


Stödda operativsystem och tillgänglighet

MUSCLE körs på ett POSIX-kompatibelt operativsystem. Det distribueras som ett enda universellt källarkiv som låter användarna optimera applikationen för sitt GNU / Linux-system. Både 32-bitars och 64-bitars maskinplattformar stöds nu.

Vad är nytt i den här utgåvan:

  • test / Makefile-mt försöker inte längre kompilera testreflektering utom när det körs på ett operativsystem som testreflektering stöder.
  • Gjorde lite mindre redigering och omorganisering av "MUSCLE med exempel" sidor.
  • Ersatte ett antal `taggar` i MkDocs med [URLs] (...)
  • Ta bort privat arv från CountedObject från alla klasser som hade det - nu innehåller de en variabel CountedObject privat medlem istället. Detta gjordes bara för att allt det privata arvet klämde upp DOxygen arvsgraven.
  • Tillagde ett DECLARE_COUNTED_OBJECT-makro till CountedObject.h så att eventuellt minnesöverhuvud för CountedObjects kan elimineras i fall där objekträkning inte önskas.
  • Ta bort support för -DMUSCLE_AVOID_OBJECT_COUNTING och lägg till ett -DMUSCLE_ENABLE_OBJECT_COUNTING-makro på plats. (Det betyder att CountedObject-klassen nu är inaktiverad för standard och måste uttryckligen aktiveras för att kunna använda den)
  • Tillagd "MUSCLE enligt exempel" dokumentation för MiscUtilityFunctions. {cpp, h}
  • Ändrade ett antal `taggar 'i källan MUSCLE-för-exempel MkDocs i [URL] så att de metoder de nämner snabbt kan granskas.
  • server / Makefile anger nu libmuscle.a efter huvudfilen () .o
  • Lös några gcc varningar i testmappen (per Mika förslag)
  • UnparseFile () citerade inte sökord med mellanslag ordentligt. Fast.
  • Fixade beroenden i "MUSCLE med exempel" exempel "Makefiles."

Vad är nytt i version:

  • Lades till en ShrinkToFit () bekvämlighetsmetod till Queue, Hashtable, och strängklasser. Denna metod krymper objektet så att mängden minne som det har tilldelats internt matchar storleken på de data som den faktiskt håller.
  • Hashtable :: Se till att Size () och Queue: EnsureSize () nu ta ett valfritt (allowShrink) argument, att (om den är satt till true) tillåter objektets internt tilldelade array att omfördelas mindre om det är större än nödvändigt.
  • Tweaked Buffer-expansionsbeteendet för String-klassen är lite effektivare.
  • Tillagda ett skydd mot en eventuell oändlig recursion som kan uppstå vid loggning av en "OUT OF MEMORY" fel efter ett minnesallokeringsfel om en LogCallback försökte tilldela minne.

Vad är nytt i version 6.01:

  • Tillagde en PrependWord () -metod till strängklassen.
  • Tillagd WithReplacements () bekvämlighetsmetoder till String-klassen.
  • Tillagde en SetExplicitDelayMicros () -metod till klassen DetectNetworkConfigChangesSession.
  • Tillagde en IsCopperDetected () -metod till NetworkInterfaceInfo-klassen, så den koden kan avgöra om en Ethernet-uttag har en kabel ansluten till den.
  • Tillagde en "quietsend" argument till hexterm.
  • Den virtuella metoden NetworkInterfacesChanged () i klassen DetectNetworkConfigChangesSession har ändrats för att ta ett argument som beskriver vilka nätverksgränssnitt som särskilt har ändrats. Denna funktionalitet implementeras för närvarande bara under Linux, MacOS / X och Windows. För andra operativsystem kommer argumentet alltid att vara en tom lista.
  • Fixat ett fel i Linux-implementeringen av DetectNetworkConfigChangesSession som kan orsaka ett segmenteringsfel om recvmsg () returnerade ett fel (t ex på grund av att en signal mottogs).

Vad är nytt i version 6.00:

  • Skriv om klassen SSLSocketDataIO för att fungera bättre med icke-blockering I / O (i kombination med den nya SSLSocketAdapterGateway-klassen).
  • Tillagda implementeringar av SSLSocketDataIO :: SetPrivateKey () och SSLSocketDataIO :: SetCertificate () som tar en ByteBuffer som argument.
  • Tillagde en SSLSocketAdapterGateway-klass som används för att hantera OpenSSLs interna tillståndsmaskin när du använder en SSLSocketDataIO-klass med din gateway.
  • Tillagd SetSSLPrivateKey () och GetSSLPrivateKey () metoder till ReflectServer-klassen, för att möjliggöra SSL-autentisering på alla inkommande TCP-anslutningar. Dessa metoder är tillgängliga iff MUSCLE_ENABLE_SSL är definierad.
  • Tillagd SetSSLPublicKeyCertificate () och GetSSLPublicKeyCertificate () -metoder till klassen ReflectServer, för att lättare möjliggöra SSL-autentisering vid utgående TCP-anslutningar. Dessa metoder är tillgängliga iff MUSCLE_ENABLE_SSL är definierad.
  • Tillagd SetSSLPrivateKey () och SetSSLPublicKeyCertificate () -metoder till klassen MessageTransceiverThread, för att lättare aktivera SSL-funktionalitet vid användning av gängad I / O.
  • Lades till en ssl_data-mapp med viss information om hur man genererar OpenSSL public / private keypairs och ett exempel som ska användas för att testa OpenSSL.
  • När MUSCLE_ENABLE_SSL är definierat, accepterar muskeln nu ett valfritt "privatekey = filnamn" -argument. När det är angivet, aktiveras SSL-läge och muskler accepterar endast inkommande TCP-anslutningar som innehåller offentliga nycklar som matchar den privata nyckeln / certifikatet.
  • När MUSCLE_ENABLE_SSL är definierad, accepterar portablereflectclient och qt_example nu ett valfritt "publickey = filename" -argument. När det är angivet aktiveras SSL-läge och dessa klienter kommer att ansluta till muskler med OpenSSL och presentera den här filen som deras referenser.
  • Tillagda en "Animate & quot; kryssrutan till qt_example demo. Om du kontrollerar det får fönstret att flytta dess indikator runt automatiskt. Det här är roligt och också användbart om du vill testa ett scenario där flera kunder genererar trafik samtidigt.
  • Gör qt_example demo sötare.
  • Omdirigerar C ++ 11-hjälparmakronerna i Hashtable.h och Queue.h för att göra dem mindre benägna att kollidera med andra paketets makron. * Fixat några mindre fel i SSLSocketDataIO-klassen. o Byt namn på SSLSocketDataIO :: SetKey () till SetPrivateKey (). o Byt namn på SSLSocketDataIO :: SetCertificate () till SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () är nu en virtuell metod.

Vad är nytt i version 5.92:

  • Förbättrat stöd för C ++ 11 flytt-semantik i klasserna Queue and Hashtable (aktiverad endast när -DMUSCLE_USE_CPLUSPLUS11 är definierad)
  • Tillagde lite instrument till String-klassen så att jag kan se hur många gånger ett String-objekt kopieras, flyttas, etc (aktiverat endast när -DMUSCLE_COUNT_STRING_COPY_OPERATIONS är definierat)
  • Tillagde en PrintAndClearStringCopyCounts () -funktion som kommer att skriva ut strängoperationsdata som samlats in ovan.
  • Tillagde lite SFINAE magi till muscleSwap () så att den byter genom att ringa SwapContents () när det är möjligt, snarare än genom att kopiera till ett temporärt objekt.
  • Tillagd en initialiseringslista-konstruktör och överbelastning av AddTailMulti () till köklassen (tillgänglig endast när -DMUSCLE_USE_CPLUSPLUS11 är definierad)
  • Byt namn på kö och övermatning av kö i Queue: AddTail () till AddTailMulti (), för att undvika konflikter med det nya C ++ 11-mallparsing-stödet.
  • Omdirigerade kö och övermatning av kö i Queue :: AddHead () till AddHeadMulti (), för att undvika konflikter med det nya C ++ 11-mallparsing-stödet.
  • Ersätt MCRASH_IMPL makro med ett samtal för att hävda (false).
  • Lite mer Android-kompatibilitet tweakage.
  • Många av programmen i testmappen samlade inte under C ++ 11. Fast.
  • Fixade flera potentiella buggar som upptäcktes av clangs statiska analysverktyg.

Vad är nytt i version 5.91:

  • Tillagd EnsureCanPut () -metod till Hashtable-klassen.
  • Tillagd EnsureCanAdd () bekvämmetod till köklassen.
  • Ändrad DoMutexAtomicIncrement () för att vara en inline-funktion för att göra det effektivare.
  • Ändrad QMessageTransceiverThread och QAcceptSocketsThread för att ringa QCoreApplication :: postEvent () snarare än QApplication :: postEvent (), för att tillåta icke-GUI Qt apps.
  • Uppdaterad Beginners Guide-dokument för att återspegla MUSCLEs förbättrade UDP-stöd.
  • Sammanslagna i vissa ändringar av Android-kompatibilitet som tillhandahålls av Jean-FranA§ois Mullet.
  • Användning av kompileringsflaggan MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS skulle leda till att MUSCLE kraschar vid start på grund av en problemlösning. Detta har blivit fixat nu.
  • MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS kompilera flaggan användes tidigare endast om inget annat genomförande av AtomicCounter var tillgängligt. Nu har flaggan högre prioritet, så inställningen av flaggan innebär att Mutexes kommer att användas, även om en annan (effektivare) mekanism är tillgänglig.

Vad är nytt i version 5.90:

  • Tillagde en GetPacketMaximumSize () -metod till DataIO-klassen för att tillåta gatewaykod att hantera UDP-stilpaketiserad kommunikation mer intelligent.
  • MessageIOGateway fungerar nu användbart tillsammans med UDPSocketDataIO.
  • Tillagda CreateObjectFromArchiveMessage () templerade funktioner till Message.h, för att fungera som en återställande sida mot GetArchiveMessageFromPool (), etc.
  • AtomicCounter :: AtomicIncrement () returnerar nu en booleska (true iff det nya motvärdet är lika med en).
  • Modifierade HashtableIterator-klassen så att skrivskyddade Hashtable-iterationer är trådgängliga även om flaggan HTIT_FLAG_NOREGISTER inte anges.
  • Tillagde en muscle_thread_id-klass till SetupSystem.h, för att korrekt representera ett tråd-ID på ett genomförande-neutralt sätt.
  • Tillagt ett "dödläge" Program till testmappen. Detta program riskerar medvetet att skapa ett dödläge, som ett sätt att utöva / demonstrera deadlockfinder-testet.
  • Tillagd support för en -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS kommandoradsflagga, för dem som hellre vill undvika överliggande automatiska trådsäkerhet och lovar att leverera HTIT_FLAG_NOREGISTER-argument manuellt.
  • Tillagde en valfri LRU-uppslagskache till GetHostByName () -funktionen, så att den kan returnera snabbare när samma värdnamn löser sig om och om igen.
  • Tillagde en SetHostNameCacheSettings () -funktion som aktiverar och justerar LRU-uppslagningscachen i GetHostByName ().
  • Tillagt stöd för "dnscache" och "dnscachesize" kommandoradsargument i HandleStandardDaemonArgs (), för att tillåta kommandoradsspecifikation av LRU-uppslagskachens beteende.
  • Ändrade Hashtable-klassen så att _iterHead, _iterTail och _freeHead medlemsvärden nu är uint32s snarare än pekare, för att minska minnesförbrukningen.
  • Ta bort metoden ThreadLocalStorage :: SetFreeHeldObjectsOnExit () och lägger till ett booleskt argument till sin konstruktör istället eftersom pthreads inte tillåter dig att ändra den inställningen efter att pthread_key_create () har kallats.
  • Flytta GetCurrentThreadID () till muscle_thread_id-klassen som en statisk medlemsfunktion och ändra den för att returnera ett muscle_thread_id-objekt snarare än unsigned long.
  • Ändrade standard värdnamn för sessioner utan en känd IP-adress från & quot; & quot; till "_unknown_", eftersom vinkelparenteserna i den tidigare strängen har en särskild betydelse för 5,84-utgåvan, och som skulle kunna störa nodvägs-matchning på oavsiktliga sätt.
  • Metoden CalculateChecksum () i Message.cpp har modifierats för att vara mer robust när det gäller att upptäcka dataöverföringsskillnader.
  • Ta bort stöd för MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS från AtomicCounter.h, eftersom Qts QAtomicInt-klass inte stöder den funktionalitet som AtomicIncrement () -metoden har fått nytt returvärde.
  • Ta bort MessageIOGateway :: FlattenMessage () och MessageIOGateway :: UnflattenMessage (). Tillagt i deras plats: MessageIOGateway :: FlattenHeaderAndMessage () och MessageIOGateway :: UnflattenHeaderAndMessage (). Dessa nya metoder behandlar både rubrikbyte och meddelandekroppen samtidigt.
  • Tillagde en utpproxy.vcproj-fil till testmappen, för att hjälpa till att kompilera utpproxy under Windows.
  • Meddelande: Flatten () repeterar nu över fälten i meddelandet en gång i stället för två gånger.
  • GetCurrentThreadID () är nu en inline-funktion, eftersom den nu kan kallas ofta av HashtableIterator.
  • Ändrade deadlockfinder-koden för att använda köer istället för Hashtables, eftersom muscle_thread_id inte längre kan användas som en Hashtable-tangenttyp.
  • Fast testudp.cpp för att korrekt använda en MessageIOGateway för sin UDP-kommunikation.
  • Tweaked ifdefs i FilePathInfo.cpp lite mer så att statInfo.st_birthtimespec inte kommer att nås när du använder MacOS / X SDK som inte tillhandahåller det.
  • MessageDataIOGateway försöker inte längre upplösa ett meddelande från en zlib-deflaterad databuffert som den inte kunde återuppblåsa.
  • Lös en bugg i SendDataUDP () som kan orsaka att SendDataUDP () felaktigt returnerar ett fel vid överföring till en multicast-adress med icke-blockerande läge och utmatningsbufferten var full.

Vad är nytt i version 5.85:

  • Tillagd LogTime (MUSCLE_LOG_DEBUG) samtal till alla felvägar i MessageIOGateway :: DoInputImplementation () och Meddelande :: Unflatten (), så att det är lättare att bestämma när TCP-anslutningar avbryts på grund av data korruption.
  • Tillagd en PreviousOperationHadTransientFailure () -funktion, som returnerar sant iff errno är EINTR eller ENOBUFS.
  • Ange spamspersecond = -1 kommer nu att ge hexterm för att skicka spamdata så fort som möjligt.
  • SocketMultiplexer.hs implementering av MUSCLE_USE_POLL levererade POLLERR till WSAPoll () men WSAPoll () stöder inte POLLERR så att WSAPoll () skulle returnera ett fel när detta inträffade. Arbetade kring problemet genom att filtrera ut POLLERR när du kompilerar under Windows.
  • Lös en bugg där skickas () som returnerar ENOBUFS kan orsaka att socketanslutningen avslutas, även om ENOBUFS inte är ett dödligt tillstånd.
  • SocketMultiplexer.cpp skulle inte kompilera när MUSCLE_USE_POLL definierades. Fast.
  • Metoden ZLibCodec :: Deflate () skulle inte komprimera all data i en mycket stor buffert (t ex över 42 MB). Fast.

Vad är nytt i version 5.84:

  • StringMatcher-klassens numeriska radsyntaxa har utökats så att du nu kan ange flera intervall. Exempelvis "& quot; skulle matcha strängar "19", "20", "21", "25", "30", "31", [...] och "50".
  • Tillagd GetCurrentTime64ForRunTime64 () och GetRunTime64ForCurrenTime64 () konverteringsfunktioner till TimeUtilityFunctions.h.
  • Tillagde en GetDescendant () verktygsmetod till DataNode-klassen.
  • Tillagda C ++ 11 flyttkonstruktörer och flytt-tilldelningsoperatörer till klasserna Hashtable, Queue, String, Message och ByteBuffer. För bakåtkompatibilitet med äldre kompilatorer kommer denna kod endast att sammanställas om -DMUSCLE_USE_CPLUSPLUS11 är specificerad på kompileringsraden.
  • SharedMemory-klassen kommer nu att sätta sig in i en icke-delad minnes klass om -DMUSCLE_FAKE_SHARED_MEMORY är angivet.
  • Tillagde ett testfilepathinfo-test i testmappen.
  • Uppdaterade alla upphovsrättsmeddelanden rubriker för att läsa 2000-2013 Meyer Sound.
  • Tillagda mellanslag mellan makro tokens (t.ex. UINT32_FORMAT_SPEC) och strängkonstanter (t ex "Hello") för att göra C ++ 11-kompilatorer glada.
  • ByteBuffer.cpp hade ett syntaxfel som skulle hindra det från att kompilera på big endian-värdar. Fast.
  • Endast MacOS / X: Replaced deprecated Carbon function calls med Mach equivalents, för att undvika avskrivningsvarningar under 10.8.x.

Vad är nytt i version 5.83:

  • Tillagda bekvämlighetsversioner av InflateByteBuffer () och DeflateByteBuffer ta en ByteBufferRef som ett argument.
  • Ta bort några föråldrade / oanvända metoder (Se till attBufferSize () och FreeLargeBuffer ()) från klassen AbstractMessageIOGateway.
  • Fixat några typsnitt i kommentarerna i delphi-undermappen.
  • Klassen Hashtable genererar inte längre varningar när de sammanställs under MSVC med -DMUSCLE_AVOID_MINIMIZED_HASHTABLES definierad.
  • Lös en bugg i IPAddressAndPort :: ToString () som orsakade att IPv4-adresssträngar formaterades tvetydigt när (preferIPv4Style) var inställd på falskt.

Liknande mjukvara

Annan programvara för utvecklare Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Kommentarer till MUSCLE

Kommentarer hittades inte
Kommentar
Slå på bilder!