MUSCLE

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

Rating: 5.0/5 (Total Votes: 1)

MUSCLE означает среду взаимодействия с клиентом Multi User Server, а также открытую, бесплатную, надежную, масштабируемую и кросс-платформенную систему обмена сообщениями, состоящую из серверных и клиентских компонентов. Это поможет вам написать все виды распределенного программного обеспечения, из многопользовательских игр и клиентов чата IRC, в приложения для расчета SETI.


Особенности с первого взгляда

С помощью MUSCLE пользователи смогут легко настроить включенный «мускулистый сервер», определив свою собственную логику сеанса или протокол потоковой передачи сообщений. Программное обеспечение поможет вам написать код клиента на любом языке программирования C ++, C, C #, Java, Delphi или Python.

Программа использует BMessage-like muscle :: Messages, поддерживает отправку сплющенной мышцы :: Сообщения между компьютерами через потоки TCP (Transmission Control Protocol), развертывает & ldquo; muscled server & rdquo; на сервере, позволяя вам писать клиентские программы, которые могут использоваться для связи с сервером.

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

Начало работы с MUSCLE

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


Поддерживает широкий спектр маршрутов сообщений

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


Поддерживаемые ОС и доступность

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

Что нового в этой версии:

  • tests / Makefile-mt больше не пытается скомпилировать testreflectsession, за исключением случаев, когда выполняется на ОС, поддерживаемой testreflectsession.
  • Было ли небольшое редактирование и переустановка «MUSCLE by Example», страницы.
  • Заменено количество «тегов» в MkDocs с помощью [URLs] (...)
  • Убрано private-inheritance CountedObject из всех классов, у которого было это - теперь вместо этого они включают переменную частного члена CountedObject. Это было сделано только потому, что все это частное наследование загромождало графики наследования DOxygen.
  • Добавлен макрос DECLARE_COUNTED_OBJECT в CountedObject.h, так что любые потенциальные издержки памяти для CountedObjects могут быть устранены в случаях, когда подсчет объектов нежелателен.
  • Удалена поддержка -DMUSCLE_AVOID_OBJECT_COUNTING и добавлен макрос -DMUSCLE_ENABLE_OBJECT_COUNTING. (То есть класс CountedObject теперь отключен по умолчанию и должен быть явно включен для его использования).
  • Добавлено "MUSCLE по примеру" документация для MiscUtilityFunctions. {cpp, h}
  • Изменено количество «тегов» в источнике MUSCLE-by-Example MkDocs в [urls], чтобы методы, о которых они упоминают, можно быстро просмотреть.
  • server / Makefile теперь указывает libmuscle.a после файла main () .o.
  • Исправлены некоторые предупреждения gcc в папке тестов (по предложениям Мики)
  • UnparseFile () не правильно цитировал ключевые слова с пробелами. Фиксированный.
  • Исправлены зависимости в «MUSCLE по примеру». примеры «Make-файлы».

Что нового в версии:

  • Добавлен удобный метод ShrinkToFit () для очереди, Hashtable, и String. Этот метод сжимает объект так, чтобы объем памяти, который он выделил, внутренне соответствовал размеру данных, которые он фактически удерживает.
  • Hashtable :: EnsureSize () и Queue :: EnsureSize () теперь берут необязательный аргумент (allowShrink), который (если установлен в true) позволяет перенастроить внутренне выделенный массив объекта, если он больше, чем необходимо.
  • Улучшено поведение расширения буфера класса String.
  • Добавлена ​​защита от потенциальной бесконечной рекурсии, которая может возникнуть при регистрации «OUT OF MEMORY». после сбоя распределения памяти, если LogCallback попытался выделить память.

