MUSCLE

Screenshot Software:
MUSCLE
Szczegóły programowe:
Wersja: 6.82 Aktualizowane
Filmu: 22 Jun 18
Wywoływacz: Jeremy Friesner
Licencja: Wolny
Popularność: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE oznacza środowisko łączenia klienta dla wielu użytkowników i jest to open source, bezpłatny, solidny, skalowalny i wieloplatformowy system przesyłania wiadomości, który składa się z komponentów serwerowych i klienckich. Pomoże Ci pisać wszelkiego rodzaju rozproszone oprogramowanie, od gier wieloosobowych i klientów czatu IRC, po aplikacje obliczeniowe SETI.


Funkcje na pierwszy rzut oka

Dzięki MUSCLE użytkownicy będą mogli łatwo dostosować dołączony "umięśniony serwer", definiując własną logikę sesji lub protokół przesyłania strumieniowego wiadomości. Oprogramowanie pomaga napisać kod klienta w jednym z języków programowania C ++, C, C #, Java, Delphi lub Python.

Program wykorzystuje mięsień podobny do BMessage :: Wiadomości, wspiera wysyłanie spłaszczonego mięśnia :: Wiadomości między komputerami za pośrednictwem protokołów TCP (Transmission Control Protocol), wdraża umięśniony serwer & rdquo; na komputerze serwera, umożliwiając pisanie programów klienckich, które mogą być używane do komunikacji z serwerem.

Dodatkowo zawiera interfejsy API do obsługi wiadomości jedno- i wielowątkowych, które obsługują wszystkie wyżej wymienione języki programowania. Serwer umięśniony & rdquo; można łatwo dostosować, definiując protokół przesyłania wiadomości lub logikę sesji.

Pierwsze kroki z MUSCLE

Po pomyślnym zalogowaniu, programy klienckie mogą określić, kto jeszcze jest zalogowany na serwerze centralnym, a także przechowywać mięśnie :: Wiadomości w pamięci RAM (pamięć systemowa) i wysyłać mięśnie :: Wiadomości do innych klientów, którzy są połączeni na serwer. Należy pamiętać, że programy klienckie mogą subskrybować określone dane na serwerze i otrzymywać natychmiastowe powiadomienia o zmianach danych.


Obsługuje szeroki zakres tras wiadomości

Oprogramowanie zostało zaprojektowane do obsługi szerokiej gamy tras komunikatów, w tym stylów emisji pojedynczej, stylu rozgłoszeniowego i typu multicast, dzięki inteligentnemu, hierarchicznemu mechanizmowi routingu dopasowanemu do wzorca.


Obsługiwane systemy i dostępność

MUSCLE działa na dowolnym systemie operacyjnym zgodnym z POSIX. Jest dystrybuowany jako pojedyncze, uniwersalne archiwum źródłowe, które pozwala użytkownikom zoptymalizować aplikację pod kątem systemu GNU / Linux. W tej chwili obsługiwane są 32-bitowe i 64-bitowe platformy sprzętowe.

