MUSCLE

Software screenshot:
MUSCLE
Software detaljer:
Version: 6.82 Opdateret
Upload dato: 22 Jun 18
Udvikler: Jeremy Friesner
Licens: Gratis
Popularitet: 26

Rating: 5.0/5 (Total Votes: 1)

MUSKEL står for Multi User Server Client Linkage Environment, og det er et open source, gratis, robust, skalerbart og platformbaseret messaging-system, der består af server- og klientkomponenter. Det hjælper dig med at skrive alle former for distribueret software fra multiplayer-spil og IRC-chat-klienter til SETI-beregningsprogrammer.


Funktioner et overblik

Med MUSCLE kan brugerne nemt tilpasse den medfølgende "muscled server" ved at definere deres egen session logik eller messaging-streaming protokol. Softwaren hjælper dig med at skrive din klientkode i enten C ++, C, C #, Java, Delphi eller Python programmeringssprog.

Programmet bruger BMessage-lignende muskler :: Beskeder, understøtter afsendelse af fladmuskel :: Meddelelser mellem computere via TCP (Transmission Control Protocol) -strømme, anvender en & muskled server & rdquo; på en server maskine, så du kan skrive klientprogrammer, som kan bruges til at kommunikere med serveren.

Derudover indeholder den enkelt- og multireddet messaging API'er, der understøtter alle de ovennævnte programmeringssprog. Den & muskled server & rdquo; kan nemt tilpasses ved at definere en meddelelsesstrømprotokol eller en sessionlogik.

Kom godt i gang med MUSCLE

Efter et vellykket login kan klientprogrammerne bestemme, hvem der er logget ind på den centrale server, samt at gemme muskler :: Meddelelser i RAM (systemminne) og sende muskler :: Meddelelser til andre klienter, der er tilsluttet til serveren. Bemærk, at klientprogrammer kan abonnere på specifikke data på serveren og få øjeblikkelige meddelelser, når dataene ændres.


Understøtter en bred vifte af meddelelsesruter

Softwaren er designet til at understøtte en bred vifte af meddelelsesruter, herunder unicast-stil, broadcast-stil og multicast-stil, gennem en intelligent, hierarkisk mønster-matchende routingmekanisme.


Understøttede OS'er og tilgængelighed

MUSCLE kører på ethvert POSIX-kompatibelt operativsystem. Det distribueres som et enkelt universelt kilderarkiv, der giver brugerne mulighed for at optimere applikationen til deres GNU / Linux-system. Både 32-bit og 64-bit hardware platforme understøttes på nuværende tidspunkt.