Что нового в версии 6.01:

  • Добавлен метод PrependWord () для класса String.
  • Добавлены методы удобства WithReplacements () к классу String.
  • Добавлен метод SetExplicitDelayMicros () в класс DetectNetworkConfigChangesSession.
  • Добавлен метод IsCopperDetected () в класс NetworkInterfaceInfo, поэтому код может определить, подключен ли к нему разъем Ethernet, подключенный к нему кабель.
  • Добавлен "quietsend" аргумент 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 и представлять этот файл в качестве своих учетных данных.
  • Добавлен "Анимать" установите флажок 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 (), которая выведет данные строковой операции, собранные выше.
  • Добавлена ​​какая-то маска SFINAE для mouseSwap (), чтобы она могла поменяться, вызывая SwapContents (), когда это возможно, а не путем копирования на временный объект.
  • Добавлен конструктор списка инициализаторов и перегрузка AddTailMulti () в класс Queue (доступен только тогда, когда определен -DMUSCLE_USE_CPLUSPLUS11)
  • Переименовали перегрузку очереди и массивов Queue :: AddTail () в AddTailMulti (), чтобы избежать конфликтов с новой поддержкой синтаксического анализа C ++ 11.
  • Переименовал Queue и перегрузку массивов Queue :: AddHead () в AddHeadMulti (), чтобы избежать конфликтов с новой поддержкой синтаксического анализа C ++ 11.
  • Заменил макрос MCRASH_IMPL вызовом assert (false).
  • Немного больше настроек для совместимости с Android.
  • Многие из программ в папке с тестами не компилировались в C ++ 11. Фиксированный.
  • Исправлено несколько потенциальных ошибок, которые были обнаружены инструментом статического анализа клана.

Что нового в версии 5.91:

  • Добавлен метод удобства EncureCanPut () для класса Hashtable.
  • Добавлен метод удобства EncureCanAdd () для класса Queue.
  • Изменена функция DoMutexAtomicIncrement () как встроенная функция, чтобы сделать ее более эффективной.
  • Изменен QMessageTransceiverThread и QAcceptSocketsThread, чтобы вызывать QCoreApplication :: postEvent (), а не QApplication :: postEvent (), чтобы разрешать приложения без QI Qt.
  • Обновлен документ руководства для начинающих, чтобы отразить улучшенную поддержку UDP от MUSCLE.
  • Слияние с некоторыми изменениями совместимости с Android, предоставленными Жан-Франсуасом Мауле.
  • Использование флага компиляции MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS может привести к сбою MUSCLE при запуске из-за проблемы с порядком операций. Теперь это исправлено.
  • Флаг компиляции MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS ранее использовался, только если не было реализовано никакой другой реализации AtomicCounter. Теперь флаг имеет более высокий приоритет, поэтому установка флага означает, что будут использоваться мьютексы, даже если доступен другой (более эффективный) механизм.

Что нового в версии 5.90:

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

Что нового в версии 5.85:

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

Что нового в версии 5.84:

  • Синтаксис численного диапазона класса StringMatcher расширен, поэтому теперь вы можете указать несколько диапазонов. Например, "& quot; будут соответствовать строки 19, 20, 21, 25, 30, 31, 50,
  • Добавлены функции преобразования GetCurrentTime64ForRunTime64 () и GetRunTime64ForCurrenTime64 () в TimeUtilityFunctions.h.
  • Добавлен метод утилиты GetDescendant () в класс DataNode.
  • Добавлены конструкторы перемещения C ++ 11 и move-assign-operator в классы Hashtable, Queue, String, Message и ByteBuffer. Для обратной совместимости со старыми компиляторами этот код будет только компилироваться, если в линии компиляции указан -DMUSCLE_USE_CPLUSPLUS11.
  • Класс SharedMemory теперь будет привязан к классу non-shared-memory, если указан параметр -DMUSCLE_FAKE_SHARED_MEMORY.
  • В тестовую папку добавлен тест testfilepathinfo.
  • Обновлены все заголовки уведомлений об авторских правах, чтобы читать 2000-е годы Meyer Sound.
  • Добавлены пробелы между токенами макроса (например, UINT32_FORMAT_SPEC) и строковыми константами (например, «Привет»), чтобы сделать компиляторы C ++ 11 счастливыми.
  • ByteBuffer.cpp имел синтаксическую ошибку, которая помешала бы компиляции на больших компьютерах. Фиксированный.
  • Только для MacOS / X: заменены устаревшие вызовы функций Carbon с эквивалентами Mach, чтобы избежать предупреждений об отказе от 10.8.x.

Что нового в версии 5.83:

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

Похожие программы

SQLite
SQLite

22 Jun 18

Drizzle
Drizzle

20 Feb 15

groonga
groonga

17 Feb 15

Jaxer
Jaxer

3 Jun 15

Другие программы разработчика Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Комментарии к MUSCLE

Комментарии не найдены
добавить комментарий
Включите картинки!