MUSCLE

Software screenshot:
MUSCLE
Podrobnosti Software:
Verze: 6.82 Aktualizováno
Datum uploadu: 22 Jun 18
Vývojka: Jeremy Friesner
Licence: Volný
Popularita: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE označuje prostředí pro více klientských klientských vazeb a je otevřeným, bezplatným, robustním, škálovatelným a mezi platformami systémem zasílání zpráv, který se skládá ze serverových a klientských komponent. Pomůže vám psát různé druhy distribuovaného softwaru, od her pro více hráčů a IRC chat klientů až po aplikace pro výpočet SETI.


Funkce na první pohled

S programem MUSCLE mohou uživatelé snadno přizpůsobit přiložený "svalnatý server" definováním své vlastní logiky relací nebo protokolu pro streamování zpráv. Tento software vám pomůže psát kód klienta v jednom z programovacích jazyků C ++, C, C #, Java, Delphi nebo Pythonu.

Program používá BMessage-like muscle :: Zprávy, podporuje posílání zploštělých svalů :: Zprávy mezi počítači přes protokoly TCP (Transmission Control Protocol) přenášejí "svalnatý server" na serverovém počítači, který umožňuje zapisovat klientské programy, které lze použít ke komunikaci se serverem.

Navíc obsahuje rozhraní API pro zasílání zpráv s jedním a více vlákny, které podporují všechny výše uvedené programovací jazyky. Svalnatý server & rdquo; lze snadno přizpůsobit definováním protokolu pro streamování zpráv nebo logiky relací.

Začínáme s MUSCLE

Po úspěšném přihlášení mohou klientské programy určit, kdo jiný je přihlášen na centrální server, stejně jako ukládat svalové :: Zprávy do paměti RAM (systémová paměť) a posílat svaly :: Zprávy ostatním klientům, kteří jsou připojeni na server. Vezměte prosím na vědomí, že klientské programy se mohou přihlásit k určitým datům na serveru a při změnách dat dostanou okamžité oznámení.


Podporuje širokou škálu zpráv

Tento software byl navržen tak, aby podporoval širokou škálu zpráv, včetně jednobuněčných, vysílacích a multicastových, pomocí inteligentního hierarchického směrovacího mechanismu.


Podporované operační systémy a dostupnost

MUSCLE běží na libovolném operačním systému kompatibilním s POSIX. Je distribuován jako jediný archiv univerzálních zdrojů, který uživatelům umožňuje optimalizovat aplikaci pro svůj GNU / Linux systém. Na této platformě jsou podporovány oba 32bitové a 64bitové hardwarové platformy.

Co je nové v této verzi:

  • testy / Makefile-mt se již nepokouší sestavit testreflectsession, s výjimkou operací v operačním systému, které podporuje testreflectsession.
  • Byla provedena nějaká menší editace a opětovné uspořádání "MUSCLE podle příkladu" stránek.
  • V MkDocs bylo nahrazeno množství "značek" s adresami [URL] (...)
  • Odstraněno soukromé dědictví programu CountedObject ze všech tříd, které ji mají - nyní obsahují namísto toho soukromou proměnnou CountedObject. Toto bylo provedeno pouze proto, že veškeré soukromé dědictví obsadilo grafy dědičnosti DOxygen.
  • Přidalo se makro DECLARE_COUNTED_OBJECT na CountedObject.h, takže v případech, kdy není požadováno počítání objektů, je možné vyloučit libovolnou potenciální paměťovou režii programu CountedObjects.
  • Odstraněna podpora pro -DMUSCLE_AVOID_OBJECT_COUNTING a přidala se na ni makro -DMUSCLE_ENABLE_OBJECT_COUNTING. (To znamená, že třída CountedObject je nyní zakázána podle výchozího nastavení a musí ji explicitně povolit)
  • Přidáno "MUSCLE podle příkladu" dokumentace pro MiscUtilityFunctions. {cpp, h}
  • V MUSCLE-by-Example MkDocs se změnil počet "značek" na [urls], takže metody, které uvádějí, lze rychle zkontrolovat.
  • server / Makefile nyní specifikuje libmuscle.a po hlavním souboru (.) .o
  • Opravena některá upozornění na gcc ve složce testů (podle návrhů Mika)
  • UnparseFile () nebyl citován klíčová slova s ​​mezerami správně. Opraveno.
  • Opraveny závislosti v části "MUSCLE podle příkladu" příklady 'Makefiles.

