MUSCLE

Szoftver screenshot:
MUSCLE
Szoftver adatai:
Változat: 6.82 Frissítve
Feltöltés dátuma: 22 Jun 18
Fejlesztő: Jeremy Friesner
Engedély: Ingyenes
Népszerűség: 26

Rating: 5.0/5 (Total Votes: 1)

A MUSCLE a Multi User Server kliens kapcsolódási környezetét jelenti, és egy nyílt forráskódú, ingyenes, erőteljes, méretezhető és platformon keresztüli üzenetküldő rendszer, amely a kiszolgáló és az ügyfél összetevőkből áll. Segíteni fog Önnek, hogy mindenféle elosztott szoftvert, a többjátékos játékokat és az IRC chat-ügyfeleket írjon a SETI számítási alkalmazásokhoz.


Jellemzők áttekintése

A MUSCLE segítségével a felhasználók egyszerűen testreszabhatják a mellékelt "izmolt szervert" a saját munkamenet logikájuk vagy üzenettovábbítási protokolluk meghatározásával. A szoftver segít megírni ügyfélkódját a C ++, C, C #, Java, Delphi vagy Python programnyelvek bármelyikében.

A program BMessage-szerű izomot használ: Az üzenetek támogatják az összehajtogatott izom elküldését: A számítógépek között a TCP (Transmission Control Protocol) protokollon keresztül küldött üzenetek, az "muszkulált szerver" és a "ldquo; egy kiszolgáló gépen, amely lehetővé teszi, hogy olyan kliens programokat írjon, amelyekkel kommunikálni tud a kiszolgálóval.

Ezenkívül tartalmaz egy- és többszálas üzenetkezelő API-kat, amelyek támogatják a fent említett programozási nyelveket. A & ldquo; izmos szerver & rdquo; egyszerűen testre szabható egy üzenet-streaming protokoll vagy egy munkamenet logika meghatározásával.

A MUSCLE használatának megkezdése

A sikeres bejelentkezés után az ügyfélprogramok meghatározhatják, hogy ki van bejelentkezve a központi kiszolgálóra, valamint tárolja az izomot :: Üzenetek a RAM-ban (rendszermemória), és küldje el az izomot :: Üzenetek más csatlakoztatott ügyfelekhez a szerverre. Kérjük, vegye figyelembe, hogy az ügyfélprogramok előfizethetnek a kiszolgálóra vonatkozó konkrét adatokra, és azonnali értesítéseket kaphatnak az adatok megváltoztatásakor.


Támogatja az üzenetsorozatok széles körét

A szoftvert úgy tervezték, hogy az intelligens, hierarchikus mintázat-illesztő irányító mechanizmus segítségével széles körű üzenettovábbításokat támogasson, beleértve az unicast stílusú, az adásstílusú és a multicast-stílusúakat is.


Támogatott operációs rendszerek és elérhetőség

A MUSCLE bármilyen POSIX-kompatibilis operációs rendszeren fut. Egyetlen univerzális forrás archívumként kerül forgalomba, amely lehetővé teszi a felhasználók számára, hogy optimalizálják a GNU / Linux rendszer alkalmazását. Jelenleg mind a 32 bites, mind a 64 bites hardveres platformok támogatottak.