Hvad er nyt i denne udgave:

  • test / Makefile-mt prøver ikke længere at kompilere testreflektion, undtagen når der udføres på et operativsystem, som testreflectsession understøtter.
  • Har nogle mindre redigering og re-arrangering af "MUSCLE" ved eksempel & quot; sider.
  • Erstattet en række `tags 'i MkDocs med [URLs] (...)
  • Fjernet private arv af CountedObject fra alle de klasser, der havde det - nu indbefatter de en variabel CountedObject private medlem i stedet. Dette blev kun gjort, fordi al den private arv stod op i DOxygen arv graferne.
  • Tilføjet en DECLARE_COUNTED_OBJECT-makro til CountedObject.h, så enhver mulig hukommelsesoverhead for CountedObjects kan fjernes i tilfælde, hvor objekttælling ikke er ønsket.
  • Fjernet support til -DMUSCLE_AVOID_OBJECT_COUNTING og tilføjede en -DMUSCLE_ENABLE_OBJECT_COUNTING-makro på stedet. (Dvs. CountedObject-klassen er nu deaktiveret-for-standard og skal eksplicit aktiveres for at kunne bruge den)
  • Tilføjet "MUSCLE med eksempel" dokumentation for misbrugsfunktioner. {cpp, h}
  • Ændret et antal `tags 'i MUSCLE-for-Example MkDocs-kilden til [urls], så de metoder, de nævner, hurtigt kan gennemgå.
  • server / Makefile angiver nu libmuscle.a efter hovedfilen () .o.
  • Fixerede nogle gcc advarsler i testmappen (per Mika's forslag)
  • UnparseFile () noterede ikke søgeord med mellemrum korrekt. Fast.
  • Fastgør afhængighederne i "MUSCLE" ved eksempel & quot; eksempler 'Makefiles.

Hvad er nyt i version:

  • Tilføjet en ShrinkToFit () bekvemmelighedsmetode til køen, Hashtable, og strengklasser. Denne metode krymper objektet, så mængden af ​​hukommelse, den har tildelt internt, svarer til størrelsen af ​​de data, den faktisk holder.
  • Hashtable :: SikreSize () og Queue: EnsureSize () nu tage et valgfrit (allowShrink) argument, som (hvis sat til true) gør det muligt for objektets internt allokerede array at blive omfordelt mindre, hvis det er større end nødvendigt.
  • Tweaked buffer-ekspansion opførsel af String klassen til at være en smule mere effektiv.
  • Tilføjet en vagt mod en potentiel uendelig rekursion, der kunne forekomme, mens du logger en "OUT OF MEMORY" fejl efter en fejl i hukommelsesallokering, hvis en LogCallback forsøgte at allokere hukommelse.

Hvad er nyt i version 6.01:

  • Tilføjet en PrependWord () -metode til strengklassen.
  • Tilføjet WithReplacements () bekvemmelighedsmetoder til strengklassen.
  • Tilføjet en SetExplicitDelayMicros () metode til klassen DetectNetworkConfigChangesSession.
  • Tilføjet en IsCopperDetected () -metode til klassen NetworkInterfaceInfo, så den kode kan fortælle om et Ethernet-stik har et kabel, der er tilsluttet det.
  • Tilføjet en "quietsend" argument til hexterm.
  • Den virtuelle metode NetworkInterfacesChanged () i klassen DetectNetworkConfigChangesSession er blevet ændret for at tage et argument, der beskriver, hvilke netværksgrænseflader der især er ændret. Denne funktionalitet implementeres for øjeblikket kun under Linux, MacOS / X og Windows. For andre operativsystemer vil argumentet altid være en tom liste.
  • Løst en fejl i Linux-implementeringen af ​​DetectNetworkConfigChangesSession, der kunne forårsage en segmenteringsfejl, hvis recvmsg () returnerede en fejl (f.eks. på grund af et signal modtaget).

Hvad er nyt i version 6.00:

  • Skriv om klassen SSLSocketDataIO for at fungere bedre med ikke-blokerende I / O (i forbindelse med den nye SSLSocketAdapterGateway-klasse).
  • Tilføjede implementeringer af SSLSocketDataIO :: SetPrivateKey () og SSLSocketDataIO :: SetCertificate (), der tager en ByteBuffer som et argument.
  • Tilføjede en SSLSocketAdapterGateway klasse, der bruges til at styre OpenSSLs interne state machine, når du bruger en SSLSocketDataIO klasse med din gateway.
  • Tilføjet SetSSLPrivateKey () og GetSSLPrivateKey () metoder til ReflectServer-klassen, for lettere at aktivere SSL-godkendelse på alle indgående TCP-forbindelser. Disse metoder er tilgængelige iff MUSCLE_ENABLE_SSL er defineret.
  • Tilføjede SetSSLPublicKeyCertificate () og GetSSLPublicKeyCertificate () metoder til ReflectServer-klassen, for lettere at aktivere SSL-godkendelse på udgående TCP-forbindelser. Disse metoder er tilgængelige iff MUSCLE_ENABLE_SSL er defineret.
  • Tilføjede SetSSLPrivateKey () og SetSSLPublicKeyCertificate () metoder til ClassTransceiverThread-klassen, så du lettere kan aktivere SSL-funktionalitet, når du bruger threaded I / O.
  • Tilføjet en ssl_data-mappe med nogle oplysninger om generering af OpenSSL offentlige / private keypairs og et eksempel keypair til brug ved testning af OpenSSL.
  • Når MUSCLE_ENABLE_SSL er defineret, accepterer muscled nu et valgfrit "privatekey = filnavn" argument. Når det er angivet, vil SSL-tilstand blive aktiveret og muskuleret, accepterer kun indgående TCP-forbindelser, der indeholder offentlige nøgler, der matcher denne private nøgle / certifikat.
  • Når MUSCLE_ENABLE_SSL er defineret, accepterer portablereflectclient og qt_example nu et valgfrit "publickey = filnavn" argument. Når der er angivet, vil SSL-tilstand blive aktiveret, og disse klienter vil oprette forbindelse til muskulatur ved hjælp af OpenSSL og præsentere denne fil som deres legitimationsoplysninger.
  • Tilføjet en "Animate & quot; afkrydsningsfeltet til qt_example demo. Ved at tjekke det får vinduet til at flytte indikatoren rundt automatisk. Dette er sjovt og også nyttigt, hvis du vil teste et scenario, hvor flere kunder genererer trafik samtidig.
  • Gør qt_example demo skønnere.
  • Omdøb C ++ 11-hjælpermakroerne i Hashtable.h og Queue.h for at gøre dem mindre tilbøjelige til at kollidere med andre pakker 'makroer. * Fixerede nogle mindre fejl i klassen SSLSocketDataIO. o Omdøbt SSLSocketDataIO :: SetKey () til SetPrivateKey (). o Omdøbt SSLSocketDataIO :: SetCertificate () til SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () er nu en virtuel metode.

Hvad er nyt i version 5.92:

  • Forbedret understøttelse af C ++ 11 move-semantics i køen og Hashtable-klasserne (kun aktiveret, når -DMUSCLE_USE_CPLUSPLUS11 er defineret)
  • Tilføjet nogle instrumenter til String-klassen, så jeg kan se, hvor mange gange et String-objekt kopieres, flyttes osv. (kun aktiveret, når -DMUSCLE_COUNT_STRING_COPY_OPERATIONS er defineret)
  • Tilføjede en PrintAndClearStringCopyCounts () -funktion, som vil udskrive data fra String-operationerne ovenfor.
  • Tilføjet nogle SFINAE magi til muscleSwap (), så det vil bytte ved at kalde SwapContents (), når det er muligt, snarere end ved at kopiere til en midlertidig genstand.
  • Tilføjet en initialiseringsliste-konstruktør og overbelastning af AddTailMulti () til køklassen (kun tilgængelig, når -DMUSCLE_USE_CPLUSPLUS11 er defineret selvfølgelig)
  • Omdøb køen og matrixoverbelastningerne af kø: AddTail () til AddTailMulti () for at undgå konflikter med den nye C + + 11-skabelon-parsing-understøttelse.
  • Omdøb køen og matrixoverbelastningerne i køen :: AddHead () til AddHeadMulti () for at undgå konflikter med den nye C ++ 11-skabelon-parsing-understøttelse.
  • Erstattet MCRASH_IMPL makro med et opkald for at hævde (falsk).
  • En lille mere Android-kompatibilitet tweakage.
  • Mange af programmerne i testmappen samlede ikke under C ++ 11. Fast.
  • Fastsatte flere potentielle fejl, der blev registreret af clangs statiske analyseværktøj.

Hvad er nyt i version 5.91:

  • Tilføjet EnsureCanPut () bekvemmelighedsmetode til klassen Hashtable.
  • Tilføjet EnsureCanAdd () bekvemmelighedsmetode til køklassen.
  • Ændret DoMutexAtomicIncrement () for at være en inline-funktion for at gøre det mere effektivt.
  • Ændret QMessageTransceiverThread og QAcceptSocketsThread for at ringe QCoreApplication :: postEvent () i stedet for QApplication :: postEvent (), for at tillade ikke-GUI Qt apps.
  • Opdateret Beginners Guide-dokumentet for at afspejle MUSCLEs forbedrede UDP-support.
  • Fusionerede i nogle ændringer af Android-kompatibilitet leveret af Jean-FranA§ois Mullet.
  • Anvendelse af MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS kompilere flag ville medføre, at MUSCLE krasjer ved opstart på grund af et problem med driften. Dette er blevet rettet nu.
  • MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS kompilere flag blev tidligere kun brugt, hvis ingen anden implementering af AtomicCounter var tilgængelig. Nu har flagget højere prioritet, så indstilling af flag betyder, at Mutexes vil blive brugt, selvom en anden (mere effektiv) mekanisme er tilgængelig.

Hvad er nyt i version 5.90:

  • Tilføjet en GetPacketMaximumSize () -metode til DataIO-klassen for at give gateway-koden mere intelligent håndtering af UDP-stilpakket kommunikation.
  • MessageIOGateway virker nu nyttigt sammen med UDPSocketDataIO.
  • Tilføjede CreateObjectFromArchiveMessage () templated funktioner til Message.h, for at tjene som modparter til GetArchiveMessageFromPool () osv.
  • AtomicCounter :: AtomicIncrement () returnerer nu en boolean (sand iff den nye modværdi er lig med en).
  • Ændret HashtableIterator klassen, så read-only Hashtable iterations er nu trådsikker, selvom flag HTIT_FLAG_NOREGISTER ikke er angivet.
  • Tilføjet en muscle_thread_id klasse til SetupSystem.h, for at repræsentere et tråd-id korrekt på en implementeringsneutral måde.
  • Tilføjet en "deadlock" Program til testmappen. Dette program med vilje risikerer at skabe en deadlock, som en måde at udøve / demonstrere deadlockfinder testen på.
  • Tilføjet support til en -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS kommandolinjeflagg for dem, der hellere vil undgå overhead af automatisk trådsikkerhed og lover at levere HTIT_FLAG_NOREGISTER argumenter manuelt.
  • Tilføjet en valgfri LRU opslagskache til GetHostByName () -funktionen, så den kan returnere hurtigere, når de samme værtsnavne bliver løst igen og igen.
  • Tilføjet en SetHostNameCacheSettings () -funktion, der aktiverer og justerer LRU opslagskachen i GetHostByName ().
  • Tilføjet support til & quot; dnscache & quot; og "dnscachesize" kommandolinjeparametre i HandleStandardDaemonArgs (), for at tillade kommandolinjespecifikation af LRU lookup cache's adfærd.
  • Ændrede Hashtable-klassen, så at _iterHead, _iterTail og _freeHead medlemsværdierne nu er uint32'er snarere end peger, for at reducere hukommelsesforbruget.
  • Fjernet ThreadLocalStorage :: SetFreeHeldObjectsOnExit () -metoden og tilføjede et booleskt argument til sin konstruktør i stedet, da pthreads ikke tillader dig at ændre denne indstilling efter at pthread_key_create () er blevet kaldt.
  • Flyttet GetCurrentThreadID () i klassen muscle_thread_id som en statisk medlemsfunktion og ændrede den for at returnere en muscle_thread_id-objekt i stedet for usigneret lang.
  • Ændrede standardværtsnavnet til sessioner uden en kendt IP-adresse fra & quot; & quot; til "_unknown_", da vinkelbeslagene i den tidligere streng har en særlig betydning som af 5.84-udgivelsen, og det kan forstyrre knudevejs matching på utilsigtede måder.
  • Metoderne CalculateChecksum () i Message.cpp er blevet ændret til at være mere robuste til at registrere dataoverførselsforskelle.
  • Fjernet supporten MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS fra AtomicCounter.h, da Qt's QAtomicInt-klasse ikke understøtter den funktionalitet, som AtomicIncrement () -metoden har brug for ny returværdi.
  • Fjernet MessageIOGateway :: FlattenMessage () og MessageIOGateway :: UnflattenMessage (). Tilføjet i deres sted: MessageIOGateway :: FlattenHeaderAndMessage () og MessageIOGateway :: UnflattenHeaderAndMessage (). Disse nye metoder beskæftiger sig med både header bytes og Message body på samme tid.
  • Tilføjet en udpproxy.vcproj-fil til testmappen for at hjælpe med at kompilere udpproxy under Windows.
  • Besked: Flatten () gentager nu over felterne i Beskeden en gang i stedet for to gange.
  • GetCurrentThreadID () er nu en inline-funktion, da den nu kan kaldes ofte af HashtableIterator.
  • Ændret deadlockfinder-koden til at bruge køer i stedet for Hashtables, da muscle_thread_id ikke længere kan bruges som Hashtable-tastatur.
  • Fast testudp.cpp for korrekt brug af en MessageIOGateway til dens UDP-kommunikation.
  • Tweaked the ifdefs i FilePathInfo.cpp lidt mere, så statInfo.st_birthtimespec ikke bliver åbnet, når du bruger MacOS / X SDK'er, der ikke giver det.
  • MessageDataIOGateway forsøger ikke længere at fjerne en meddelelse fra en zlib-deflateret databuffer, som den ikke kunne genopblussen.
  • Fixed a bug i SendDataUDP (), der kunne forårsage SendDataUDP () forkert at returnere en fejl, når du sender til en multicast-adresse ved hjælp af ikke-blokeringsfunktion, og outputbufferen var fuld.

Hvad er nyt i version 5.85:

  • Tilføjet LogTime (MUSCLE_LOG_DEBUG) opkald til alle fejlstier i MessageIOGateway :: DoInputImplementation () og Meddelelse :: Unflatten (), så det er lettere at bestemme, hvornår TCP-forbindelser afbrydes på grund af data korruption.
  • Tilføjet en PreviousOperationHadTransientFailure () -funktion, som returnerer ægte iff errno, er EINTR eller ENOBUFS.
  • Angivelse af spamspersecond = -1 vil nu give hexterm til at sende spamdata så hurtigt som muligt.
  • SocketMultiplexer.hs MUSCLE_USE_POLL-implementering leverede POLLERR til WSAPoll (), men WSAPoll () understøtter ikke POLLERR, så WSAPoll () ville returnere en fejl, da dette opstod. Arbejdet rundt om problemet ved at filtrere ud POLLERR, når de compileres under Windows.
  • Løst en fejl, hvor send () retur ENOBUFS kan medføre, at stikket forbindes, selvom ENOBUFS ikke er en dødelig tilstand.
  • SocketMultiplexer.cpp ville ikke kompilere, når MUSCLE_USE_POLL blev defineret. Fast.
  • Metoden ZLibCodec :: Deflate () ville ikke komprimere alle dataene i en meget stor buffer (fx over 42 MB). Fast.

Hvad er nyt i version 5.84:

  • StringMatcher-klassens numeriske rækkevidde syntaks er blevet udvidet, så du nu kan angive flere intervaller. For eksempel "& quot; ville matche strenge "19", "20", "21", "25", "30", "31", [...] og "50".
  • Tilføjede GetCurrentTime64ForRunTime64 () og GetRunTime64ForCurrenTime64 () konverteringsfunktioner til TimeUtilityFunctions.h.
  • Tilføjet en GetDescendant () -metode til DataNode-klassen.
  • Tilføjet C ++ 11 flyttekonstruktører og flyt-tildelingsoperatører til klasserne Hashtable, Queue, String, Message og ByteBuffer. For kompatibilitet bagud med ældre kompilere, vil denne kode kun blive udarbejdet, hvis -DMUSCLE_USE_CPLUSPLUS11 er angivet på kompileringslinjen.
  • SharedMemory-klassen vil nu sejre ind i en ikke-delt-hukommelsesklasse, hvis -DMUSCLE_FAKE_SHARED_MEMORY er angivet.
  • Tilføjet en testfilepathinfo test til testmappen.
  • Opdateret alle ophavsretsmeddelelser til overskrifter for at læse 2000-2013 Meyer Sound.
  • Tilføjede mellemrum mellem makro-tokens (for eksempel UINT32_FORMAT_SPEC) og strengkonstanter (fx "Hej") for at gøre C ++ 11-kompilatorer glade.
  • ByteBuffer.cpp havde en syntaksfejl, der forhindrer det i at kompilere på big endian værter. Fast.
  • Kun MacOS / X: Udskiftede udskrevne Carbon-funktionskald med Mach-ækvivalenter for at undgå afskrivningsadvarsler under 10.8.x.

Hvad er nyt i version 5.83:

  • Tilføjede bekvemmelighedsversioner af InflateByteBuffer () og DeflateByteBuffer tag et ByteBufferRef som et argument.
  • Fjernet nogle forældede / ubrugte metoder (SikreBufferSize () og FreeLargeBuffer ()) fra klassen AbstractMessageIOGateway.
  • Løs nogle skrivefelter i kommentarerne i delphi-undermappen.
  • Klassen Hashtable genererer ikke længere advarsler, når de udarbejdes under MSVC med -DMUSCLE_AVOID_MINIMIZED_HASHTABLES defineret.
  • Løst en fejl i IPAddressAndPort :: ToString (), der forårsagede IPv4-adressestrenge, at formateres tvetydigt, når (preferIPv4Style) blev sat til falsk.

Lignende software

GT.M
GT.M

18 Feb 15

gdbm
gdbm

17 Feb 15

H2 Database Engine
H2 Database Engine

17 Feb 15

MariaDB
MariaDB

20 Jan 18

Andre software developer Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Kommentarer til MUSCLE

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!