Co je nového ve verzi:

  • Přidána metoda komfortu ShrinkToFit a třídy String. Tato metoda zmenšuje objekt tak, aby velikost paměti, kterou přidělila, odpovídala velikosti vlastních dat.
  • Hashtable :: EnsureSize () a Queue :: EnsureSize () nyní přijmou volitelný argument (allowShrink), který (pokud je nastaven na true) dovoluje přemístění matice vnitřního pole objektu menší, je-li větší než je nutné.
  • Vylepšení chování třídy vyrovnávací paměti pro trochu efektivnější.
  • Přidali jste ochranu proti možné nekonečné rekurzi, která by se mohla vyskytnout při zaznamenávání zprávy "OUT OF MEMORY" chyba po selhání alokace paměti, pokud se aplikace LogCallback pokoušela alokovat paměť.

Co je nového ve verzi 6.01:

  • Přidána výhodná metoda PrependWord () pro třídu String.
  • Přidány s výhodou metody Replacements () pro třídu String.
  • Do třídy DetectNetworkConfigChangesSession byla přidána metoda SetExplicitDelayMicros ().
  • Do třídy NetworkInterfaceInfo byla přidána metoda IsCopperDetected (), takže kód může zjistit, zda má nebo není připojen kabel Ethernet.
  • Přidáno "quietsend" argument hexterm.
  • Virtuální metoda NetworkInterfacesChanged () v třídě DetectNetworkConfigChangesSession byla změněna tak, aby vzala argument, který volá, které síťové rozhraní se změnily. Tato funkce je v současnosti implementována pouze v systémech Linux, MacOS / X a Windows. U jiných operačních systémů bude argument vždy prázdný.
  • Opravena chyba v implementaci systému DetectNetworkConfigChangesSession v systému Linux, která by mohla způsobit chybu segmentace, pokud recvmsg () vrátila chybu (např. kvůli přijatému signálu).

Co je nového ve verzi 6.00:

  • Přepsat třídu SSLSocketDataIO, aby lépe fungovala s neblokujícími I / O (ve spojení s novou třídou SSLSocketAdapterGateway).
  • Přidány implementace SSLSocketDataIO :: SetPrivateKey () a SSLSocketDataIO :: SetCertificate (), které berou ByteBuffer jako argument.
  • Byla přidána třída SSLSocketAdapterGateway, která se používá pro správu interního stavového stroje OpenSSL při použití třídy SSLSocketDataIO s vaší branou.
  • K třídě ReflectServer byly přidány metody SetSSLPrivateKey () a GetSSLPrivateKey () pro snadnější povolení autentizace pomocí protokolu SSL na všech příchozích připojeních TCP. Tyto metody jsou k dispozici, pokud je definována MUSCLE_ENABLE_SSL.
  • K třídě ReflectServer byly přidány metody SetSSLPublicKeyCertificate () a GetSSLPublicKeyCertificate () pro snadnější povolení autentizace SSL na odchozích připojeních TCP. Tyto metody jsou k dispozici, pokud je definována MUSCLE_ENABLE_SSL.
  • Ke třídě MessageTransceiverThread byly přidány metody SetSSLPrivateKey () a SetSSLPublicKeyCertificate () pro snadnější povolení funkce SSL při použití závitových vstupů a výstupů.
  • Přidána složka ssl_data s informacemi o generování veřejných / soukromých klíčových párek OpenSSL a příkladnou klávesnicí pro testování OpenSSL.
  • Pokud je definována hodnota MUSCLE_ENABLE_SSL, svalovna nyní přijme volitelný argument 'privatekey = filename'. Po zadání bude režim SSL povolen a svaly budou přijímat pouze příchozí připojení TCP, která představují veřejné klíče, které odpovídají tomuto soukromému klíči / certifikátu.
  • Pokud je definován MUSCLE_ENABLE_SSL, portablereflectclient a qt_example nyní přijmou volitelný argument 'publickey = filename'. Po zadání bude režim SSL povolen a tito klienti se připojí k svalům pomocí OpenSSL a představí tento soubor jako své pověření.
  • Přidáno "Animovat" zaškrtněte políčko qt_example. Kontrola způsobí, že okno automaticky posune ukazatel. To je zábavné a také užitečné, pokud chcete otestovat scénář, kdy více zákazníků generuje provoz současně.
  • Vytvořil qt_example demo hezčí.
  • Přejmenujte makra C ++ 11 pomocných pomocníků v systémech Hashtable.h a Queue.h, aby bylo méně pravděpodobné, že by se mohly setkat s makrami jiných balíčků. * Opraveny některé drobné chyby ve třídě SSLSocketDataIO. o Přejmenování SSLSocketDataIO :: SetKey () na SetPrivateKey (). o Přejmenování SSLSocketDataIO :: SetCertificate () na SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () je nyní virtuální metoda.