Az újdonság ebben a kiadásban:

  • tesztek / Makefile-mt nem próbálkozik a testreflectsession fordítással, kivéve, ha a tesztreflexiáció támogatja az operációs rendszert.
  • A "MUSCLE by Example" és a "MUSCLE by Example" lapok.
  • Néhány "címke" helyett az MkDocs-ban [URL-ekkel] (...)
  • A CountedObject privát örökségét eltávolította minden olyan osztályról, amelyik rendelkezett - most egy CountedObject privát tag változót tartalmaznak. Ezt csak azért tették meg, mert az összes privát örökség felborította a DOxygen öröklési grafikonokat.
  • Hozzáadott egy DECLARE_COUNTED_OBJECT makrót CountedObject.h-hoz, hogy a CountedObjects esetleges memóriafelülete megszűnjön olyan esetekben, amikor az objektumszámlálás nem kívánatos.
  • eltávolította a -DMUSCLE_AVOID_OBJECT_COUNTING támogatást és hozzáadta a -DMUSCLE_ENABLE_OBJECT_COUNTING makrót a helyére. (Vagyis a CountedObject osztály mostantól le van tiltva, és használatához explicit módon engedélyezni kell)
  • Hozzáadott "MUSCLE by Example" a MiscUtilityFunctions dokumentációja. {cpp, h}
  • Néhány "címke" -et a MUSCLE-by-Example MkDocs forrásból [urls] -be változtatott, így az általuk említett módszerek gyorsan áttekinthetők.
  • A

  • kiszolgáló / Makefile most megadja a libmuscle.a fájlt a fő () .o fájl után.
  • Fix néhány gcc figyelmeztetést a teszt mappában (Mika javaslata szerint)
  • Az UnparseFile () nem helyes kulcsszavakat idézett. Fix.
  • Javította a függőségeket a & quot; MUSCLE by Example & quot; Példák "Makefiles.

    • Hozzáadott egy ShrinkToFit () kényelmes módszert a sorhoz, a Hashtable-hez, és a String osztályok. Ez a módszer összezsugorítja az objektumot úgy, hogy a belsőleg hozzárendelt memória mennyisége megegyezzen az általa ténylegesen tárolt adatok méretével.
    • Hashtable :: EnsureSize () és queue :: Az EnsureSize () egy opcionális (allowShrink) argumentumot tartalmaz, amely (ha igazra van állítva) lehetővé teszi az objektum belsőleg hozzárendelt tömbének kisebb összegű átcsoportosítását, ha a nagyobb, mint szükséges.
    • Csökkentette a String-osztály puffer-bővítési viselkedését, hogy egy kicsit hatékonyabb legyen.
    • Hozzáadott egy védelmet a potenciális végtelen rekurzió ellen, amely előfordulhat egy "OUT OF MEMORY" hiba a memóriaelosztás meghiúsulása után, ha a LogCallback megpróbálta felosztani a memóriát.

    Az újdonság a 6.01-es verzióban:

    • Hozzáadott egy PrependWord () kényelmi módszert a String osztályhoz.
    • Hozzáadva a () kényelmességi módszerek hozzáadásával a String osztályhoz.
    • Hozzáadott egy SetExplicitDelayMicros () metódust a DetectNetworkConfigChangesSession osztályhoz.
    • Hozzáadott egy IsCopperDetected () metódust a NetworkInterfaceInfo osztályhoz, így a kód meg tudja állapítani, hogy az Ethernet csatlakozóhoz kábel van-e csatlakoztatva.
    • Hozzáadott egy & quot; quietsend & quot; argumentum a hextermhez.
    • A DetectNetworkConfigChangesSession osztályban a NetworkInterfacesChanged () virtuális módszer megváltozott, hogy egy olyan érvet hozzon létre, amely felhívja a figyelmet arra, hogy melyik hálózati interfész vált különösen. Ez a funkció jelenleg csak Linux, MacOS / X és Windows alatt fut. Más operációs rendszerek esetében az argumentum mindig üres lista lesz.
    • Fix egy hibát a DetectNetworkConfigChangesSession Linux végrehajtásában, amely szegmentálási hibát okozhat, ha a recvmsg () hibát adott vissza (például egy fogadott jel miatt).

    Újdonság a 6.00 verzióban:

    • Az SSLSocketDataIO osztály újbóli javítása a nem blokkoló I / O-val (az új SSLSocketAdapterGateway osztálysal együtt) javítva működik.
    • Hozzáadott SSLSocketDataIO :: SetPrivateKey () és SSLSocketDataIO :: SetCertificate () implementációk, amelyek egy ByteBuffer argumentumot tartalmaznak.
    • Hozzáadott egy SSLSocketAdapterGateway osztály, amelyet az SSLSocketDataIO osztály használata az átjáró segítségével az OpenSSL belső állapotkezelő gépének kezelésére szolgál.
    • Hozzáadta a SetSSLPrivateKey () és a GetSSLPrivateKey () metódusokat a ReflectServer osztályhoz, megkönnyítve az SSL hitelesítést minden bejövő TCP kapcsolaton. Ezek a módszerek elérhetők iff MUSCLE_ENABLE_SSL definiálva.
    • Hozzáadta a SetSSLPublicKeyCertificate () és a GetSSLPublicKeyCertificate () metódusokat a ReflectServer osztályhoz, megkönnyítve az SSL-hitelesítést a kimenő TCP-kapcsolatokon. Ezek a módszerek elérhetők iff MUSCLE_ENABLE_SSL definiálva.
    • Hozzáadta a SetSSLPrivateKey () és a SetSSLPublicKeyCertificate () metódusokat a MessageTransceiverThread osztályhoz, az SSL funkciók egyszerűbb engedélyezéséhez threaded I / O használatakor.
    • Hozzáadott egy ssl_data mappát az OpenSSL nyilvános / privát kulcspárokról és az OpenSSL teszteléséhez használt példapéldány létrehozásáról.
    • A MUSCLE_ENABLE_SSL definiálásakor az izmok most elfogadják az opcionális "privatekey = fájlnév" argumentumot. Meghatározásakor az SSL mód engedélyezve lesz, és az izmok csak olyan bejövő TCP-kapcsolatokat fogadnak el, amelyek nyilvános kulcsokat tartalmaznak, amelyek megfelelnek a privát kulcsnak / tanúsítványnak.
    • A MUSCLE_ENABLE_SSL definiálásakor a portablereflectclient és a qt_example elfogadja az opcionális "publickey = fájlnév" argumentumot. Meghatározáskor az SSL mód engedélyezve lesz, és ezek az ügyfelek az OpenSSL használatával kapcsolódnak az izmokhoz és bemutatják ezt a fájlt hitelesítő adatokként.
    • Hozzáadott egy & quot; Animate & quot; jelölje be a qt_example demo jelölőnégyzetet. Ellenőrzésével az ablak automatikusan mozgatja a kijelzőt. Ez szórakoztató és hasznos, ha olyan forgatókönyvet szeretne tesztelni, ahol több ügyfél generál forgalmat egyszerre.
    • A qt_example demo szebbnek bizonyult.
    • Átnevezte a C ++ 11 helper makrókat a Hashtable.h és a Queue.h fájlban, hogy kisebb valószínűséggel ütközzenek más csomagok makrókkal. * Rögzített néhány kisebb hibát az SSLSocketDataIO osztályban. o Az SSLSocketDataIO :: SetKey () átnevezte a SetPrivateKey () parancsot. o Az SSLSocketDataIO :: SetCertificate () átnevezte a SetPublicKeyCertificate () függvényt. o AbstractMessageIOGateway :: A SetDataIO () egy virtuális módszer.

    Az újdonság az 5.92-es verzióban:

    • A C ++ 11 mozgássemantikának a Cue és Hashtable osztályokban nyújtott támogatása (csak akkor engedélyezett, ha a -DMUSCLE_USE_CPLUSPLUS11 definiálva van)
    • Hozzáadott néhány hangszerelést a String osztályhoz, így megnézhetem, hogy egy String objektumot másolnak, mozgathatók-e stb. (csak akkor engedélyezett, ha -DMUSCLE_COUNT_STRING_COPY_OPERATIONS van definiálva)
    • Hozzáadott egy PrintAndClearStringCopyCounts () függvényt, amely kinyomtatja a fenti String-művelet adatokat.
    • Hozzáadott egy SFINAE mágiát az muscleSwap () -hoz, hogy swappal hívja fel a SwapContents () -t, ha csak lehetséges, és nem átmásol egy ideiglenes objektumra.
    • Hozzáadta az AddTailMulti () inicializáló listás konstruktort és túlterhelést a várólistához (csak akkor elérhető, ha a -DMUSCLE_USE_CPLUSPLUS11 definíciója természetesen)
    • Átnevezte a Queue :: AddTail () sor és a tömb túlterheit a AddTailMulti () függvénybe, hogy elkerülje az új C ++ 11 sablonszerkesztési támogatással való ütközést.
    • Átnevezte a Queue :: AddHead () sor és a tömb túlterheit az AddHeadMulti () függvénybe, hogy elkerülje az új C ++ 11 sablonszerkesztési támogatással való ütközést.
    • Cserélte a MCRASH_IMPL makrót, amelyben állítólag érvényes (false).
    • Egy kicsit több Android-kompatibilitási csípés.
    • Számos program a teszt mappában nem fordult elő a C ++ 11 alatt. Fix.
    • Meghatározta azokat a potenciális hibákat, amelyeket a clang statikus elemző eszközzel észleltek.

    Az újdonság az 5.91 verzióban:

    • Hozzáadta az EnsureCanPut () kényelmi módszert a Hashtable osztályhoz.
    • Hozzáadta az EnsureCanAdd () kényelmi módszert a várólistához.
    • A DoMutexAtomicIncrement () módosította egy lineáris függvényt, hogy hatékonyabbá tegye.
    • Megváltozott QMessageTransceiverThread és QAcceptSocketsThread hívja a QCoreApplication :: postEvent () helyett a QApplication :: postEvent () parancsot, hogy a nem GUI Qt alkalmazások legyenek engedélyezve.
    • Frissítette a Kezdő útmutató dokumentumot, hogy tükrözze a MUSCLE javított UDP-támogatását.
    • Egyesített Jean-Frana§ois Mullet egyes kompatibilitási változásaival.
    • A MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS fordító zászló használatával a MUSCLE összeomlik az üzembe helyezéskor egy műveleti megbízás miatt. Ez már rögzült.
    • A MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS fordító zászlót korábban csak akkor használták, ha az AtomicCounter más megvalósítása nem áll rendelkezésre. Most a zászló nagyobb elsőbbséget élvez, ezért a zászló beállítása azt jelenti, hogy a Mutexes is használható, még akkor is, ha más (hatékonyabb) mechanizmus áll rendelkezésre.

    Az újdonság az 5.90-es verzióban:

    • Hozzáadott egy GetPacketMaximumSize () metódust a DataIO osztályhoz, hogy az átjárókód intelligensabban kezelje az UDP-stílusú csomagkapcsolt kommunikációt.
    • Az MessageIOGateway most hasznosan működik az UDPSocketDataIO-val együtt.
    • Hozzáadta a CreateObjectFromArchiveMessage () sablonfüggvényeket a Message.h fájlhoz, hogy a GetArchiveMessageFromPool () stb. helyreállító oldalaként szolgáljon.
    • AtomicCounter :: AtomicIncrement () most egy boolean (igaz iff az új számláló értéke egyenlő egy) értékkel tér vissza.
    • Módosította a HashtableIterator osztályt, így a csak olvasható Hashtable iterációk mostantól szálasak, még akkor is, ha a HTIT_FLAG_NOREGISTER zászló nincs megadva.
    • Hozzáadott egy muscle_thread_id osztályt a SetupSystem.h-nak, hogy megfelelően jelenítse meg a témaazonosítót végrehajtás-semleges módon.
    • Hozzáadott egy "holtpont" programot a teszt mappába. Ez a program szándékosan veszélyezteti a holtpontot, mint a holtpontkeresõ teszt végrehajtását / bemutatását.
    • Hozzáadta a -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS parancssori zászló támogatását azok számára, akik inkább elkerülnék az automatikus szálbiztonságot, és megígérhetik, hogy a HTIT_FLAG_NOREGISTER argumentumokat szükség szerint kézzel kézbesítik.
    • Hozzáadott egy opcionális LRU keresési gyorsítótárat a GetHostByName () függvényhez, így gyorsabban térhet vissza, ha ugyanazok a gazdanevek újra és újra megoldódnak.
    • Hozzáadott egy SetHostNameCacheSettings () függvényt, amely engedélyezi és beállítja az LRU keresési gyorsítótárát a GetHostByName () szolgáltatásban.
    • Hozzáadta a & quot; dnscache & quot; és "dnscachesize" a HandleStandardDaemonArgs () parancssori argumentumait, hogy engedélyezhesse az LRU keresési gyorsítótár viselkedését.
    • Módosította a Hashtable osztályt, hogy a _iterHead, _iterTail és _freeHead tag értékek most inkább uint32s legyenek, mint mutatók, csökkentve a memóriahasználatot.
    • Eltávolította a ThreadLocalStorage :: SetFreeHeldObjectsOnExit () metódust, és helyette hozzáadta a logikai argumentumot a konstruktorhoz, mivel a pthreads nem engedélyezi a beállítás módosítását a pthread_key_create () meghívás után.
    • A GetCurrentThreadID () -t statikus tag függvényként az muscle_thread_id osztályba helyezte át, és megváltoztatta azt, hogy visszaadja az muscle_thread_id objektumot, és nem az aláírás hosszú időt.
    • Az ismert IP-cím nélküli munkamenetek alapértelmezett állomásnevét a (z) & quot; & quot; hogy a korábbi karakterláncban lévő szögletes zárójelek az 5,84-es kiadásnál különleges jelentéssel bírnak, és nem kívánt módon érinthetik a csomópont-összerendelést.
    • A Message.cpp CalculateChecksum () metódusai módosultak, hogy robusztusabbak legyenek az adatátvitel különbségeinek észlelésekor.
    • A MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS támogatás eltávolítása az AtomicCounter.h-ból, mivel a Qt's QAtomicInt osztály nem támogatja az AtomicIncrement () metódus új visszatérési értékéhez szükséges funkciókat.
    • Eltávolított MessageIOGateway :: FlattenMessage () és MessageIOGateway :: UnflattenMessage (). Hozzáadva a helyükön: MessageIOGateway :: FlattenHeaderAndMessage () és MessageIOGateway :: UnflattenHeaderAndMessage (). Ezek az új módszerek egyaránt foglalkoznak a fejléc bájtjaival és az Üzenetek testével.
    • Hozzáadott egy udpproxy.vcproj fájlt a tesztek mappájába, hogy segítsen összeállítani a udpproxy rendszert a Windows alatt.
    • Üzenet: A Flatten () mostantól az üzenet mezők fölé kerül, kétszer anélkül.
    • A GetCurrentThreadID () most egy inline függvény, mivel mostantól a HashtableIterator gyakran hívja.
    • Módosította a holtpontkeresőkódot a Hashtables helyett a Várólisták használatára, hiszen az muscle_thread_id nem használható Hashtable kulcs típusként.
    • Fix testudp.cpp-t használva a MessageIOGateway használatához az UDP kommunikációhoz.
    • Csinálta az ifdefs fájlt egy kicsit a FilePathInfo.cpp fájlban, így a statInfo.st_birthtimespec nem fér hozzá MacOS / X SDK-k használatakor, amelyek nem adják meg.
    • A MessageDataIOGateway többé nem próbálja meg eltávolítani egy üzenetet egy zlib által deflált adatpufferről, amelyet nem tudott újra feltölteni.
    • Javított egy hibát a SendDataUDP () -en, amely a SendDataUDP () függvényében hibát okozhat, ha multicast címre küldi a nem blokkoló üzemmódot, és a kimeneti puffer tele van.

    Az újdonság az 5.85-ös verzióban:

    • Hozzáadta a LogTime (MUSCLE_LOG_DEBUG) hívásokat a MessageIOGateway :: DoInputImplementation () és az Message :: Unflatten () üzenetben lévő összes hibapontra, így könnyebben meghatározható, ha a TCP-kapcsolatok megszakadnak az adatok miatt korrupció.
    • Hozzáadott egy PreviousOperationHadTransientFailure () függvényt, amely az true iff errno értéket adja vissza EINTR vagy ENOBUFS.
    • A spamspersecond = -1 megadásával a hexterm a lehető leggyorsabban küldhet spam adatokat.
    • A SocketMultiplexer.h MUSCLE_USE_POLL implementációja a POLLERR-t a WSAPoll () -hoz szállította, de a WSAPoll () nem támogatja a POLLERR-et, így a WSAPoll () hibaüzenet jelenhet meg. A probléma körülkerült a POLLERR szűrése során a Windows alatt végzett fordítás során.
    • Javítva egy olyan hiba, ahol az ENOBUFS visszaküldésével járó send () okozhat az aljzat-kapcsolatot, annak ellenére, hogy az ENOBUFS nem halálos kimenetelű állapot.
    • A SocketMultiplexer.cpp nem fordul elő, ha a MUSCLE_USE_POLL definiálásra került. Fix.
    • A ZLibCodec :: Deflate () metódus nem tud tömöríteni minden adatot egy nagyon nagy pufferben (például több mint 42 MB). Fix.

    Az újdonság az 5.84-es verzióban:

    • A StringMatcher osztály numerikus tartományú szintaxisát kibővítettük, így most több tartományt adhat meg. Például a & quot; & quot; a "19", a "20", a "21", a "25", a "30", a "31", a [...] és az "50"
    • Hozzáadta a GetCurrentTime64ForRunTime64 () és a GetRunTime64ForCurrenTime64 () konverziós funkciókat a TimeUtilityFunctions.h fájlhoz.
    • Hozzáadott egy GetDescendant () segédprogram metódust a DataNode osztályhoz.
    • Hozzáadta a C ++ 11 mozgás-konstruktorokat és a mozgás-hozzárendelés-operátorokat a Hashtable, Queue, String, Message és ByteBuffer osztályokhoz. A régebbi fordítókkal való visszafelé kompatibilitás érdekében ez a kód csak akkor fordul elő, ha a fordító sorban a -DMUSCLE_USE_CPLUSPLUS11 szerepel.
    • A SharedMemory osztály most nerf egy nem megosztott memóriaosztályba, ha -DMUSCLE_FAKE_SHARED_MEMORY van megadva.
    • Hozzáadott egy tesztfilepathinfo tesztet a teszt mappához.
    • Frissített minden szerzői jogi figyelmeztetés fejlécét, hogy elolvashassa a Meyer Sound 2000-2013-as verzióját.
    • Hozzáadott szóközök a makrójelek (például UINT32_FORMAT_SPEC) és a sztring állandók között (például "Hello"), hogy a C ++ 11 fordítók boldogok legyenek.
    • A ByteBuffer.cpp-nek szintaktikai hibája volt, amely megakadályozná a big-endian gazdagépek fordítását. Fix.
    • Csak MacOS / X: Az elavult Carbon függvényhívásokat Mach egyenértékekkel helyettesítette, a 10.8.x alatti elmaradási figyelmeztetések elkerülése érdekében.

      • Hozzáadta az InflateByteBuffer () és a DeflateByteBuffer () kényelmes verzióit, amelyek

      vegyen egy ByteBufferRef argumentumot.

    • Néhány elavult / fel nem használt módszert (EnsureBufferSize () és FreeLargeBuffer ()) eltávolított az AbstractMessageIOGateway osztályból.
    • Javítva néhány hibát a delphi almappában szereplő megjegyzésekben.
    • A Hashtable osztály már nem generál figyelmeztetéseket MSVC alatt összeállított -DMUSCLE_AVOID_MINIMIZED_HASHTABLES definícióval.
    • Fix egy hiba az IPAddressAndPort :: ToString () -ben, amely az IPv4 cím stringeket félreértelmezett formában okozta, amikor (preferIPv4Style) hamis.

Hasonló program

DB2
DB2

19 Feb 15

H2 Database Engine
H2 Database Engine

17 Feb 15

Qercus
Qercus

14 Apr 15

Más szoftver fejlesztő Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Hozzászólások a MUSCLE

Hozzászólás nem található
Megjegyzés hozzáadása
Kapcsolja be a képeket!