MUSCLE

Skjermbilde programvare:
MUSCLE
Prog.varedetaljer:
Versjon: 6.82 Oppdatert
Last opp dato: 22 Jun 18
Utvikler: Jeremy Friesner
Lisens: Gratis
Popularitet: 26

Rating: 5.0/5 (Total Votes: 1)

MUSKEL står for Multi User Server Client Linkage Environment, og det er et åpen kildekode, gratis, robust, skalerbart og kryptert plattformsmeldingssystem som består av server- og klientkomponenter. Det vil hjelpe deg å skrive all slags distribuert programvare, fra multiplayer spill og IRC chat klienter, til SETI beregning apps.


Funksjoner med et blikk

Med MUSCLE kan brukerne enkelt tilpasse den medfølgende "muscled serveren" ved å definere sin egen øktlogikk eller meldingsstrømprotokoll. Programvaren hjelper deg med å skrive klientkoden i C ++, C, C #, Java, Delphi eller Python programmeringsspråk.

Programmet bruker BMessage-lignende muskler :: Meldinger, støtter sending av flatete muskler :: Meldinger mellom datamaskiner via TCP (Transmission Control Protocol) -strømmer, utnytter en & muskled server & rdquo; på en server maskin, slik at du kan skrive klientprogrammer som kan brukes til å kommunisere med serveren.

I tillegg inneholder det enkle og multi-threaded meldings-APIer som støtter alle de nevnte programmeringsspråkene. Den "muscled" serveren & rdquo; kan enkelt tilpasses ved å definere en meldingsstrømprotokoll eller en øktlogikk.

Komme i gang med MUSCLE

Etter en vellykket pålogging kan klientprogrammene avgjøre hvem som er logget inn på den sentrale serveren, samt å lagre muskler :: Meldinger i RAM (systemminne) og sende muskel :: Meldinger til andre klienter som er koblet til til serveren. Vær oppmerksom på at klientprogrammer kan abonnere på bestemte data på serveren, og få øyeblikkelige varsler når dataene endres.


Støtter et bredt spekter av meldingsrutinger

Programvaren er designet for å støtte et bredt spekter av meldingsrutinger, inkludert unicast-stil, kringkastingsstil og multicast-stil, gjennom en intelligent, hierarkisk mønster-matching rutemekanisme.


Støttede OSer og tilgjengelighet

MUSCLE kjører på alle POSIX-kompatible operativsystemer. Den distribueres som et enkelt, universalt kilderarkiv som lar brukerne optimalisere applikasjonen for sitt GNU / Linux-system. Både 32-biters og 64-bits maskinvareplattformer støttes nå.