Co je nového ve verzi 5.92:

  • Vylepšená podpora pro sémantiku C ++ 11 ve třídách Queue a Hashtable (povoleno pouze při definici -DMUSCLE_USE_CPLUSPLUS11)
  • K třídě String jsem přidal nějaké přístroji, abych mohl sledovat, kolikrát je objekt String kopírován, přesunut atd. (povoleno pouze, když je definováno -DMUSCLE_COUNT_STRING_COPY_OPERATIONS)
  • Přidána funkce PrintAndClearStringCopyCounts (), která vytiskne výše shromážděná data o řetězci.
  • Přidali některé kouzlo SFINAE na změnu svalové hmoty () tak, že bude nahrazovat voláním SwapContents (), pokud je to možné, spíše než kopírováním do dočasného objektu.
  • Přidána konstruktorová struktura inicializátoru a přetížení třídy AddTailMulti () do třídy Queue (k dispozici pouze, když je samozřejmě definováno -DMUSCLE_USE_CPLUSPLUS11)
  • Přejmenujte frontu a přetížení pole Queue :: AddTail () do AddTailMulti (), abyste se vyhnuli konfliktům s novou podporou pro analýzu šablon C ++ 11.
  • Přejmenujte fronty a přetížení pole z fronty AddHead () do AddHeadMulti (), abyste se vyhnuli konfliktům s novou podporou analýzy syntaxe C ++ 11.
  • Nahradilo makro MCRASH_IMPL s výzvou k tvrzení (false).
  • Trochu lepší kompatibilita se systémem Android
  • Mnoho programů ve složce testů nebylo kompilace pod C ++ 11. Opraveno.
  • Opravena několik potenciálních chyb, které byly detekovány clangovým statickým analytickým nástrojem.

Co je nového ve verzi 5.91:

  • Přidána výhoda metody EnsureCanPut () třídy Hashtable.
  • Přidána metoda komfortu EnsureCanAdd () do třídy Queue.
  • Byla změněna funkce DoMutexAtomicIncrement (), která by měla být funkce inline, aby se její volání efektivnější.
  • Změnili QMessageTransceiverThread a QAcceptSocketsThread, aby volali QCoreApplication :: postEvent () spíše než QApplication :: postEvent (), aby umožňovali aplikace typu Qt než GUI.
  • Aktualizoval dokument Průvodce pro začátečníky, aby odrážel vylepšenou podporu služby UDP MUSCLE.
  • Sloučili jsme s některými změnami kompatibility Android, které poskytl Jean-François Mullet.
  • Použití příznaku kompilace MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS by způsobilo selhání MUSCLE při spuštění kvůli problému s objednávkou operací. Toto bylo opraveno.
  • Příznak kompilace MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS byl dříve použit pouze tehdy, pokud nebyla k dispozici žádná jiná implementace AtomicCounter. Příznak má nyní vyšší prioritu, takže nastavení příznaku znamená, že budou použity Mutexy, i když je k dispozici jiný (účinnější) mechanismus.

