Ang ibig sabihin ng
Mga tampok sa isang sulyap
Sa MUSCLE, madaling ma-customize ng mga user ang kasama na "muscled server" sa pamamagitan ng pagtukoy sa kanilang sariling logic session o message-streaming protocol. Ang software ay tumutulong sa iyo na isulat ang iyong client code sa alinman sa mga C ++, C, C #, Java, Delphi o Python programming languages.
Ang program ay gumagamit ng BMessage-like na kalamnan :: Mensahe, sinusuportahan ng pagpapadala ng pipi na kalamnan :: Ang mga mensahe sa pagitan ng mga computer sa pamamagitan ng mga stream ng TCP (Transmission Control Protocol), nagpapadala ng isang & ldquo; muscled server & rdquo; sa isang server machine, na nagpapahintulot sa iyo na magsulat ng mga program ng client na maaaring magamit upang makipag-ugnayan sa server.
Bukod pa rito, kabilang dito ang single- at multi-threaded messaging API na sumusuporta sa lahat ng nabanggit na mga programming language. Ang & ldquo; muscled server & rdquo; ay maaaring madaling ma-customize sa pamamagitan ng pagtukoy ng isang message-streaming protocol o isang session logic.
Pagsisimula sa MUSCLE
Pagkatapos ng isang matagumpay na pag-login, maaaring matukoy ng mga programa ng client kung sino pa ang naka-log in sa central server, pati na rin ang tindahan ng kalamnan: Mga mensahe sa RAM (memorya ng system) at magpadala ng kalamnan :: Mga mensahe sa ibang mga kliyente na nakakonekta sa server. Pakitandaan na maaaring mag-subscribe ang mga programa ng kliyente sa partikular na data sa server, at makakuha ng mga agarang abiso kapag nagbago ang data.
Sinusuportahan ang isang malawak na hanay ng mga pag-uusap ng mensahe
Ang software ay dinisenyo upang suportahan ang isang malawak na hanay ng mga routing ng mensahe, kabilang ang unicast-style, estilo ng broadcast at estilo ng multicast sa pamamagitan ng isang intelligent, hierarchical pattern na tumutugma sa routing na mekanismo.
Mga sinusuportahang OS at availability
MUSCLE ay tumatakbo sa anumang operating system na sumusunod sa POSIX. Ipinagkakaloob ito bilang isang solong pangkalahatang archive ng mga mapagkukunan na nagbibigay-daan sa mga user na i-optimize ang application para sa kanilang sistema ng GNU / Linux. Ang parehong 32-bit at 64-bit na mga platform ng hardware ay sinusuportahan sa oras na ito.
Ano ang bago sa paglabas na ito:
- Ang mga pagsusulit / Makefile-mt ay hindi na sumusubok na sumulat ng pagsusulit sa testreflectsession maliban kung isinasagawa sa isang OS na sinusuportahan ng testreflectsession.
- May ilang menor de edad na pag-edit at muling pag-aayos ng & quot; MUSCLE sa pamamagitan ng Halimbawa & quot; mga pahina.
- Pinalitan ang isang bilang ng mga `tag` sa MkDocs na may [URLs] (...)
- Inalis ang pribadong-mana ng CountedObject mula sa lahat ng mga klase na mayroon nito - ngayon ay kinabibilangan din sila ng isang variable na pribadong miyembro ng CountedObject. Ito ay tapos na lamang dahil ang lahat na pribadong mana ay cluttering ang DOxygen inheritance graphs.
- Nagdagdag ng DECLARE_COUNTED_OBJECT macro sa CountedObject.h upang ang anumang mga potensyal na memory-overhead ng CountedObjects ay maaaring alisin sa mga kaso kung saan hindi ninanais ang object-counting.
- Inalis ang suporta para sa -DMUSCLE_AVOID_OBJECT_COUNTING at nagdagdag ng isang -DMUSCLE_ENABLE_OBJECT_COUNTING macro sa lugar nito. (Iyon ay, ang klase ng CountedObject ngayon ay hindi pinagana ng default at dapat na malinaw na pinagana upang magamit ito)
- Nagdagdag ng & quot; MUSCLE sa pamamagitan ng Halimbawa & quot; dokumentasyon para sa MiscUtilityFunctions. {cpp, h}
- Binago ang isang bilang ng mga `tag` sa MUSCLE-by-Example na pinagmulan ng MkDocs sa [mga url] upang ang mga paraan na binabanggit ay maaaring mabilis na masuri.
- Naayos ang ilang mga babala sa gcc sa folder ng mga pagsusulit (bawat mungkahi ni Mika)
- Ang UnparseFile () ay hindi nag-quote ng mga keyword na may wastong mga puwang. Fixed.
- Inayos ang mga dependency sa & quot; MUSCLE sa pamamagitan ng Halimbawa & quot; mga halimbawa 'Makefiles.
Ang server / Makefile ngayon ay tumutukoy sa libmuscle.a matapos ang main () .o file.
Ano ang bagong sa bersyon:
- Nagdagdag ng isang paraan ng kaginhawaan sa ShrinkToFit () sa Queue, Hashtable, at mga klase sa String. Ang pamamaraan na ito ay nagpapahaba sa bagay upang ang halaga ng memory na inilalaan nito ay katugma sa laki ng data na aktwal na may hawak.
- Hashtable :: EnsureSize () at Queue :: EnsureSize () ngayon tumagal ng isang opsyonal (allowShrink) na argumento, na (kung nakatakda sa totoo) ay nagbibigay-daan sa internally-allocated na array ng bagay upang ma-reallocated mas maliit kung ito ay mas malaki kaysa sa kinakailangan.
- Tweaked ang pag-uugali-pagpapalawak ng pag-uugali ng klase ng String na medyo mas mahusay.
- Nagdagdag ng bantay laban sa isang potensyal na walang katapusan na recursion na maaaring maganap habang nag-log ng isang & quot; SAAN ng MEMORY & quot; error pagkatapos ng kabiguan ng paglalaan ng memorya, kung sinubukan ng isang LogCallback na maglaan ng memorya.
Ano ang bago sa bersyon 6.01:
- Nagdagdag ng PrependWord () na paraan ng kaginhawaan sa klase ng String.
- Nagdagdag ng mga paraan ng kaginhawaan sa Mga Istasyon ng String.
- Nagdagdag ng isang paraan ng SetExplicitDelayMicros () sa klase ng DetectNetworkConfigChangesSession.
- Nagdagdag ng isang paraan ng IsCopperDetected () sa klase ng NetworkInterfaceInfo, upang maipabatid ng code kung ang isang Ethernet jack ay may cable na naka-plug in dito.
- Nagdagdag ng isang & quot; quietsend & quot; argumento sa hexterm.
- Ang virtual na paraan ng NetworkInterfacesChanged () sa klase ng DetectNetworkConfigChangesSession ay binago upang kumuha ng isang argument na tumatawag kung aling mga interface ng network ay partikular na nagbago. Ang pag-andar na ito ay kasalukuyang ipinapatupad lamang sa ilalim ng Linux, MacOS / X at Windows. Para sa iba pang OS ang argument ay palaging isang walang laman na listahan.
- Nakapirming isang bug sa pagpapatupad ng Linux ng DetectNetworkConfigChangesSession na maaaring maging sanhi ng isang segmentation fault kung recvmsg () ay nagbalik ng isang error (hal. dahil sa isang signal na natanggap).
Ano ang bago sa bersyon 6.00:
- I-rewrote ang klase ng SSLSocketDataIO upang gumana nang mas mahusay sa hindi pag-block sa I / O (kasabay ng bagong klase ng SSLSocketAdapterGateway).
- Nagdagdag ng mga pagpapatupad ng SSLSocketDataIO :: SetPrivateKey () at SSLSocketDataIO :: SetCertificate () na tumagal ng isang ByteBuffer bilang isang argument.
- Nagdagdag ng klase ng SSLSocketAdapterGateway na ginagamit upang pamahalaan ang internal state machine ng OpenSSL kapag gumagamit ng SSLSocketDataIO klase sa iyong gateway.
- Nagdagdag ng mga paraan ng SetSSLPrivateKey () at GetSSLPrivateKey () sa klase ng ReflectServer, para sa mas madaling pagpapagana ng pagpapatunay ng SSL sa lahat ng mga papasok na koneksyon ng TCP. Ang mga pamamaraan na ito ay magagamit kung ang MUSCLE_ENABLE_SSL ay tinukoy.
- Nagdagdag ng mga setting ng SetSSLPublicKeyCertificate () at GetSSLPublicKeyCertificate () sa klase ng ReflectServer, para sa mas madaling pagpapagana ng pagpapatunay ng SSL sa mga papalabas na koneksyon ng TCP. Ang mga pamamaraan na ito ay magagamit kung ang MUSCLE_ENABLE_SSL ay tinukoy.
- Nagdagdag ng mga setting ng SetSSLPrivateKey () at SetSSLPublicKeyCertificate () sa klase ng MessageTransceiverThread, para sa mas madaling pagpapagana ng pag-andar ng SSL kapag gumagamit ng sinulid na I / O.
- Nagdagdag ng ssl_data na folder na may ilang impormasyon sa pagbuo ng mga public / private na OpenSSL na keypairs, at isang halimbawa ng keypair para magamit sa pagsubok ng OpenSSL.
- Kapag tinukoy ang MUSCLE_ENABLE_SSL, tinatanggap na ngayon ng muscled ang argumento ng opsyonal na 'privatekey = filename'. Kapag tinukoy, ang SSL mode ay papaganahin at ang muscled ay tatanggap lamang ng mga papasok na koneksyon sa TCP na nagpapakita ng mga pampublikong key na tumutugma sa pribadong key / certificate na ito.
- Kapag tinukoy ang MUSCLE_ENABLE_SSL, ang portablereflectclient at qt_example ay tatanggap na ngayon ng argumento ng opsyonal na 'publickey = filename'. Kapag tinukoy, ang SSL mode ay pinagana at ang mga kliyente na ito ay kumonekta sa muscled gamit OpenSSL at ipakita ang file na ito bilang kanilang mga kredensyal.
- Nagdagdag ng isang & quot; Pagalawin & quot; checkbox sa qt_example demo. Ang pagsuri nito ay nagiging sanhi ng window upang ilipat ang indicator nito sa awtomatikong paligid. Ito ay masaya at kapaki-pakinabang din kung nais mong subukan ang isang sitwasyon kung saan maraming mga kliyente ay bumubuo ng trapiko nang sabay-sabay.
- Ginawa ang qt_example demo prettier.
- Pinalitan ang pangalan ng C ++ 11-helper macros sa Hashtable.h at Queue.h upang gawing mas malamang na magkakasunod sila sa mga macro ng iba pang mga pakete. * Fixed ilang menor de edad mga error sa SSLSocketDataIO klase. o Palitan ang pangalan SSLSocketDataIO :: SetKey () sa SetPrivateKey (). o Palitan ang pangalan SSLSocketDataIO :: SetCertificate () sa SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () ngayon ay isang virtual na paraan.
Ano ang bago sa bersyon 5.92:
- Pinahusay na suporta para sa C ++ 11 na paglipat-semantika sa mga klase ng Queue at Hashtable (pinagana lamang kapag -DMUSCLE_USE_CPLUSPLUS11 ay tinukoy)
- Nagdagdag ng ilang paggamit ng mga kasangkapan sa klase ng String upang mapanood ko kung gaano karaming beses na nakopya ang isang bagay na String, inilipat, atbp (pinagana lamang kapag -DMUSCLE_COUNT_STRING_COPY_OPERATIONS ay tinukoy)
- Nagdagdag ng isang function na PrintAndClearStringCopyCounts () na mag-print ng data ng String-operasyon na nakolekta sa itaas.
- Nagdagdag ng ilang magic SFINAE sa muscleSwap () upang mag-swap ito sa pamamagitan ng pagtawag sa SwapContents () kung maaari, sa halip na sa pagkopya sa pansamantalang bagay.
- Nagdagdag ng tagapagbuo ng listahan ng initializer at Sobra ng AddTailMulti () sa klase ng Queue (magagamit lamang kapag -DMUSCLE_USE_CPLUSPLUS11 ay tinukoy, siyempre)
- Pinalitan ang pangalan ng queue at array overloads ng Queue :: AddTail () sa AddTailMulti (), upang maiwasan ang mga kontrahan sa bagong C ++ 11 template sa pag-parse ng suporta.
- Pinalitan ang pangalan ng queue at array overloads ng Queue :: AddHead () sa AddHeadMulti (), upang maiwasan ang mga kontrahan sa bagong C ++ 11 template sa pag-parse ng suporta.
- Pinalitan ang MCRASH_IMPL macro gamit ang isang tawag upang igiit (hindi totoo).
- Kaunting higit pa sa tweakage ng pagiging tugma sa Android.
- Marami sa mga program sa mga folder ng pagsusulit ay hindi nakaluklok sa ilalim ng C + + 11. Fixed.
- Nakatakdang ilang mga potensyal na mga bug na nakita ng static analysis tool ng clang.
Ano ang bago sa bersyon 5.91:
- Nagdagdag ng paraan ng kaginhawaan sa EnsureCanPut () sa klase ng Hashtable.
- Nagdagdag ng paraan ng kaginhawaan sa EnsureCanAdd () sa klase ng Queue.
- Nagbago ang DoMutexAtomicIncrement () upang maging isang function ng inline upang gawing mas mahusay ang pagtawag nito.
- Binago ang QMessageTransceiverThread at QAcceptSocketsThread upang tumawag sa QCoreApplication :: postEvent () sa halip na QApplication :: postEvent (), upang payagan ang mga di-GUI Qt apps.
- Na-update ang dokumento ng Gabay sa Baguhan upang maipakita ang pinabuting suporta ng UDP ng MUSCLE.
- Pinagsama sa ilang mga pagbabago sa compatibility ng Android na ibinigay ni Jean-FranA§ois Mullet.
- Ang paggamit ng MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS flag ng pag-compile ay magiging sanhi ng pag-crash ng MUSCLE sa startup dahil sa isang order-of-operations na isyu. Naayos na ito ngayon.
- Ang MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS flag ng pag-compile ay ginamit lamang dati kung walang iba pang pagpapatupad ng AtomicCounter. Ngayon ang bandila ay may mas mataas na precedence, kaya ang pagtatakda ng bandila ay nangangahulugang ang Mutexes ay gagamitin, kahit na ang isa pang (mas mahusay) na mekanismo ay magagamit.
Ano ang bago sa bersyon 5.90:
- Nagdagdag ng isang GetPacketMaximumSize () na paraan sa klase ng DataIO upang pahintulutan ang gateway code upang mas matalinong hawakan ang UDP-style packetized na komunikasyon.
- MessageIOGateway ngayon ay gumagana nang kapaki-pakinabang kasabay ng UDPSocketDataIO.
- Nagdagdag ng CreateObjectFromArchiveMessage () templated na mga function sa Message.h, upang maglingkod bilang isang counterpart ng pagpapanumbalik sa GetArchiveMessageFromPool (), atbp.
- AtomicCounter :: AtomicIncrement () ngayon ay nagbabalik ng isang boolean (totoo kung ang bagong halaga ng counter ay katumbas ng isa).
- Binago ang klase ng HashtableIterator upang ang mga read-only na mga iteration na Hashtable ngayon ay ligtas sa thread kahit na hindi tinukoy ang flag ng HTIT_FLAG_NOREGISTER.
- Nagdagdag ng isang muscle_thread_id klase sa SetupSystem.h, upang maayos na kumatawan sa isang thread ID sa isang neutral na paraan ng pagpapatupad.
- Nagdagdag ng & quot; deadlock & quot; programa sa mga folder ng pagsusulit. Ang programang ito ay sadyang panganib na lumikha ng isang hindi pagkakasundo, bilang isang paraan upang mag-ehersisyo / magpakita ng deadlockfinder test.
- Nagdagdag ng suporta para sa flag na linya ng -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS, para sa mga mas gugustuhin na maiwasan ang ibabaw ng awtomatikong kaligtasan ng thread at pangako na matustusan ang mga argumento ng HTIT_FLAG_NOREGISTER sa pamamagitan ng kamay kung kinakailangan.
- Nagdagdag ng isang opsyonal na cache ng lookup ng LRU sa function na GetHostByName (), upang maaari itong bumalik nang mas mabilis kapag ang parehong mga hostname ay nakakakuha ng malutas nang paulit-ulit.
- Nagdagdag ng isang function na SetHostNameCacheSettings () na nagbibigay-daan at nag-aayos ng cache lookup ng LRU sa GetHostByName ().
- Nagdagdag ng suporta para sa & quot; dnscache & quot; at & quot; dnscachesize & quot; argumento ng command line sa HandleStandardDaemonArgs (), upang payagan ang pagtutukoy ng command-line ng pag-uugaling cache ng LRU lookup.
- Binago ang klase ng Hashtable upang ang mga halaga ng miyembro ng _iterHead, _iterTail, at _freeHead ay ngayon uint32s kaysa sa mga payo, upang mabawasan ang paggamit ng memory.
- Inalis ang ThreadLocalStorage :: SetFreeHeldObjectsOnExit () na paraan, at nagdagdag ng isang boolean argument sa tagapagbuo nito sa halip, dahil ang mga pthreads ay hindi nagpapahintulot sa iyo na baguhin ang setting na iyon pagkatapos na tawagin ang pthread_key_create ().
- Inilipat ang GetCurrentThreadID () sa klase ng muscle_thread_id bilang isang function ng static na miyembro, at binago ito upang ibalik ang isang kalamnan_thread_id na bagay sa halip na hindi linagdaan nang mahaba.
- Binago ang default na hostname para sa mga sesyon nang walang isang kilalang IP address mula sa & quot; & quot; sa & quot; _unknown_ & quot ;, samantalang ang mga bracket ng anggulo sa dating string ay may espesyal na kahulugan ng 5.84 release, at maaaring makagambala sa pagtutugma ng node-path sa mga hindi nilalayong paraan.
- Ang mga paraan ng CalculateChecksum () sa Message.cpp ay binago upang maging mas matatag sa pag-detect ng mga pagkakaiba sa transposisyon ng data.
- Inalis ang suporta ng MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS mula sa AtomicCounter.h, dahil ang Qt's QAtomicInt class ay hindi sumusuporta sa pag-andar na kinakailangan ng bagong return value ng AtomicIncrement () method.
- Inalis MensaheIOGateway :: FlattenMessage () at MessageIOGateway :: UnflattenMessage (). Idinagdag sa kanilang lugar: MessageIOGateway :: FlattenHeaderAndMessage () at MessageIOGateway :: UnflattenHeaderAndMessage (). Ang mga bagong pamamaraan na ito ay nakikitungo sa parehong mga byte ng header at ng Message body nang sabay-sabay.
- Nagdagdag ng isang udpproxy.vcproj file sa folder ng mga pagsusulit, upang matulungan kang mag-compile ng udpproxy sa ilalim ng Windows.
- Mensahe: I-flatten () ngayon ay nag-ulit sa mga patlang sa Mensahe isang beses, sa halip ng dalawang beses.
- GetCurrentThreadID () ngayon ay isang inline na function, dahil maaari na itong madalas na tawagin ng HashtableIterator.
- Binago ang deadlockfinder code upang magamit ang Mga Queue sa halip na Hashtables, dahil ang muscle_thread_id ay hindi maaaring gamitin bilang isang key type ng Hashtable.
- Fixed testudp.cpp upang maayos na gumamit ng MessageIOGateway para sa komunikasyon ng UDP nito.
- Tweaked ang ifdefs sa FilePathInfo.cpp ng kaunti pa upang ang statInfo.st_birthtimespec ay hindi ma-access kapag gumagamit ng MacOS / X SDK na hindi nagbibigay nito.
- MessageDataIOGateway ay hindi na sumusubok na Unflatten isang Mensahe mula sa isang buffer ng buffer ng zlib na hindi na ito muling maipahayag.
- Nakapirming isang bug sa SendDataUDP () na maaaring maging sanhi ng SendDataUDP () nang hindi tama ang pagbawi ng isang error kapag nagpadala sa isang multicast address gamit ang mode na hindi blocking, at buffer output ay puno.
Ano ang bago sa bersyon 5.85:
Ang mga tawag na LogTime (MUSCLE_LOG_DEBUG) ay idinagdag sa lahat ng mga landas ng error sa MessageIOGateway :: DoInputImplementation () at Message :: Unflatten (), upang mas madaling matukoy kung ang mga koneksyon ng TCP ay naurong dahil sa data katiwalian.Ano ang bago sa bersyon 5.84:
- Ang numerong hanay ng sintomas ng hanay ng StringMatcher ay pinalawak upang maitakda mo na ngayon ang maraming mga saklaw. Halimbawa, ang & quot; & quot; ay tumutugma sa mga string na & quot; 19 & quot ;, & quot; 20 & quot ;, & quot; 21 & quot ;, & quot; 25 & quot ;, & quot; 30 & quot ;, & quot; 31 & quot ;, [...], at & quot; 50 & quot;.
- Nagdagdag ng GetCurrentTime64ForRunTime64 () at GetRunTime64ForCurrenTime64 () mga pag-andar ng conversion sa TimeUtilityFunctions.h.
- Nagdagdag ng GetDescendant () na paraan ng utility sa klase ng DataNode.
- Nagdagdag ng C ++ 11 mga tagabuo ng paglipat at paglipat-na-assignment sa Hashtable, Queue, String, Message, at ByteBuffer na mga klase. Para sa pabalik na pagkakatugma sa mas lumang mga compiler, ang code na ito ay pinagsama lamang kung -DMUSCLE_USE_CPLUSPLUS11 ay tinukoy sa linya ng pag-compile.
- Ang klase ng SharedMemory ay magparehistro na ngayon sa isang di-shared-memory class kung tinukoy ang -DMUSCLE_FAKE_SHARED_MEMORY.
- Nagdagdag ng testfilepathinfo test sa folder ng pagsusulit.
- Na-update ang lahat ng mga header ng paunawa sa copyright na basahin ang 2000-2013 Meyer Sound.
- Nagdagdag ng mga puwang sa pagitan ng mga token ng macro (hal. UINT32_FORMAT_SPEC) at mga konstant ng string (hal. & quot; Hello & quot;) upang gawing masaya ang mga compiler ng C ++ 11.
- Ang ByteBuffer.cpp ay nagkaroon ng isang error sa syntax na pipigilan ito mula sa pag-compile sa mga big-endian host. Fixed.
- MacOS / X lamang: Pinalitan ang hindi na ginagamit na mga tawag sa function ng Carbon na may katumbas ng Mach, upang maiwasan ang mga babala sa pagbabawal sa ilalim ng 10.8.x.
Ano ang bago sa bersyon 5.83:
- Nagdagdag ng mga kaginhawaan na bersyon ng InflateByteBuffer () at DeflateByteBuffer () kumuha ng ByteBufferRef bilang argumento.
- Inalis ang ilang mga lipas na / hindi ginagamit na mga pamamaraan (EnsureBufferSize () at FreeLargeBuffer ()) mula sa klase ng AbstractMessageIOGateway.
- Naayos ang ilang mga typo sa mga komento sa delphi subfolder.
- Ang Hashtable class ay hindi na bumubuo ng mga babala kapag naipon sa ilalim ng MSVC sa -DMUSCLE_AVOID_MINIMIZED_HASHTABLES na tinukoy.
- Nakatakdang isang bug sa IPAddressAndPort :: ToString () na naging sanhi ng hindi wastong naka-format ang mga string ng IPv4 address kapag (preferIPv4Style) ay itinakda sa hindi totoo.
Mga Komento hindi natagpuan