MUSCLE

Software captura de pantalla:
MUSCLE
Detalles de software:
Versión: 6.82 Actualizado
Fecha de carga: 22 Jun 18
Promotor: Jeremy Friesner
Licencia: Libre
Popularidad: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE significa Multi User Server Client Linkage Environment y es un sistema de mensajería de fuente abierta, gratuito, robusto, escalable y multiplataforma que consta de componentes de servidor y cliente. Te ayudará a escribir todo tipo de software distribuido, desde juegos para jugadores múltiples y clientes de chat IRC, hasta aplicaciones de cálculo SETI.


Características de un vistazo

Con MUSCLE, los usuarios podrán personalizar fácilmente el "servidor musculoso" incluido definiendo su propia lógica de sesión o protocolo de transmisión de mensajes. El software le ayuda a escribir su código de cliente en cualquiera de los lenguajes de programación C ++, C, C #, Java, Delphi o Python.

El programa usa texto similar a BMessage :: Mensajes, admite el envío de músculo aplanado :: Mensajes entre computadoras a través de transmisiones TCP (Transmission Control Protocol), despliega un servidor & ldquo; muscled & rdquo; en una máquina servidor, lo que le permite escribir programas cliente que se pueden usar para comunicarse con el servidor.

Además, incluye API de mensajería de subprocesos múltiples y múltiples que admiten todos los lenguajes de programación mencionados anteriormente. El & ldquo; servidor musculoso & rdquo; se puede personalizar fácilmente definiendo un protocolo de transmisión de mensajes o una lógica de sesión.

Comenzar a usar MUSCLE

Después de un inicio de sesión exitoso, los programas cliente pueden determinar quién más está conectado al servidor central, así como almacenar los :: Mensajes musculares en la RAM (memoria del sistema) y enviar mensajes muscle :: a otros clientes que están conectados al servidor. Tenga en cuenta que los programas cliente pueden suscribirse a datos específicos en el servidor y obtener notificaciones instantáneas cuando los datos cambian.


Admite una amplia gama de enrutamientos de mensajes

El software ha sido diseñado para admitir una amplia gama de enrutamientos de mensajes, incluidos los de estilo de unidifusión, estilo de difusión y estilo de multidifusión a través de un mecanismo de enrutamiento de coincidencia de patrones jerárquico e inteligente.


Sistemas operativos admitidos y disponibilidad

MUSCLE se ejecuta en cualquier sistema operativo compatible con POSIX. Se distribuye como un único archivo de fuentes universales que permite a los usuarios optimizar la aplicación para su sistema GNU / Linux. Ambas plataformas de hardware de 32 bits y 64 bits son compatibles en este momento.

Qué hay de nuevo en esta versión:

  • pruebas / Makefile-mt ya no intenta compilar testreflectsession excepto cuando se ejecuta en un SO soportado por testreflectsession.
  • Realizó algunas modificaciones menores y reorganizaciones del & quot; MUSCLE por ejemplo & quot; páginas.
  • Reemplazó una cantidad de `etiquetas` en los MkDocs con [URLs] (...)
  • Se eliminó la herencia privada de CountedObject de todas las clases que la tenían; ahora, en su lugar, incluye una variable de miembro privada CountedObject. Esto se hizo solo porque toda esa herencia privada estaba abarrotando los gráficos de herencia de DOxygen.
  • Agregó una macro DECLARE_COUNTED_OBJECT a CountedObject.h para que cualquier posible sobrecarga de memoria de CountedObjects pueda eliminarse en casos en que no se desee contar objetos.
  • Se eliminó el soporte para -DMUSCLE_AVOID_OBJECT_COUNTING y se agregó una macro -DMUSCLE_ENABLE_OBJECT_COUNTING en su lugar. (Es decir, la clase CountedObject ahora está deshabilitada de manera predeterminada y debe estar habilitada explícitamente para usarla)
  • Agregó & quot; MÚSCULO por ejemplo & quot; documentación para MiscUtilityFunctions. {cpp, h}
  • Se modificaron varias 'etiquetas' en la fuente MUSCLE-por-ejemplo de MkDocs en [urls] para que los métodos que mencionan puedan revisarse rápidamente.
  • server / Makefile ahora especifica libmuscle.a después del archivo principal () .o.
  • Se corrigieron algunas advertencias de gcc en la carpeta de pruebas (según las sugerencias de Mika)
  • UnparseFile () no estaba citando correctamente las palabras clave con espacios. Solucionado.
  • Se corrigieron las dependencias en el & quot; MÚSCULO por ejemplo & quot; ejemplos 'Makefiles.