Co je nového ve verzi 5.90:

  • Do třídy DataIO byla přidána metoda GetPacketMaximumSize (), která umožňuje kódování brány inteligentněji zpracovávat paketovou komunikaci ve stylu UDP.
  • MessageIOGateway nyní pracuje užitečně ve spojení s UDPSocketDataIO.
  • Přidány CreateObjectFromArchiveMessage () šablony funkce Message.h, které slouží jako obdélník pro obnovení GetArchiveMessageFromPool () atd.
  • AtomicCounter :: AtomicIncrement () nyní vrací booleovskou hodnotu (true, pokud se nová hodnota čítače rovná jedné)
  • Změnila třídu HashtableIterator tak, aby iterace Hashtable pouze pro čtení byly nyní bezpečné pro vlákno, i když není určen příznak HTIT_FLAG_NOREGISTER.
  • Přidána třída muscle_thread_id do nástroje SetupSystem.h, aby správně reprezentoval ID vlákna v neutrálním provedení.
  • Přidáno "zablokování" do složky testů. Tento program úmyslně riskuje vytvoření zablokování, jako způsob, jak cvičit / demonstrovat testy zablokování.
  • Přidána podpora pro příznak -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS příkazové řádky, pro ty, kteří se raději vyhnuli režii automatické bezpečnosti závitů a slibují, že dodávají argumenty HTIT_FLAG_NOREGISTER ručně, pokud je to nutné.
  • Do funkce GetHostByName () byla přidána volitelná vyhledávací mezipaměť LRU, aby se mohla rychleji vrátit, když se stejné názvy hostitelů vyřeší znovu a znovu.
  • Přidána funkce SetHostNameCacheSettings (), která povoluje a upravuje vyhledávací mezipaměť LRU v GetHostByName ().
  • Přidána podpora pro "dnscache" a "dnscachesize" argumenty příkazové řádky v HandleStandardDaemonArgs (), aby umožnily specifikaci příkazového řádku chování vyhledávací mezipaměti LRU.
  • Změnila třídu Hashtable tak, že hodnoty _iterHead, _iterTail a _freeHead jsou nyní uint32s spíše než ukazatele, čímž se sníží využití paměti.
  • Odstranil metodu ThreadLocalStorage :: SetFreeHeldObjectsOnExit () a místo toho přidal booleovský argument konstruktorovi, protože pthreads neumožňují změnit toto nastavení po vyvolání pthread_key_create ().
  • Převedl GetCurrentThreadID () do třídy muscle_thread_id jako statickou funkci člena a změnil jej tak, aby vrátil objekt muscle_thread_id spíše než nepodepsaný dlouhý.
  • Změnil výchozí název hostitele pro relace bez známé IP adresy od & quot; na "_unknown_", jelikož úhelné závorky v dřívějším řetězci mají zvláštní význam od uvolnění 5.84 a které by mohly neúmyslně ovlivňovat přizpůsobení cesty uzlů.
  • Metody CalculateChecksum () v Message.cpp byly upraveny tak, aby byly robustnější při zjišťování rozdílů v transpozici dat.
  • Odstraněna podpora MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS od AtomicCounter.h, protože třída QttomicInt Qt nepodporuje funkci, která vyžaduje nová návratová hodnota metody AtomicIncrement ().
  • Odstraněno MessageIOGateway :: FlattenMessage () a MessageIOGateway :: UnflattenMessage (). Přidáno na jejich místo: MessageIOGateway :: FlattenHeaderAndMessage () a MessageIOGateway :: UnflattenHeaderAndMessage (). Tyto nové metody se zabývají zároveň záhlaví bajtů a tělem zprávy současně.
  • Do složky testů byl přidán soubor udpproxy.vcproj, který pomáhá při kompilaci udpproxy pod Windows.
  • Zpráva: Platinum () se nyní opakuje přes pole v Zprávě jednou, namísto dvakrát.
  • GetCurrentThreadID () je nyní funkce inline, jelikož může být nyní volána často HashtableIterator.
  • Změnil kód zablokování, aby použil Fronty namísto Hashtables, jelikož muscle_thread_id nemůže být použit jako typ klíče Hashtable.
  • Opraveno testudp.cpp správně používat zprávu MessageIOGateway pro komunikaci UDP.
  • Vylepšete ifdefs v souboru FilePathInfo.cpp trochu víc, takže při použití sady SDK MacOS / X, které ji neposkytují, nebude mít statInfo.st_birthtimespec přístup.
  • MessageDataIOGateway se již nepokouší vyloučit zprávu ze zlib-deflované datové vyrovnávací paměti, že nebylo možné znovu nafouknout.
  • Opravena chyba v SendDataUDP (), která by mohla způsobit, že SendDataUDP () nesprávně vrátí chybu při odesílání na adresu vícesměrového vysílání pomocí režimu bez blokování a výstupní vyrovnávací paměť byla plná.