Co nowego w tej wersji:

  • tests / Makefile-mt nie próbuje już kompilować testreflectsession, z wyjątkiem wykonywania w systemie operacyjnym, który obsługuje testreflectsess.
  • Wykonano drobną edycję i ponowne ustawienie "MUSCLE według przykładu" strony.
  • Zastąpiono pewną liczbę "tagów" w MkDocs za pomocą [adresów URL] (...)
  • Usunięto dziedziczenie prywatne obiektu CountedObject ze wszystkich klas, które go zawierały - teraz zawierają zmienną prywatną CountedObject. Stało się tak tylko dlatego, że całe to prywatne dziedzictwo zaśmiecało wykresy dziedziczenia DOxygen.
  • Dodano makro DECLARE_COUNTED_OBJECT do CountedObject.h, dzięki czemu można wyeliminować wszelkie potencjalne obciążenie pamięci obiektu CountedObjects w przypadkach, gdy liczenie obiektów nie jest pożądane.
  • Usunięto obsługę rozszerzenia -DMUSCLE_AVOID_OBJECT_COUNTING i dodano makro -DMUSCLE_ENABLE_OBJECT_COUNTING. (Oznacza to, że klasa CountedObject jest teraz wyłączona-domyślnie i musi być jawnie włączona w celu jej użycia)
  • Dodano "MUSCLE za pomocą przykładu" dokumentacja dla MiscUtilityFunctions. {cpp, h}
  • Zmieniono wiele tagów `w źródle MkDocs MUSCLE-by-Example na [urls], dzięki czemu metody, o których wspominają, można szybko przejrzeć.
  • server / Makefile określa teraz libmuscle.a po pliku main () .o.
  • Naprawiono niektóre ostrzeżenia gcc w folderze testów (według sugestii Miki)
  • UnparseFile () nie poprawnie cytował słów kluczowych z spacjami. Naprawiono.
  • Naprawiono zależności w "MUSCLE według przykładu" przykłady plików Makefile.

Co nowego w wersji:

  • Dodano metodę komfortu ShrinkToFit () do kolejki, Hashtable, i klasy String. Ta metoda zmniejsza obiekt, aby wewnętrznie dopasować ilość pamięci do rozmiaru danych, które faktycznie trzyma.
  • Hashtable :: NotifySize () i Queue :: NotifySize () teraz przyjmują opcjonalny argument (allowShrink), który (jeśli jest ustawiony na true) pozwala na ponowne przydzielenie tablicy przydzielonej wewnętrznie obiektowi, jeśli jest większy niż to konieczne.
  • Poprawiono zachowanie rozszerzania buforów klasy String, aby było nieco bardziej wydajne.
  • Dodano ochronę przed potencjalną nieskończoną rekurencją, która może wystąpić podczas rejestrowania komunikatu "BRAK PAMIĘCI". błąd po niepowodzeniu przydziału pamięci, jeśli LogCallback próbował przydzielić pamięć.

Co nowego w wersji 6.01:

  • Dodano metodę wygody PrependWord () do klasy String.
  • Dodano metody wygody WithReplacements () do klasy String.
  • Dodano metodę SetExplicitDelayMicros () do klasy DetectNetworkConfigChangesSession.
  • Dodano metodę IsCopperDetected () do klasy NetworkInterfaceInfo, aby kod mógł stwierdzić, czy w gnieździe Ethernet jest podłączony kabel.
  • Dodano "wyciszenie" & quot; argument do hexterm.
  • Metoda wirtualna NetworkInterfacesChanged () w klasie DetectNetworkConfigChangesSession została zmieniona tak, aby pobierała argument, który wywoływał zmiany interfejsów sieciowych. Ta funkcja jest obecnie dostępna tylko w systemach Linux, MacOS / X i Windows. W przypadku innych systemów operacyjnych argument będzie zawsze pustą listą.
  • Naprawiono błąd w implementacji Linuksa DetectNetworkConfigChangesSession, który mógł spowodować błąd segmentacji, jeśli recvmsg () zwrócił błąd (na przykład z powodu odbieranego sygnału).

Co nowego w wersji 6.00:

  • Przepisz klasę SSLSocketDataIO, aby działała lepiej bez nieblokujących operacji we / wy (w połączeniu z nową klasą SSLSocketAdapterGateway).
  • Dodano implementacje SSLSocketDataIO :: SetPrivateKey () i SSLSocketDataIO :: SetCertificate (), które pobierają argument ByteBuffer jako argument.
  • Dodano klasę SSLSocketAdapterGateway, która służy do zarządzania wewnętrznym automatem stanu OpenSSL, gdy używana jest klasa SSLSocketDataIO z bramą.
  • Dodano metody SetSSLPrivateKey () i GetSSLPrivateKey () do klasy ReflectServer, aby ułatwić włączanie uwierzytelniania SSL we wszystkich przychodzących połączeniach TCP. Te metody są dostępne iff zdefiniowane jest MUSCLE_ENABLE_SSL.
  • Dodano metody SetSSLPublicKeyCertificate () i GetSSLPublicKeyCertificate () do klasy ReflectServer, aby ułatwić włączanie uwierzytelniania SSL na wychodzących połączeniach TCP. Te metody są dostępne iff zdefiniowane jest MUSCLE_ENABLE_SSL.
  • Dodano metody SetSSLPrivateKey () i SetSSLPublicKeyCertificate () do klasy MessageTransceiverThread, aby ułatwić włączanie funkcji SSL podczas korzystania z wątkowych operacji wejścia / wyjścia.
  • Dodano folder ssl_data z pewnymi informacjami na temat generowania publicznych / prywatnych kluczy OpenSSL i przykładową parą kluczy do użycia w testowaniu OpenSSL.
  • Po zdefiniowaniu MUSCLE_ENABLE_SSL umazanie przyjmuje teraz opcjonalny argument "privatekey = nazwa pliku". Po określeniu, tryb SSL zostanie włączony, a umięśnione będą akceptować tylko przychodzące połączenia TCP, które prezentują klucze publiczne pasujące do tego klucza prywatnego / certyfikatu.
  • Po zdefiniowaniu MUSCLE_ENABLE_SSL portablereflectclient i qt_example będą teraz akceptować opcjonalny argument "publickey = filename". Po określeniu, tryb SSL zostanie włączony, a klienci będą łączyć się z muscled przy użyciu OpenSSL i przedstawiać ten plik jako swoje poświadczenia.
  • Dodano "Animuj" pole wyboru do demonstracji qt_example. Sprawdzenie go powoduje automatyczne przesunięcie wskaźnika wokół okna. Jest to przydatne i przydatne, jeśli chcesz przetestować scenariusz, w którym wielu klientów generuje ruch jednocześnie.
  • Ulepszono prezentację qt_example.
  • Zmienił nazwy makr C ++ 11-helper w Hashtable.h i Queue.h, aby zmniejszyć prawdopodobieństwo ich kolizji z makrami innych pakietów. * Naprawiono drobne błędy w klasie SSLSocketDataIO. o Zmieniono nazwę SSLSocketDataIO :: SetKey () na SetPrivateKey (). o Zmieniono nazwę SSLSocketDataIO :: SetCertificate () na SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () jest teraz metodą wirtualną.

Co nowego w wersji 5.92:

  • Poprawiona obsługa semantyki ruchu C ++ 11 w klasach Kolejka i Hashtable (włączona tylko wtedy, gdy zdefiniowano -DMUSCLE_USE_CPLUSPLUS11)
  • Dodano pewne oprzyrządowanie do klasy String, dzięki czemu mogę obserwować, ile razy obiekt String jest kopiowany, przenoszony itp. (włączony tylko wtedy, gdy zdefiniowano -DMUSCLE_COUNT_STRING_COPY_OPERATIONS)
  • Dodano funkcję PrintAndClearStringCopyCounts (), która wydrukuje dane operacji String zebrane powyżej.
  • Dodano trochę magii SFINAE do metody muscleSwap (), która będzie się zamieniać, wywołując SwapContents (), gdy będzie to możliwe, zamiast kopiować do obiektu tymczasowego.
  • Dodano konstruktor listy inicjalizacyjnej i przeciążenie AddTailMulti () do klasy Queue (dostępne tylko, gdy zdefiniowano -DMUSCLE_USE_CPLUSPLUS11)
  • Zmienił nazwę przeciążenia kolejki i tablicy kolejki :: AddTail () na AddTailMulti (), aby uniknąć konfliktów z nową obsługą analizowania szablonów C ++ 11.
  • Zmienił nazwę przeciążenia kolejki i tablicy kolejki :: AddHead () na AddHeadMulti (), aby uniknąć konfliktów z nową obsługą analizowania szablonów C ++ 11.
  • Zastąpiono makro MCRASH_IMPL wywołaniem potwierdzenia (false).
  • Trochę więcej ulepszeń kompatybilności z Androidem.
  • Wiele programów w folderze testów nie kompilowało się w C ++ 11. Naprawiono.
  • Naprawiono kilka potencjalnych błędów wykrytych przez narzędzie analizy statycznej klang.

Co nowego w wersji 5.91:

  • Dodano metodę wygodną dla metody ConfouchPut () do klasy HashTable.
  • Dodano metodę wygodną "Zapewnij dostawcę ()" do klasy kolejki.
  • Zmieniono DoMutexAtomicIncrement (), aby była funkcją inline, dzięki czemu wywoływanie jest bardziej wydajne.
  • Zmieniono QMessageTransceiverThread i QAcceptSocketsThread, aby wywoływać QCoreApplication :: postEvent () zamiast QApplication :: postEvent (), aby umożliwić aplikacjom Qt innym niż GUI.
  • Zaktualizowano dokument dla początkujących, aby odzwierciedlić ulepszoną obsługę UDP przez MUSCLE.
  • Scalono niektóre zmiany kompatybilności Androida dostarczone przez Jean-Frana§is Mullet.
  • Używanie flagi kompilacji MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS spowodowałoby awarię MUSCLE podczas uruchamiania z powodu problemu z kolejnością operacji. Zostało to naprawione teraz.
  • Flaga kompilacji MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS była poprzednio używana tylko wtedy, gdy nie było dostępne żadne inne wdrożenie AtomicCounter. Teraz flaga ma wyższy priorytet, więc ustawienie flagi oznacza, że ​​Mutexy będą używane, nawet jeśli dostępny jest inny (bardziej wydajny) mechanizm.

Co nowego w wersji 5.90:

  • Dodano metodę GetPacketMaximumSize () do klasy DataIO, aby umożliwić kodowi bramy bardziej inteligentną obsługę pakietowej komunikacji typu UDP.
  • MessageIOGateway teraz działa użytecznie w połączeniu z UDPSocketDataIO.
  • Dodano funkcje szablonowe CreateObjectFromArchiveMessage () do Message.h, aby służyć jako odpowiednik strony odtwarzania dla GetArchiveMessageFromPool (), itp.
  • AtomicCounter :: AtomicIncrement () zwraca teraz wartość boolowską (prawda, że ​​nowa wartość licznika jest równa jednej).
  • Zmodyfikowano klasę HashtableIterator tak, aby iteracje w trybie tylko do odczytu były teraz wątkowane, nawet jeśli flaga HTIT_FLAG_NOREGISTER nie została określona.
  • Dodano klasę muscle_thread_id do pliku SetupSystem.h, aby poprawnie reprezentować identyfikator wątku w sposób neutralny dla implementacji.
  • Dodano "zakleszczenie". program do folderu testów. Ten program celowo ryzykuje utworzenie impasu, jako sposobu na wykonanie / demonstrację testu zakłamania.
  • Dodano obsługę flagi wiersza komend -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS dla tych, którzy woleliby uniknąć obciążenia związanego z automatycznym zabezpieczaniem wątków i obiecać ręczne dostarczanie argumentów HTIT_FLAG_NOREGISTER w razie potrzeby.
  • Dodano opcjonalną pamięć podręczną LRU do funkcji GetHostByName (), dzięki czemu może ona szybciej powracać, gdy te same nazwy hostów są rozwiązywane wielokrotnie.
  • Dodano funkcję SetHostNameCacheSettings (), która włącza i dostosowuje pamięć podręczną wyszukiwania LRU w GetHostByName ().
  • Dodano obsługę "dnscache" & quot; i "dnscachesize" argumenty wiersza poleceń w HandleStandardDaemonArgs (), aby umożliwić specyfikację wiersza polecenia LRU z pamięcią podręczną.
  • Zmodyfikowano klasę Hashtable tak, aby wartości członów _iterHead, _iterTail i _freeHead były teraz uint32, a nie wskaźnikami, aby zmniejszyć zużycie pamięci.
  • Usunięto metodę ThreadLocalStorage :: SetFreeHeldObjectsOnExit () i zamiast niej dodano argument boolean do jego konstruktora, ponieważ pthreads nie pozwala zmienić tego ustawienia po wywołaniu pthread_key_create ().
  • Przeniesiono metodę GetCurrentThreadID () do klasy muscle_thread_id jako statyczną funkcję składową i zmieniono ją, aby zwracał obiekt muscle_thread_id, a nie był niepodpisany.
  • Zmieniono domyślną nazwę hosta dla sesji bez znanego adresu IP z & quot; & rdquo; do "_nieznany_", ponieważ nawiasy ostrokątne w poprzednim łańcuchu mają specjalne znaczenie od wersji 5.84 i mogą zakłócać dopasowywanie ścieżki węzła w niezamierzony sposób.
  • Metody CalculateChecksum () w Message.cpp zostały zmodyfikowane, aby były bardziej odporne na wykrywanie różnic w transpozycji danych.
  • Usunięto obsługę MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS z AtomicCounter.h, ponieważ klasa QAtomicInt klasy Qt nie obsługuje funkcji wymaganej przez nową wartość zwracaną przez metodę AtomicIncrement ().
  • Usunięto MessageIOGateway :: FlattenMessage () i MessageIOGateway :: UnflattenMessage (). Dodano na ich miejsce: MessageIOGateway :: FlattenHeaderAndMessage () i MessageIOGateway :: UnflattenHeaderAndMessage (). Te nowe metody dotyczą zarówno bajtów nagłówka, jak i treści wiadomości w tym samym czasie.
  • Dodano plik udpproxy.vcproj do folderu testów, aby ułatwić kompilację udpproxy w systemie Windows.
  • Wiadomość: Flatten () teraz iteruje po polach w wiadomości raz, a nie dwa razy.
  • Funkcja GetCurrentThreadID () jest teraz funkcją inline, ponieważ może być teraz często wywoływana przez HashtableIterator.
  • Zmodyfikowano kod zakleszczonego elementu tak, aby używał kolejek zamiast Hashtables, ponieważ atrybut muscle_thread_id nie może już być używany jako typ klucza HashTable.
  • Naprawiono testudp.cpp, aby poprawnie używać MessageIOGateway do komunikacji UDP.
  • Zmieniono ifdefs w FilePathInfo.cpp nieco bardziej, aby statInfo.st_birthtimespec nie był dostępny podczas korzystania z pakietów SDK systemu MacOS / X, które go nie zapewniają.
  • MessageDataIOGateway nie próbuje już usuwać komunikatu z bufora danych z błędem zlib, który nie był w stanie nadmuchać.
  • Naprawiono błąd w SendDataUDP (), który mógł spowodować, że SendDataUDP () nieprawidłowo zwrócił błąd podczas wysyłania na adres multiemisji za pomocą trybu bez blokady, a bufor wyjściowy był pełny.

Co nowego w wersji 5.85:

  • Dodano wywołania LogTime (MUSCLE_LOG_DEBUG) do wszystkich ścieżek błędów w MessageIOGateway :: DoInputImplementation () i Message :: Unflatten (), aby łatwiej było określić, kiedy połączenia TCP są przerywane z powodu danych korupcja.
  • Dodano funkcję PreviousOperationHadTransientFailure (), która zwraca true iff errno to EINTR lub ENOBUFS.
  • Określenie spamspersecond = -1 spowoduje teraz, że hexterm będzie wysyłać dane spamu tak szybko, jak to możliwe.
  • SocketMultiplexer.h implementacja MUSCLE_USE_POLL dostarczała POLLERR do WSAPoll (), ale WSAPoll () nie obsługuje POLLERR, więc WSAPoll () zwróciłby błąd, gdy do tego doszło. Rozwiązano problem, filtrując POLLERR podczas kompilowania pod Windows.
  • Naprawiono błąd, w którym funkcja send () zwracająca ENOBUFS mogła spowodować przerwanie połączenia z gniazdem, mimo że ENOBUFS nie jest stanem krytycznym.
  • SocketMultiplexer.cpp nie skompilowałby się, gdyby zdefiniowano MUSCLE_USE_POLL. Naprawiono.
  • Metoda ZLibCodec :: Deflate () nie skompresowałaby wszystkich danych w bardzo dużym buforze (np. ponad 42 MB). Naprawiono.

Co nowego w wersji 5.84:

  • Składnia numerycznego zakresu klasy StringMatcher została rozszerzona, dzięki czemu można teraz określać wiele zakresów. Na przykład "&"; pasują do ciągów "19", "20", "21", "25", "30", "31", [...] i "50".
  • Dodano funkcje konwersji GetCurrentTime64ForRunTime64 () i GetRunTime64ForCurrenTime64 () do funkcji TimeUtilityFunctions.h.
  • Dodano metodę użytkową GetDescendant () do klasy DataNode.
  • Dodano konstruktory ruchu C ++ 11 i operatory przypisania ruchu do klas Hashtable, Queue, String, Message i ByteBuffer. W celu zapewnienia kompatybilności wstecznej ze starszymi kompilatorami, ten kod zostanie skompilowany tylko wtedy, gdy w wierszu kompilacji podano parametr -DMUSCLE_USE_CPLUSPLUS11.
  • Klasa SharedMemory przełączy się teraz na klasę pamięci nie współużytkowanej, jeśli określono parametr -DMUSCLE_FAKE_SHARED_MEMORY.
  • Dodano test testfilepathinfo do folderu testów.
  • Zaktualizowano wszystkie nagłówki powiadomień o prawach autorskich, aby przeczytać 2000-2013 Meyer Sound.
  • Dodano spacje między tokenami makr (np. UINT32_FORMAT_SPEC) a stałymi łańcuchowymi (np. "Hello"), aby kompilatory C ++ 11 były szczęśliwe.
  • ByteBuffer.cpp miał błąd składniowy, który uniemożliwiałby kompilowanie go na dużych hostach. Naprawiono.
  • Tylko MacOS / X: zastąpiono przestarzałe wywołania funkcji Carbon za pomocą odpowiedników Macha, aby uniknąć ostrzeżeń o przestarzałości w punkcie 10.8.x.

Co nowego w wersji 5.83:

  • Dodano wygodne wersje InflateByteBuffer () i DeflateByteBuffer (), które weź argument ByteBufferRef.
  • Usunięto niektóre przestarzałe / nieużywane metody (AllowBufferSize () i FreeLargeBuffer ()) z klasy AbstractMessageIOGateway.
  • Naprawiono kilka literówek w komentarzach w podfolderze delphi.
  • Klasa Hashtable nie generuje już ostrzeżeń po kompilacji pod MSVC z zdefiniowanym parametrem -DMUSCLE_AVOID_MINIMIZED_HASHTABLES.
  • Naprawiono błąd w IPAddressAndPort :: ToString (), który powodował niejednoznaczne sformatowanie ciągów adresu IPv4, gdy (preferIPv4Style) ustawiono wartość false.

Podobne oprogramowanie

Inne programy z deweloperem Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Komentarze do MUSCLE

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!