Hva er nytt i denne versjonen:

  • tester / Makefile-mt prøver ikke lenger å kompilere testrefleksjon, bortsett fra når du kjører på et operativsystem som testreflectsession støtter.
  • Gjorde noen mindre redigering og re-arrangering av "MUSCLE med eksempel" sider.
  • Erstatt en rekke `tagger` i MkDocs med [URLs] (...)
  • Fjernet privat arv av CountedObject fra alle klassene som hadde det - nå inkluderer de en variabel CountedObject privat medlem i stedet. Dette ble gjort bare fordi all den private arven var klamrer opp DOxygen arv grafer.
  • Lagt til en DECLARE_COUNTED_OBJECT-makro til CountedObject.h slik at eventuell minneoverhead for CountedObjects kan elimineres i tilfeller der objekttelling ikke er ønsket.
  • Fjernet støtte for -DMUSCLE_AVOID_OBJECT_COUNTING og la til en -DMUSCLE_ENABLE_OBJECT_COUNTING makro på plass. (Det vil si, CountedObject-klassen er nå deaktivert for standard og må være eksplisitt aktivert for å kunne bruke den)
  • Lagt til "MUSCLE by Example" dokumentasjon for feilfunksjonsfunksjoner. {cpp, h}
  • Endret et antall «tagger» i MUSCLE-for-eksempel-MkDocs-kilden til [URL], slik at metodene de nevner, kan vurderes raskt.
  • server / Makefile spesifiserer nå libmuscle.a etter hovedfilen () .o filen.
  • Fiks noen gcc-advarsler i testmappen (per Mika's forslag)
  • UnparseFile () oppgav ikke søkeord med mellomrom på riktig måte. Fast.
  • Fastsett avhengighetene i "MUSCLE" ved hjelp av eksempel & quot; eksempler 'Makefiles.

Hva er nytt i versjon:

  • Lagt til en ShrinkToFit () bekvemmelighetsmetode til køen, Hashtable, og strengklasser. Denne metoden krymper objektet slik at mengden minne som er tildelt internt, samsvarer med størrelsen på dataene den faktisk holder.
  • Hashtable: EnsureSize () og Queue: EnsureSize () nå ta et valgfritt (allowShrink) argument, som (hvis satt til sant) tillater objektets internt allokerte array å bli omfordelt mindre hvis det er større enn nødvendig.
  • Forbedret bufferutvidelsen til String-klassen for å være litt mer effektiv.
  • Lagt til en vakt mot en potensiell uendelig rekursjon som kan oppstå under logging av et "UTMELDING" feil etter en feilsøkingsfeil hvis en LogCallback forsøkte å tildele minne.

Hva er nytt i versjon 6.01:

  • Lagt til en PrependWord () bekvemmelighetsmetode til String-klassen.
  • Lagt til WithReplacements () bekvemmelighetsmetoder til String-klassen.
  • Lagt til en SetExplicitDelayMicros () -metode til klassen DetectNetworkConfigChangesSession.
  • Lagt til en IsCopperDetected () -metode til NetworkInterfaceInfo-klassen, slik at koden kan fortelle om en Ethernet-kontakt har en kabel koblet til den.
  • Lagt til en "quietsend" argument til hexterm.
  • Den virtuelle metoden NetworkInterfacesChanged () i klassen DetectNetworkConfigChangesSession er endret for å ta et argument som utpeker hvilke nettverksgrensesnitt spesielt har endret seg. Denne funksjonaliteten er for tiden bare implementert under Linux, MacOS / X og Windows. For andre operativsystemer vil argumentet alltid være en tom liste.
  • Løst en feil i Linux-implementeringen av DetectNetworkConfigChangesSession som kan forårsake en segmenteringsfeil hvis recvmsg () returnerte en feil (for eksempel på grunn av at et signal mottas).

Hva er nytt i versjon 6.00:

  • Skriv om klassen SSLSocketDataIO for å fungere bedre med ikke-blokkerende I / O (i forbindelse med den nye SSLSocketAdapterGateway-klassen).
  • Lagt til implementeringer av SSLSocketDataIO :: SetPrivateKey () og SSLSocketDataIO :: SetCertificate () som tar en ByteBuffer som et argument.
  • Lagt til en SSLSocketAdapterGateway-klasse som brukes til å administrere OpenSSLs interne tilstandsmaskin når du bruker en SSLSocketDataIO-klasse med gatewayen din.
  • Lagt til SetSSLPrivateKey () og GetSSLPrivateKey () metoder til ReflectServer-klassen, for enklere å aktivere SSL-godkjenning på alle innkommende TCP-tilkoblinger. Disse metodene er tilgjengelige iff MUSCLE_ENABLE_SSL er definert.
  • Lagt til SetSSLPublicKeyCertificate () og GetSSLPublicKeyCertificate () -metoder til klassen ReflectServer, for lettere å aktivere SSL-godkjenning på utgående TCP-tilkoblinger. Disse metodene er tilgjengelige iff MUSCLE_ENABLE_SSL er definert.
  • Lagt til SetSSLPrivateKey () og SetSSLPublicKeyCertificate () metoder til MessageTransceiverThread-klassen, for enklere å aktivere SSL-funksjonalitet ved bruk av gjenget I / O.
  • Lagt til en ssl_data-mappe med litt informasjon om generering av OpenSSL offentlige / private tastaturer, og et eksempel på keypair for bruk i testing av OpenSSL.
  • Når MUSCLE_ENABLE_SSL er definert, aksepterer muscled nå et valgfritt "privatekey = filnavn" -argument. Når det er angitt, vil SSL-modus aktiveres og muskulert aksepterer bare innkommende TCP-tilkoblinger som viser offentlige nøkler som samsvarer med denne private nøkkelen / sertifikatet.
  • Når MUSCLE_ENABLE_SSL er definert, vil portablereflectclient og qt_example nå akseptere et valgfritt "publickey = filnavn" -argument. Når det er angitt, vil SSL-modus bli aktivert, og disse klientene vil koble til musklene ved hjelp av OpenSSL og presentere denne filen som deres legitimasjonsbeskrivelser.
  • Lagt til en "Animate" avkrysningsboks til qt_example demo. Ved å sjekke det får vinduet til å flytte indikatoren rundt automatisk. Dette er morsomt og også nyttig hvis du vil teste et scenario der flere kunder genererer trafikk samtidig.
  • Gjør qt_example demo vakrere.
  • Omdøpt C ++ 11-hjelpemakroene i Hashtable.h og Queue.h for å gjøre dem mindre tilbøyelige til å kollidere med andre pakkers makroer. * Fastsatte noen mindre feil i SSLSocketDataIO-klassen. o Omdøpt SSLSocketDataIO :: SetKey () til SetPrivateKey (). o Omdøpt SSLSocketDataIO :: SetCertificate () til SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () er nå en virtuell metode.

Hva er nytt i versjon 5.92:

  • Forbedret støtte for C ++ 11 flytte-semantikk i køen og Hashtable-klassene (bare aktivert når -DMUSCLE_USE_CPLUSPLUS11 er definert)
  • Lagt til noen instrumentering i String-klassen, så jeg kan se hvor mange ganger et Stringobjekt blir kopiert, flyttet, etc (bare aktivert når -DMUSCLE_COUNT_STRING_COPY_OPERATIONS er definert)
  • Lagt til en PrintAndClearStringCopyCounts () -funksjon som vil skrive ut dataene for String-operasjonen samlet over.
  • Lagt til noen SFINAE magi til muscleSwap () slik at den vil bytte ved å ringe SwapContents () når det er mulig, i stedet for å kopiere til et midlertidig objekt.
  • Lagt til en initialiseringsliste-konstruktør og overbelastning av AddTailMulti () til køklassen (bare tilgjengelig når -DMUSCLE_USE_CPLUSPLUS11 er definert selvfølgelig)
  • Omdøpt køen og arrayoverbelastningene i køen: AddTail () til AddTailMulti (), for å unngå konflikter med den nye C ++ 11-skjermbildesamlingen.
  • Omdøpt køen og arrayoverbelastningene i køen :: AddHead () til AddHeadMulti (), for å unngå konflikter med den nye C + + 11-skjermbildesamlingen.
  • Erstatt MCRASH_IMPL-makro med en samtale for å påstå (falsk).
  • Litt mer Android-kompatibilitet tweakage.
  • Mange av programmene i testmappen samler ikke under C ++ 11. Fast.
  • Fiks flere potensielle feil som ble oppdaget av clangs statiske analyseverktøy.

Hva er nytt i versjon 5.91:

  • Lagt til EnsureCanPut () bekvemmelighetsmetode til Hashtable-klassen.
  • Lagt til EnsureCanAdd () bekvemmelighetsmetode til køklassen.
  • Endret DoMutexAtomicIncrement () for å være en inline-funksjon for å gjøre det mer effektivt.
  • Endret QMessageTransceiverThread og QAcceptSocketsThread for å ringe QCoreApplication :: postEvent () i stedet for QApplication :: postEvent (), for å tillate ikke-GUI Qt apps.
  • Oppdaterte Beginners Guide-dokumentet for å gjenspeile MUSCLEs forbedrede UDP-støtte.
  • Fusjonert i noen endringer i Android-kompatibilitet levert av Jean-FranA§ois Mullet.
  • Bruk av MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS kompilere flagg ville føre til at MUSCLE krasjer ved oppstart på grunn av et problem med driften. Dette har blitt løst nå.
  • MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS kompilere flagg ble tidligere bare brukt hvis ingen annen implementering av AtomicCounter var tilgjengelig. Nå har flagget høyere prioritet, så å sette flagget betyr at Mutexes vil bli brukt, selv om en annen (mer effektiv) mekanisme er tilgjengelig.

Hva er nytt i versjon 5.90:

  • Lagt til en GetPacketMaximumSize () -metode til DataIO-klassen for å tillate gateway-koden å håndtere UDP-stilpakket kommunikasjon mer intelligent.
  • MessageIOGateway fungerer nå nyttig sammen med UDPSocketDataIO.
  • Lagt til CreateObjectFromArchiveMessage () templerte funksjoner til Message.h, for å tjene som en gjenopprettingssiden mot GetArchiveMessageFromPool (), etc.
  • AtomicCounter :: AtomicIncrement () returnerer nå en boolsk (sann iff den nye motverdien er lik en).
  • Endret HashtableIterator-klassen slik at skrivebeskyttede iterasjoner bare er trådsikker, selv om flagget HTIT_FLAG_NOREGISTER ikke er angitt.
  • Lagt til en muscle_thread_id-klasse til SetupSystem.h, for å representere en tråd-ID på en implementasjonsnøytral måte.
  • Lagt til en "deadlock" program til testmappen. Dette programmet med vilje risikerer å skape en deadlock, som en måte å utøve / demonstrere deadlockfinder testen på.
  • Lagt til støtte for en -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS kommandolinjeflagg, for de som hellere vil unngå overhead av automatisk trådsikkerhet og lover å levere HTIT_FLAG_NOREGISTER-argumenter for hånd der det er nødvendig.
  • Lagt til en valgfri LRU oppslagskache til GetHostByName () -funksjonen, slik at den kan returnere raskere når de samme vertsnavnene blir løst igjen og igjen.
  • Lagt til en SetHostNameCacheSettings () -funksjon som aktiverer og justerer LRU-oppslagshukommelsen i GetHostByName ().
  • Lagt til støtte for "dnscache" og "dnscachesize" kommandolinjeparametere i HandleStandardDaemonArgs (), for å tillate kommandolinjespesifikasjon av LRU oppslagskacheens oppførsel.
  • Endret Hashtable-klassen slik at medlemmene _iterHead, _iterTail og _FreeHead er nå uint32s i stedet for pekere, for å redusere minnebruk.
  • Fjernet ThreadLocalStorage :: SetFreeHeldObjectsOnExit () -metoden, og la et boolesk argument til sin konstruktør i stedet, siden pthreads ikke lar deg endre denne innstillingen etter at pthread_key_create () er blitt kalt.
  • Flyttet GetCurrentThreadID () inn i klassen muscle_thread_id som en statisk medlemsfunksjon, og endret den for å returnere en muscle_thread_id-objekt i stedet for usignert lenge.
  • Endret standard vertsnavn for økter uten en kjent IP-adresse fra & quot; & quot; til "_unknown_", som vinkelbeslagene i den tidligere strengen har en spesiell betydning som av 5.84-utgivelsen, og det kan forstyrre knutepassering på utilsiktede måter.
  • Metoden CalculateChecksum () i Message.cpp er blitt modifisert for å være mer robust for å oppdage dataoverføringsforskjeller.
  • Fjernet støtten til MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS fra AtomicCounter.h, siden Qt's QAtomicInt-klassen ikke støtter funksjonaliteten som AtomicIncrement () -metoden har til en ny returverdi.
  • Fjernet MessageIOGateway :: FlattenMessage () og MessageIOGateway :: UnflattenMessage (). Lagt til i deres sted: MessageIOGateway :: FlattenHeaderAndMessage () og MessageIOGateway :: UnflattenHeaderAndMessage (). Disse nye metodene omhandler både header bytes og Message body på samme tid.
  • Lagt til en utpproxy.vcproj-fil i testmappen, for å kompilere utpproxy under Windows.
  • Melding: Flatten () nå iterates over feltene i Meldingen en gang, i stedet for to ganger.
  • GetCurrentThreadID () er nå en inline-funksjon, siden den nå kan bli kalt ofte av HashtableIterator.
  • Endret deadlockfinder-koden for å bruke køer i stedet for Hashtables, siden muscle_thread_id ikke lenger kan brukes som nøkkeltype for Hashtable.
  • Fast testudp.cpp for å bruke en MessageIOGateway for sin UDP-kommunikasjon.
  • Tweaked ifdefs i FilePathInfo.cpp litt mer, slik at statInfo.st_birthtimespec ikke vil bli åpnet når du bruker MacOS / X SDK som ikke gir den.
  • MessageDataIOGateway prøver ikke lenger å oppheve en melding fra en zlib-deflatert databuffer som den ikke kunne gjenoppblåse.
  • Løst en feil i SendDataUDP () som kan føre til at SendDataUDP () feilaktig returnerer en feil ved sending til en multicast-adresse ved hjelp av ikke-blokkeringsmodus, og utdatabufferen var full.

Hva er nytt i versjon 5.85:

  • Lagt til LogTime (MUSCLE_LOG_DEBUG) samtaler til alle feilbanene i MessageIOGateway :: DoInputImplementation () og Message :: Unflatten (), slik at det er lettere å bestemme når TCP-tilkoblinger blir avbrutt på grunn av data korrupsjon.
  • Lagt til en PreviousOperationHadTransientFailure () -funksjon, som returnerer sann iff errno, er EINTR eller ENOBUFS.
  • Angi spamspersecond = -1 vil nå forårsake heksetermin for å sende spamdata så fort som mulig.
  • SocketMultiplexer.hs MUSCLE_USE_POLL-implementering var å levere POLLERR til WSAPoll (), men WSAPoll () støtter ikke POLLERR, så WSAPoll () ville returnere en feil da dette skjedde. Fungerte rundt problemet ved å filtrere ut POLLERR ved kompilering under Windows.
  • Løst en feil der send () retur ENOBUFS kan føre til at stikkontakten avsluttes, selv om ENOBUFS ikke er en dødelig tilstand.
  • SocketMultiplexer.cpp ville ikke kompilere når MUSCLE_USE_POLL ble definert. Fast.
  • Metoden ZLibCodec :: Deflate () ville mislykkes i å komprimere alle dataene i en meget stor buffer (f.eks. over 42 MB). Fast.

Hva er nytt i versjon 5.84:

  • StringMatcher-klassens numeriske rekkevidde syntaks er utvidet, slik at du nå kan angi flere intervaller. For eksempel, "& quot; ville samsvare strenger "19", "20", "21", "25", "30", "31", [...] og "50".
  • Lagt til GetCurrentTime64ForRunTime64 () og GetRunTime64ForCurrenTime64 () konverteringsfunksjoner til TimeUtilityFunctions.h.
  • Lagt til en GetDescendant () bruksmetode til DataNode-klassen.
  • Lagt til C ++ 11 flyttekonstruksjoner og flytteoppdragsoperatører til klassene Hashtable, Queue, String, Message, and ByteBuffer. For bakoverkompatibilitet med eldre kompilatorer, vil denne koden kun bli kompilert dersom -DMUSCLE_USE_CPLUSPLUS11 er spesifisert på kompileringslinjen.
  • SharedMemory-klassen vil nå bli en del av ikke-delt-minnet hvis -DMUSCLE_FAKE_SHARED_MEMORY er spesifisert.
  • Lagt til en testfilepathinfo-test i testmappen.
  • Oppdatert alle opphavsrettsvarseloverskrifter for å lese 2000-2013 Meyer Sound.
  • Lagt mellomrom mellom makrotokener (for eksempel UINT32_FORMAT_SPEC) og strengekonstanter (for eksempel "Hei") for å gjøre C ++ 11-kompilatorer lykkelige.
  • ByteBuffer.cpp hadde en syntaksfeil som hindret den i å kompilere på big endian-verter. Fast.
  • Bare MacOS / X: Erstatt utdaterte Carbon-funksjonssamtaler med Mach-ekvivalenter for å unngå avskrivningsadvarsler under 10.8.x.

Hva er nytt i versjon 5.83:

  • Lagt bekvemmelighetsversjoner av InflateByteBuffer () og DeflateByteBuffer ta en ByteBufferRef som et argument.
  • Fjernet noen foreldede / ubrukte metoder (SikreBufferSize () og FreeLargeBuffer ()) fra klassen AbstractMessageIOGateway.
  • Fiks noen skrivefeil i kommentarene i delphi-undermappen.
  • Hashtable-klassen genererer ikke lenger advarsler når de blir utarbeidet under MSVC med -DMUSCLE_AVOID_MINIMIZED_HASHTABLES definert.
  • Løst en feil i IPAddressAndPort :: ToString () som forårsaket at IPv4-adressestrenger ble formet tvetydig når (preferIPv4Style) ble satt til feil.

Lignende programvare

MongoDB
MongoDB

17 Aug 18

GT.M
GT.M

18 Feb 15

MemSQL
MemSQL

20 Feb 15

Percona Server
Percona Server

20 Jan 18

Annen programvare fra utvikleren Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Kommentarer til MUSCLE

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!