MUSCLE

Скріншот програми:
MUSCLE
Дані програми:
Версія: 6.82 оновлений
Дата завантаження: 22 Jun 18
Розробник: Jeremy Friesner
Ліцензія: Безкоштовно
Популярність: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE - це середовище зв'язків клієнта з кількома користувацькими серверами, і це вільна, вільна, надійна, масштабована та міжплатформенна система обміну повідомленнями, яка складається з серверних і клієнтських компонентів. Це допоможе вам написати всі види розподілених програм, від багатокористувацьких ігор та клієнтів IRC-чатів, до додатків для розрахунків SETI.


Особливості з першого погляду

За допомогою MUSCLE користувачі зможуть легко налаштовувати включений "мускулистий сервер", визначивши власну логіку сеансу або протокол потокового передавання повідомлень. Програмне забезпечення допомагає вам писати свій код клієнта на будь-якій мові програмування на C ++, C, C #, Java, Delphi або Python.

Програма використовує BMessage-like muscle :: Повідомлення, підтримує надсилання сплюснутого м'язу :: Повідомлення між комп'ютерами за допомогою протоколів TCP (Transmission Control Protocol), розгортає & ldquo; мускулистий сервер & rdquo; на сервері, що дозволяє писати клієнтські програми, які можуть бути використані для спілкування з сервером.

Крім того, він включає в себе API-повідомлення з одним і багатьма потоками, які підтримують всі вищезгадані мови програмування. Мускусний сервер & rdquo; можна легко налаштувати, визначивши протокол потокового передавання повідомлень або логіку сеансу.

Початок роботи з MUSCLE