Co je nového ve verzi 5.85:

  • Přidány volání protokolu LogTime (MUSCLE_LOG_DEBUG) ke všem chybovým cestám MessageIOGateway :: DoInputImplementation () a Message :: Unflatten (), aby bylo jednodušší zjistit, kdy jsou spojení TCP přerušena kvůli datům korupci.
  • Přidána funkce PreviousOperationHadTransientFailure (), která vrací true iff errno je EINTR nebo ENOBUFS.
  • Určení spamspersecond = -1 způsobí, že hexterm bude odesílat data o spamu co nejrychleji.
  • Implementace MUSCLE_USE_POLL implementace SocketMultiplexer.h dodává POLLERR WSAPoll (), ale WSAPoll () nepodporuje POLLERR, takže WSAPoll () by v takovém případě vrátil chybu. Problém vyřešil filtrováním programu POLLERR při kompilaci pod Windows.
  • Opravena chyba, kde odesílání () vrací ENOBUFS může způsobit ukončení připojení soketu, přestože ENOBUFS není smrtelná podmínka.
  • SocketMultiplexer.cpp by nebyl kompilován, když byl definován MUSCLE_USE_POLL. Opraveno.
  • Metoda ZLibCodec :: Deflate () by nedokázala komprimovat všechna data ve velmi velkém bufferu (např. přes 42MB). Opraveno.

Co je nového ve verzi 5.84:

  • Syntaxe číselného rozsahu třídy StringMatcher byla rozšířena, takže nyní můžete zadat více rozsahů. Například výraz " by odpovídalo řetězcům 19, 20, 21, 25, 30, 31, 50, 50,
  • Přidány funkce konverze TimeChanceTime64 () a GetRunTime64ForCurrenTime64 () na TimeUtilityFunctions.h.
  • Přidána metoda nástroje GetDescendant () do třídy DataNode.
  • Přidány C ++ 11 konstruktérů pohybu a operátorů přiřazení-přesměrování do tříd Hashtable, Queue, String, Message a ByteBuffer. Pro zpětnou kompatibilitu se staršími kompilátory bude tento kód kompilován pouze tehdy, když je na řádku kompilace zadán příkaz -DMUSCLE_USE_CPLUSPLUS11.
  • Pokud je zadána hodnota -DMUSCLE_FAKE_SHARED_MEMORY, třída SharedMemory se nyní nerozkládá do třídy sdílené paměti.
  • Do testovací složky byl přidán test testfilepathinfo.
  • Aktualizovali se všechny hlavičky oznámení o autorských právech na čtení 2000-2013 Meyer Sound.
  • Přidány mezery mezi tokeny maker (např. UINT32_FORMAT_SPEC) a řetězcovými konstantami (např. "Hello"), aby kompilátory C ++ 11 byli šťastní.
  • ByteBuffer.cpp měl syntaktickou chybu, která by jí zabránila v kompilaci na velkých endianských počítačích. Opraveno.
  • Pouze MacOS / X: Nahrazené zastaralé volání funkce Carbon s ekvivalentem Mach, aby nedošlo k odmítnutí upozornění pod 10.8.x

Co je nového ve verzi 5.83:

  • Přidány verze InflateByteBuffer () a DeflateByteBuffer vzít ByteBufferRef jako argument.
  • Odstranili některé zastaralé / nepoužívané metody (EnsureBufferSize () a FreeLargeBuffer ()) z třídy AbstractMessageIOGateway.
  • Opravili některé typy v komentářích v podsložce Delphi.
  • Třída Hashtable již nevytváří varování při kompilaci pod MSVC s definicí -DMUSCLE_AVOID_MINIMIZED_HASHTABLES
  • Opravena chyba v adresáři IPAddressAndPort :: ToString (), která způsobila, že řetězec adres IPv4 byl nejednoznačně naformátován, když (preferableIPv4Style) byla nastavena na hodnotu false.

Podobný software

Ojota
Ojota

20 Feb 15

Apache Xindice
Apache Xindice

2 Jun 15

Apache Cassandra
Apache Cassandra

19 Feb 15

Sesame
Sesame

20 Feb 15

Ostatní software developer Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Komentáře k MUSCLE

Komentáře nebyl nalezen
Přidat komentář
Zapnout obrázky!