Qué hay de nuevo en la versión:

  • Se agregó un método de conveniencia ShrinkToFit () a la cola, tabla Hashtable y clases de cadenas. Este método reduce el tamaño del objeto, por lo que la cantidad de memoria que ha asignado internamente coincide con el tamaño de los datos que realmente contiene.
  • Hashtable :: EnsureSize () y Queue :: EnsureSize () ahora toman un argumento opcional (allowShrink), que (si se establece en verdadero) permite que la matriz asignada internamente del objeto se reasigne más pequeña si es mayor de lo necesario.
  • Pellizcó el comportamiento de expansión de búfer de la clase String para ser un poco más eficiente.
  • Agregó un guardia contra una posible recursión infinita que podría ocurrir al iniciar sesión & quot; FUERA DE LA MEMORIA & quot; error después de una falla de asignación de memoria, si un LogCallback intentó asignar memoria.

Qué hay de nuevo en la versión 6.01:

  • Agregó un método de conveniencia PrependWord () a la clase String.
  • Se agregaron los métodos de conveniencia a la clase String.
  • Agregó un método SetExplicitDelayMicros () a la clase DetectNetworkConfigChangesSession.
  • Agregó un método IsCopperDetected () a la clase NetworkInterfaceInfo, de modo que el código puede indicar si un conector Ethernet tiene un cable conectado o no.
  • Agregó un & quot; quietsend & quot; argumento a hexterm.
  • El método virtual NetworkInterfacesChanged () en la clase DetectNetworkConfigChangesSession se ha cambiado para tomar un argumento que indica qué interfaces de red, en particular, han cambiado. Esta funcionalidad actualmente solo está implementada en Linux, MacOS / X y Windows. Para otros sistemas operativos, el argumento siempre será una lista vacía.
  • Se corrigió un error en la implementación de Linux de DetectNetworkConfigChangesSession que podía causar un error de segmentación si recvmsg () devolvía un error (por ejemplo, debido a que se recibía una señal).

Qué hay de nuevo en la versión 6.00:

  • Reescribió la clase SSLSocketDataIO para que funcione mejor con E / S sin bloqueo (junto con la nueva clase SSLSocketAdapterGateway).
  • Se agregaron implementaciones de SSLSocketDataIO :: SetPrivateKey () y SSLSocketDataIO :: SetCertificate () que toman un ByteBuffer como argumento.
  • Agregó una clase SSLSocketAdapterGateway que se usa para administrar la máquina de estado interna de OpenSSL cuando usa una clase SSLSocketDataIO con su puerta de enlace.
  • Agregó los métodos SetSSLPrivateKey () y GetSSLPrivateKey () a la clase ReflectServer, para facilitar la autenticación SSL en todas las conexiones TCP entrantes. Estos métodos están disponibles si se define MUSCLE_ENABLE_SSL.
  • Agregó los métodos SetSSLPublicKeyCertificate () y GetSSLPublicKeyCertificate () a la clase ReflectServer, para facilitar la autenticación SSL en conexiones TCP salientes. Estos métodos están disponibles si se define MUSCLE_ENABLE_SSL.
  • Agregó los métodos SetSSLPrivateKey () y SetSSLPublicKeyCertificate () a la clase MessageTransceiverThread, para facilitar la activación de la funcionalidad SSL al usar E / S con subprocesos.
  • Se agregó una carpeta ssl_data con información sobre la generación de pares de claves públicas / privadas de OpenSSL y un par de llaves de ejemplo para probar OpenSSL.
  • Cuando se define MUSCLE_ENABLE_SSL, muscled ahora acepta un argumento opcional 'privatekey = filename'. Cuando se especifique, el modo SSL estará habilitado y muscled solo aceptará conexiones TCP entrantes que presenten claves públicas que coincidan con esta clave / certificado privado.
  • Cuando se define MUSCLE_ENABLE_SSL, portablereflectclient y qt_example ahora aceptarán un argumento opcional de 'publickey = filename'. Cuando se especifique, el modo SSL se habilitará y estos clientes se conectarán a musculos usando OpenSSL y presentarán este archivo como sus credenciales.
  • Se agregó un & quot; Animación & quot; casilla de verificación para la demostración de qt_example. Al comprobarlo, la ventana mueve su indicador automáticamente. Esto es divertido y también útil si desea probar un escenario donde varios clientes generan tráfico simultáneamente.
  • Hizo que la demostración de qt_example fuera más bonita.
  • Cambió el nombre de las macros de C ++ 11-helper en Hashtable.hy Queue.h para hacerlas menos propensas a colisionar con las macros de otros paquetes. * Se corrigieron algunos errores menores en la clase SSLSocketDataIO. o Renombrado SSLSocketDataIO :: SetKey () a SetPrivateKey (). o Renombrado SSLSocketDataIO :: SetCertificate () a SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () ahora es un método virtual.