Після успішного входу в систему клієнтські програми можуть визначати, хто ще входить на центральний сервер, а також зберігати м'язи :: Повідомлення в оперативній пам'яті (системній пам'яті) і відправляти м'язи :: Повідомлення іншим підключеним клієнтам на сервер. Зверніть увагу, що клієнтські програми можуть підписатися на певні дані на сервері та отримувати миттєві сповіщення, коли дані змінюються.


Підтримує широкий спектр маршрутів повідомлень

Програмне забезпечення розроблено для підтримки широкого кола маршрутів повідомлень, включаючи унікальний стиль, стиль трансляції та багатоадресні стилі, за допомогою інтелектуального механізму маршрутизації, що відповідає ієрархічній структурі.


Підтримувані операційні системи та доступність

MUSCLE працює на будь-якій POSIX-сумісній операційній системі. Він поширюється як єдиний універсальний архів джерел, який дозволяє користувачам оптимізувати додаток для своєї системи GNU / Linux. Наразі підтримуються як 32-розрядні, так і 64-розрядні апаратні платформи.

Що нового в цьому випуску:

  • тести / Makefile-mt більше не намагається скомпілювати testreflectsession, крім випадків, коли виконується в ОС, яка підтримує testreflectsession.
  • Невелике редагування та перевпорядкування "MUSCLE за прикладом" сторінок.
  • Замінив кілька "тегів" у MkDocs з [URLs] (...)
  • Видалено приватну спадщину CountedObject з усіх класів, які мали це - тепер вони включають змінну приватного члена CountedObject. Це було зроблено лише тому, що вся ця приватна спадщина захаращувала графіки успадкування DOxygen.
  • До CountedObject.h додано макрос DECLARE_COUNTED_OBJECT, щоб будь-які потенційні обсяги пам'яті CountedObjects можна було усунути у випадках, коли підрахунок об'єктів не є бажаним.
  • Видалено підтримку для -DMUSCLE_AVOID_OBJECT_COUNTING і додано макрос -DMUSCLE_ENABLE_OBJECT_COUNTING на своєму місці. (Тобто, клас CountedObject тепер відключений за замовчуванням і повинен бути явно включений для його використання)
  • Додано & quot; MUSCLE за прикладом & quot; документація для різноманітних функцій. {cpp, h}
  • Змінено кілька "тегів" у джерелі MUSCLE за прикладом MkDocs у [urls], щоб можна було швидко переглянути їхні методи.
  • Сервер / Makefile тепер визначає libmuscle.a після основного () .o-файлу.
  • Виправлено деякі попередження gcc у теці теки (за пропозиціями Міки)
  • UnparseFile () не цитує ключові слова з пробілами належним чином. Виправлено.
  • Виправлено залежності в & quot; MUSCLE за прикладом & quot; Приклади "Makefiles".

    • Додано метод зручності ShrinkToFit () до черги, Hashtable, і класні рядки. Цей метод стискає об'єкт таким чином, що об'єм пам'яті, який він виділив всередині, відповідає розміру даних, який він фактично тримає.
    • Hashtable :: EnsureSize () і Queue :: EnsureSize () тепер беруть необов'язковий аргумент (allowShrink), який (якщо він встановлений як true) дозволяє внутрішньо розподіленому масиву об'єкта перерозподіляти менше, якщо воно перевищує необхідний.
    • Покращено поведінку буфера-розширення класу String, щоб бути трохи більш ефективною.
    • Додано охорону проти потенційної нескінченної рекурсії, яка може статися під час входу в систему & quot; OUT OF MEMORY & quot; помилка після помилки виділення пам'яті, якщо LogCallback спробував виділити пам'ять.

    Що нового у версії 6.01:

    • Додано метод класу String для PrependWord ().
    • Додано методам зручності WithReplacements () до класу String.
    • Додано метод SetExplicitDelayMicros () до класу DetectNetworkConfigChangesSession.
    • Додано метод IsCopperDetected () до класу NetworkInterfaceInfo, щоб код міг визначити, чи в розніму Ethernet є кабель, підключений до нього.
    • Додано & quot; сигнал & quot; аргумент на hexterm.
    • Віртуальний метод NetworkInterfacesChanged () у класі DetectNetworkConfigChangesSession був змінений, щоб прийняти аргумент, який викличе, які саме мережеві інтерфейси, зокрема, змінилися. Ця функціональність в даний час реалізується лише під Linux, MacOS / X та Windows. Для інших ОС аргумент завжди буде порожнім.
    • Виправлена ​​помилка при виконанні Linux DetectNetworkConfigChangesSession, яка може призвести до несправності сегментації, якщо recvmsg () повернув помилку (наприклад, через отримання сигналу).

    Що нового у версії 6.00:

    • Переписав клас SSLSocketDataIO, щоб краще працювати з неблокуючими введенням-виведенням (разом із новим класом SSLSocketAdapterGateway).
    • Додано реалізацію SSLSocketDataIO :: SetPrivateKey () та SSLSocketDataIO :: SetCertificate (), які використовують ByteBuffer як аргумент.
    • Додано клас SSLSocketAdapterGateway, який використовується для керування внутрішнім станом версії OpenSSL при використанні класу SSLSocketDataIO з вашим шлюзом.
    • Додано методів SetSSLPrivateKey () і GetSSLPrivateKey () до класу ReflectServer, для полегшення автентифікації SSL на всіх вхідних TCP-з'єднаннях. Ці методи доступні, якщо визначено MUSCLE_ENABLE_SSL.
    • Додано методів SetSSLPublicKeyCertificate () та GetSSLPublicKeyCertificate () до класу ReflectServer, для полегшення аутентифікації SSL на вихідних TCP-з'єднаннях. Ці методи доступні, якщо визначено MUSCLE_ENABLE_SSL.
    • Додано методів SetSSLPrivateKey () та SetSSLPublicKeyCertificate () до класу MessageTransceiverThread, для полегшення функціонування SSL при використанні різьбових входів / виходів.
    • Додана папка ssl_data із деякою інформацією про створення відкритих / приватних пари ключів OpenSSL та пари ключових прикладів для тестування OpenSSL.
    • Коли визначено MUSCLE_ENABLE_SSL, muscled тепер приймає необов'язковий аргумент "privatekey = filename". Коли буде зазначено, SSL-режим буде активовано, а мускулисті будуть приймати тільки вхідні TCP-з'єднання, які представляють відкриті ключі, які відповідають цьому приватному ключу / сертифікату.
    • Коли визначено MUSCLE_ENABLE_SSL, portablereflectclient та qt_example тепер приймуть необов'язковий аргумент 'publickey = filename'. Коли буде вказано, SSL-режим буде активовано, і ці клієнти підключаться до мускулатуру за допомогою OpenSSL і представляють цей файл у вигляді їх облікових даних.
    • Додано & quot; Анімація & quot; прапорець біля демонстрації qt_example. Перевіряючи це, вікно автоматично переміщує його індикатор. Це весело і корисно, якщо ви хочете перевірити сценарій, в якому кілька клієнтів одночасно генерують трафік.
    • Зробив демонстрацію qt_example гарнішою. ​​
    • Перейменовано макроси C ++ 11-helper у Hashtable.h та Queue.h, щоб менш імовірно зіткнутися з макросами інших пакунків. * Виправлено деякі незначні помилки в класі SSLSocketDataIO. o Перейменована SSLSocketDataIO :: SetKey () до SetPrivateKey (). o Перейменована SSLSocketDataIO :: SetCertificate () до SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () тепер є віртуальним методом.

    Що нового у версії 5.92:

    • Покращена підтримка семантики переміщення C ++ 11 в класах Queue і Hashtable (активована лише тоді, коли визначено -DMUSCLE_USE_CPLUSPLUS11)
    • Додано кілька інструментів до класу String, щоб я міг подивитися, скільки разів об'єкт String скопійовано, переміщено та ін. (включений лише тоді, коли визначено -DMUSCLE_COUNT_STRING_COPY_OPERATIONS)
    • Додано функцію PrintAndClearStringCopyCounts (), яка буде роздруковувати дані, отримані зі списку String.
    • Додана деяка магія SFINAE до muscleSwap (), щоб вона мінялася, викликаючи SwapContents (), коли можливо, замість копіювання до тимчасового об'єкта.
    • До складу класу Queue додано конструктор ініціалізатора списку та перевантаження AddTailMulti () (доступно лише, якщо звичайно визначено -DMUSCLE_USE_CPLUSPLUS11)
    • Перейменована черга та масивні перевантаження черги :: AddTail () до AddTailMulti (), щоб уникнути конфліктів з новою підтримкою синтаксичного аналізу C ++ 11.
    • Перейменував Queue і масивів перевантажень Queue :: AddHead () до AddHeadMulti (), щоб уникнути конфліктів з новою підтримкою синтаксичного аналізу C ++ 11.
    • Замінено макрос MCRASH_IMPL з викликом для підтвердження (false).
    • Ще більше налаштування сумісності Android.
    • Багато програм в папці тестів не складали під C ++ 11. Виправлено.
    • Виправлено декілька потенційних помилок, які були виявлені за допомогою інструмента статичного аналізу clang.

    Що нового у версії 5.91:

    • Додано метод EnsureCanPut () для класу Hashtable.
    • Додано метод EnsureCanAdd () для класу Queue.
    • Змінити функцію DoMutexAtomicIncrement () як внутрішню функцію, щоб зробити її більш ефективною.
    • Змінити QMessageTransceiverThread та QAcceptSocketsThread для виклику QCoreApplication :: postEvent (), а не QApplication :: postEvent (), щоб дозволити програму Qt не для GUI
    • Оновлено документ "Посібники для початківців", щоб відобразити удосконалену підтримку UDP через MUSCLE.
    • Злиті в деяких змінах сумісності з Android, надані Jean-FranAsois Mullet.
    • Використання прапорці компіляції MUSCLE_USE_MUEXES_FOR_ATOMIC_OPERATIONS призведе до аварійного завершення роботи MUSCLE під час запуску через виникнення послідовності операцій. Це було виправлено зараз.
    • Прапор компіляції MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS раніше використовувався лише тоді, коли жодна інша версія AtomicCounter не була доступною. Тепер прапор має вищий пріоритет, тому встановлення прапора означає, що Mutexes буде використовуватися, навіть якщо доступний інший (більш ефективний) механізм.

    Що нового у версії 5.90:

    • Додано метод класу DataIO до методу GetPacketMaximumSize (), щоб дозволити шлюзовому кодексу більш розумно обробляти пакетизоване спілкування в стилі UDP.
    • MessageIOGateway тепер працює корисно разом з UDPSocketDataIO.
    • Додані функції Template CreateObjectFromArchiveMessage () до Message.h, щоб служити як зворотний бік від GetArchiveMessageFromPool () та ін.
    • AtomicCounter :: AtomicIncrement () тепер повертає логічний (дійсний, якщо нове значення лічильника дорівнює одному).
    • Модифікував клас HashtableIterator таким чином, що ітерації Hashtable, які доступні лише для читання, тепер безпечні для потоку, навіть якщо прапорець HTIT_FLAG_NOREGISTER не вказано.
    • Додано клас muscle_thread_id до SetupSystem.h, щоб належним чином відображати ідентифікатор потоку нейтральним чином.
    • Додано & quot; тупик & quot; програма до папки тестів. Ця програма навмисно ризикує створити тупиковий стрибок, як спосіб здійснити / продемонструвати тест deadlockfinder.
    • Додано підтримку прапору командного рядка -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS для тих, хто хотів би уникнути накладних витрат на автоматичну безпеку потоків і обіцяє надавати HTIT_FLAG_NOREGISTER аргументи вручну за потреби.
    • Доповнив необов'язковий кеш-пам'ять LRU-пошуку до функції GetHostByName (), щоб він міг повертатися швидше, коли ці самі імена хоста знову і знову з'являються.
    • Додана функція SetHostNameCacheSettings (), яка дозволяє і регулює кеш lookup LRU у GetHostByName ().
    • Додана підтримка для & quot; dnscache & quot; і & quot; dnscachesize & quot; аргументи командного рядка в HandleStandardDaemonArgs (), щоб дозволити специфікацію командного рядка поведінки кешу пошуку LRU.
    • Модифікує клас Hashtable так, щоб значення _iterHead, _iterTail та _freeHead тепер містили uint32s, а не покажчики, щоб зменшити використання пам'яті.
    • Вилучив метод ThreadLocalStorage :: SetFreeHeldObjectsOnExit () і додав логічний аргумент його конструктору, оскільки pthread не дозволяє змінювати цей параметр після виклику pthread_key_create ().
    • Перемістив GetCurrentThreadID () у клас muscle_thread_id як статичну функцію члена, і змінив його, щоб повернути об'єкт muscle_thread_id, а не довго непідписаний.
    • Змінено ім'я хоста за умовчанням для сеансів без відомої IP-адреси з & quot; & quot; до "_unknown_", оскільки кутові дужки в колишньому рядку мають особливе значення, як з версії 5.84, і це може перешкоджати узгодженню уздовж шляху ненавмисно.
    • Методи CalculateChecksum () у Message.cpp були змінені, щоб бути більш надійними для виявлення відмінностей між перенесеннями даних.
    • Вилучено підтримку MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS від AtomicCounter.h, оскільки клас QAtomicInt класу Qt не підтримує функцію, необхідну для нового значення поверненого методу AtomicIncrement ().
    • Видалено MessageIOGateway :: FlattenMessage () і MessageIOGateway :: UnflattenMessage (). Додано на їх місце: MessageIOGateway :: FlattenHeaderAndMessage () і MessageIOGateway :: UnflattenHeaderAndMessage (). Ці нові методи стосуються як байтів заголовка, так і тіла повідомлень одночасно.
    • Додано файл udpproxy.vcproj в папку тестів, щоб допомогти скомпілювати udpproxy під Windows.
    • Повідомлення: Flatten () тепер повторюється над полями в повідомленні один раз, а не двічі.
    • GetCurrentThreadID () тепер є вбудованою функцією, оскільки тепер її можна зателефонувати часто HashtableIterator.
    • Модифікований код deadlockfinder для використання черг, а не Hashtables, оскільки muscle_thread_id більше не можна використовувати як тип ключа Hashtable.
    • Виправлено testudp.cpp, щоб належним чином використовувати MessageIOGateway для зв'язку UDP.
    • Полегшені налаштування файлів ifdefs у FilePathInfo.cpp дещо більше, так що при використанні пакунків MacOS / X, які не надають його, не буде доступний файл statInfo.st_birthtimespec.
    • MessageDataIOGateway більше не намагається відфільтрувати повідомлення з буфера з відхиленням zlib, що він не зміг знову роздути.
    • Виправлена ​​помилка в SendDataUDP (), яка може призвести до помилки SendDataUDP () при відправленні на адресу багатоадресного зв'язку за допомогою режиму без блокування, а вихідний буфер заповнено.

    Що нового в версії 5.85:

    • Виклики LogTime (MUSCLE_LOG_DEBUG) до всіх шляхів помилки в MessageIOGateway :: DoInputImplementation () та Message :: Unflatten (), щоб було легше визначити, коли з'єднання TCP припиняються через дані корупція.
    • Додана функція PreviousOperationHadTransientFailure (), яка повертає true iff errno - EINTR або ENOBUFS.
    • Задавання spamspersecond = -1 тепер призведе до того, що hexterm надсилатиме спам дані якомога швидше.
    • реалізація MUSCLE_USE_POLL SocketMultiplexer.h поставляла POLLERR до WSAPoll (), але WSAPoll () не підтримує POLLERR, тому WSAPoll () поверне помилку, коли це відбудеться. Вирішили проблему, відфільтруючи POLLERR при складанні під Windows.
    • Виправлена ​​помилка, в якій відправити () повернення ENOBUFS може призвести до припинення підключення сокету, навіть якщо ENOBUFS не є фатальним.
    • SocketMultiplexer.cpp не буде компілюватися, коли визначено MUSCLE_USE_POLL. Виправлено.
    • Метод ZLibCodec :: Deflate () не зможе зігнути всі дані у дуже великому буфері (наприклад, більше 42 Мб). Виправлено.

    Що нового у версії 5.84:

    • Синтаксис числового діапазону класу StringMatcher був розширений, щоб ви могли тепер вказати кілька діапазонів. Наприклад, & quot; & quot; буде відповідати рядкам "19", "20", "21", "25", "30", "31", [...] та "50".
    • Додані функції перетворення GetCurrentTime64ForRunTime64 () і GetRunTime64ForCurrenTime64 () до TimeUtilityFunctions.h.
    • Додано метод утиліти GetDescendant () до класу DataNode.
    • Додано C ++ 11 move-constructors та оператори move-assignment-operators для класів Hashtable, Queue, String, Message і ByteBuffer. Для зворотної сумісності зі старими компіляторами цей код буде скомпільовано, лише якщо в рядку компіляції вказано -DMUSCLE_USE_CPLUSPLUS11.
    • Клас SharedMemory тепер перетворює себе в клас з неповною пам'яттю, якщо вказано -DMUSCLE_FAKE_SHARED_MEMORY.
    • Додано тест testfilepathinfo на тестову папку.
    • Оновлено всі заголовки повідомлення про авторські права для читання 2000 - 2013 р. Мейер Зон.
    • Додано пробіли між точками макросів (наприклад, UINT32_FORMAT_SPEC) та рядковими константами (наприклад, & quot; Hello & quot;), щоб зробити компілятори C ++ 11 щасливими.
    • ByteBuffer.cpp мав синтаксичну помилку, що перешкоджало б його компілюванню на хостах big-endian. Виправлено.
    • Тільки MacOS / X: замінені застарілі виклики функцій вуглецю за допомогою еквівалентів "Маха", щоб уникнути попереджень про стягнення збитків у розмірі 10.8.x.

      • Додані зручні версії InflateByteBuffer () і DeflateByteBuffer (), які взяти ByteBufferRef як аргумент.
      • Вилучено деякі застарілі / невикористані методи (EnsureBufferSize () і FreeLargeBuffer ()) з класу AbstractMessageIOGateway.
      • Виправлено деякі помилки в коментарях у підтеці Delphi.
      • Клас Hashtable більше не генерує попередження при складанні під MSVC за допомогою визначення -DMUSCLE_AVOID_MINIMIZED_HASHTABLES.
      • Виправлена ​​помилка в IPAddressAndPort :: ToString (), яка спричиняє неоднозначне форматування адресних рядків IPv4, коли параметру preferredIPv4Style було встановлено значення false.

Схожі програми

Emdros
Emdros

11 May 15

ArangoDB
ArangoDB

17 Feb 15

MySQL Sandbox
MySQL Sandbox

20 Feb 15

SQLite
SQLite

22 Jun 18

Інші програми розробника Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

MUSCLE

Коментар не знайдено
додати коментар
Включіть картинки!
Пошук за категоріями