Qué hay de nuevo en la versión 5.92:

  • Compatibilidad mejorada para la semántica de movimiento de C ++ 11 en las clases Queue y Hashtable (habilitada solo cuando se define -DMUSCLE_USE_CPLUSPLUS11)
  • Agregué algunos instrumentos a la clase String para poder ver cuántas veces se copia, mueve, etc. un objeto String (habilitado solo cuando se define -DMUSCLE_COUNT_STRING_COPY_OPERATIONS)
  • Se agregó una función PrintAndClearStringCopyCounts () que imprimirá los datos de operación de cadena recopilados anteriormente.
  • Agregó un poco de magia SFINAE a muscleSwap () para que se intercambie llamando a SwapContents () cuando sea posible, en lugar de copiarlo en un objeto temporal.
  • Se agregó un constructor de listas de inicialización y una sobrecarga de AddTailMulti () a la clase Queue (disponible solo cuando -DMUSCLE_USE_CPLUSPLUS11 está definido, por supuesto)
  • Cambió el nombre de la cola y las sobrecargas de matriz de Queue :: AddTail () a AddTailMulti (), para evitar conflictos con el nuevo soporte de análisis de plantillas de C ++ 11.
  • Cambió el nombre de la cola y las sobrecargas de matriz de Queue :: AddHead () a AddHeadMulti (), para evitar conflictos con el nuevo soporte de análisis de plantillas de C ++ 11.
  • Se reemplazó la macro MCRASH_IMPL con una llamada para afirmar (falso).
  • Un poco más de compatibilidad con Android.
  • Muchos de los programas en la carpeta de pruebas no se estaban compilando en C ++ 11. Solucionado.
  • Se corrigieron varios errores potenciales detectados por la herramienta de análisis estático de clang.

Qué hay de nuevo en la versión 5.91:

  • Se agregó el método de conveniencia EnsureCanPut () a la clase Hashtable.
  • Se agregó el método de conveniencia EnsureCanAdd () a la clase Queue.
  • Cambió DoMutexAtomicIncrement () para que sea una función en línea para hacer que llamar sea más eficiente.
  • Cambió QMessageTransceiverThread y QAcceptSocketsThread para llamar a QCoreApplication :: postEvent () en lugar de QApplication :: postEvent (), para permitir aplicaciones de Qt que no sean de GUI.
  • Se actualizó el documento de la Guía para principiantes para reflejar el soporte UDP mejorado de MUSCLE.
  • Se fusionó en algunos cambios de compatibilidad de Android provistos por Jean-FranA§ois Mullet.
  • El uso del indicador de compilación MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS provocaría que MUSCLE se bloquee al iniciarse debido a un problema de orden de operaciones. Esto se ha solucionado ahora.
  • El indicador de compilación MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS solo se usaba anteriormente si no estaba disponible ninguna otra implementación de AtomicCounter. Ahora la bandera tiene mayor prioridad, por lo que establecer la bandera significa que se usarán Mutexes, incluso si otro mecanismo (más eficiente) está disponible.

Qué hay de nuevo en la versión 5.90:

  • Agregó un método GetPacketMaximumSize () a la clase DataIO para permitir que el código de la puerta de enlace maneje de forma más inteligente la comunicación paquetizada estilo UDP.
  • MessageIOGateway ahora funciona de manera útil junto con UDPSocketDataIO.
  • Se agregaron las funciones de plantilla CreateObjectFromArchiveMessage () a Message.h, para que sirvan como una contraparte de restauración de GetArchiveMessageFromPool (), etc.
  • AtomicCounter :: AtomicIncrement () ahora devuelve un booleano (true iff el nuevo valor del contador es igual a uno).
  • Modificó la clase HashtableIterator para que las iteraciones Hashtable de solo lectura ahora sean seguras para subprocesos incluso si no se especifica el indicador HTIT_FLAG_NOREGISTER.
  • Agregó una clase muscle_thread_id a SetupSystem.h, para representar correctamente una ID de subproceso de forma neutral para la implementación.
  • Agregó un & quot; punto muerto & quot; programa a la carpeta de pruebas. Este programa arriesga deliberadamente la creación de un punto muerto, como una forma de ejercitar / demostrar la prueba del bloqueo de bloqueo.
  • Se agregó soporte para un indicador de línea de comando -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS, para aquellos que prefieren evitar la sobrecarga de seguridad automática de subprocesos y prometen suministrar argumentos HTIT_FLAG_NOREGISTER a mano donde sea necesario.
  • Agregó un caché de búsqueda LRU opcional a la función GetHostByName (), para que pueda regresar más rápidamente cuando los mismos nombres de host se resuelven una y otra vez.
  • Agregó una función SetHostNameCacheSettings () que habilita y ajusta el caché de búsqueda de LRU en GetHostByName ().
  • Se agregó soporte para & quot; dnscache & quot; y & quot; dnscachesize & quot; argumentos de línea de comando en HandleStandardDaemonArgs (), para permitir la especificación de línea de comandos del comportamiento del caché de búsqueda LRU.
  • Modificó la clase Hashtable para que los valores de miembro _iterHead, _iterTail y _freeHead ahora sean uint32s en lugar de punteros, para reducir el uso de memoria.
  • Eliminó el método ThreadLocalStorage :: SetFreeHeldObjectsOnExit () y agregó un argumento booleano a su constructor, ya que pthreads no le permiten cambiar esa configuración después de que pthread_key_create () ha sido llamado.
  • Movió GetCurrentThreadID () en la clase muscle_thread_id como una función miembro estática, y lo cambió para devolver un objeto muscle_thread_id en lugar de unsigned long.
  • Cambió el nombre de host predeterminado para las sesiones sin una dirección IP conocida de & quot; & quot; to & quot; _unknown_ & quot ;, ya que los corchetes angulares de la cadena anterior tienen un significado especial a partir de la versión 5.84, y eso podría interferir con la coincidencia de la ruta de nodos de forma involuntaria.
  • Los métodos CalculateChecksum () en Message.cpp se han modificado para que sean más sólidos al detectar diferencias en la transposición de datos.
  • Se eliminó el soporte MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS de AtomicCounter.h, ya que la clase QAtomicInt de Qt no admite la funcionalidad que requiere el nuevo valor de retorno del método AtomicIncrement ().
  • Eliminado MessageIOGateway :: FlattenMessage () y MessageIOGateway :: UnflattenMessage (). Agregado en su lugar: MessageIOGateway :: FlattenHeaderAndMessage () y MessageIOGateway :: UnflattenHeaderAndMessage (). Estos nuevos métodos tratan tanto con los bytes del encabezado como con el cuerpo del mensaje al mismo tiempo.
  • Agregó un archivo udpproxy.vcproj a la carpeta de pruebas para ayudar a compilar udpproxy en Windows.
  • Mensaje: Flatten () ahora itera sobre los campos en el mensaje una vez, en lugar de dos veces.
  • GetCurrentThreadID () ahora es una función en línea, ya que ahora puede ser llamado frecuentemente por HashtableIterator.
  • Modificó el código de bloqueo de punto muerto para utilizar Colas en lugar de Hashtables, ya que muscle_thread_id ya no se puede usar como clave de tipo Hashtable.
  • Se corrigió testudp.cpp para usar correctamente un MessageIOGateway para su comunicación UDP.
  • Pellizcó un poco más el ifdefs en FilePathInfo.cpp para que no se acceda a statInfo.st_birthtimespec cuando se usan los SDK de MacOS / X que no lo proporcionan.
  • MessageDataIOGateway ya no intenta desvincular un mensaje de un búfer de datos desinflado zlib que no pudo volver a inflarse.
  • Se corrigió un error en SendDataUDP () que podía provocar que SendDataUDP () devolviera incorrectamente un error al enviar a una dirección de multidifusión usando el modo sin bloqueo, y el búfer de salida estaba lleno.

Qué hay de nuevo en la versión 5.85:

  • Agregó las llamadas de LogTime (MUSCLE_LOG_DEBUG) a todas las rutas de error en MessageIOGateway :: DoInputImplementation () y Message :: Unflatten (), por lo que es más fácil determinar cuándo se cancelan las conexiones TCP debido a los datos corrupción.
  • Se agregó una función PreviousOperationHadTransientFailure (), que devuelve verdadero iff errno es EINTR o ENOBUFS.
  • Especificar spamspersecond = -1 ahora hará que hexterm envíe datos de spam lo más rápido posible.
  • La implementación MUSCLE_USE_POLL de SocketMultiplexer.h estaba suministrando POLLERR a WSAPoll (), pero WSAPoll () no es compatible con POLLERR, por lo que WSAPoll () devolverá un error cuando esto ocurra. Se solucionó el problema filtrando POLLERR al compilar en Windows.
  • Se corrigió un error por el cual send () devolver ENOBUFS podía provocar la terminación de la conexión de socket, incluso aunque ENOBUFS no sea una condición fatal.
  • SocketMultiplexer.cpp no ​​compilaría cuando se definió MUSCLE_USE_POLL. Solucionado.
  • El método ZLibCodec :: Deflate () no podría comprimir todos los datos en un búfer muy grande (por ejemplo, más de 42 MB). Solucionado.

Qué hay de nuevo en la versión 5.84:

  • La sintaxis del rango numérico de la clase StringMatcher se ha ampliado para que pueda especificar varios rangos. Por ejemplo, & quot; & quot; coincidiría con las cadenas "19", "20", "21", "25", "30", "31", "50" y "."
  • Se agregaron las funciones de conversión GetCurrentTime64ForRunTime64 () y GetRunTime64ForCurrenTime64 () a TimeUtilityFunctions.h.
  • Se agregó un método de utilidad GetDescendant () a la clase DataNode.
  • Se agregaron C ++ 11 move-constructors y move-assignment-operators a las clases Hashtable, Queue, String, Message y ByteBuffer. Para compatibilidad con versiones anteriores de compiladores anteriores, este código solo se compilará si se especifica -DMUSCLE_USE_CPLUSPLUS11 en la línea de compilación.
  • La clase SharedMemory ahora se modificará en una clase de memoria no compartida si se especifica -DMUSCLE_FAKE_SHARED_MEMORY.
  • Agregó una prueba testfilepathinfo a la carpeta de pruebas.
  • Se actualizaron todos los encabezados de avisos de derechos de autor para leer 2000-2013 Meyer Sound.
  • Se agregaron espacios entre tokens de macros (por ejemplo, UINT32_FORMAT_SPEC) y constantes de cadena (por ejemplo, & quot; Hola & quot;) para hacer felices a los compiladores de C ++.
  • ByteBuffer.cpp tenía un error de sintaxis que le impediría compilar en hosts big-endian. Solucionado.
  • Solo MacOS / X: reemplazó las llamadas a función de carbono en desuso por equivalentes de Mach, para evitar advertencias de obsolescencia según 10.8.x.

Qué hay de nuevo en la versión 5.83:

  • Se agregaron versiones convenientes de InflateByteBuffer () y DeflateByteBuffer () que tomar un ByteBufferRef como argumento.
  • Eliminó algunos métodos obsoletos / no utilizados (EnsureBufferSize () y FreeLargeBuffer ()) de la clase AbstractMessageIOGateway.
  • Se corrigieron algunos errores tipográficos en los comentarios en la subcarpeta delphi.
  • La clase Hashtable ya no genera advertencias cuando se compila bajo MSVC con -DMUSCLE_AVOID_MINIMIZED_HASHTABLES definido.
  • Se corrigió un error en IPAddressAndPort :: ToString () que causaba que las cadenas de direcciones IPv4 se formatearan ambiguamente cuando (preferIPv4Style) se configuraba como falso.

Programas parecidos

H2 Database Engine
H2 Database Engine

17 Feb 15

ArangoDB
ArangoDB

17 Feb 15

Percona Server
Percona Server

20 Jan 18

Otro software de desarrollador Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Comentarios a la MUSCLE

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!