MUSCLE

Tela Software:
MUSCLE
Detalhes de Software:
Versão: 6.82 Atualizado
Data de upload: 22 Jun 18
Revelador: Jeremy Friesner
Licença: Livre
Popularidade: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE significa Multi User Server Client Linkage Environment e é um sistema de mensagens open source, gratuito, robusto, escalável e de plataforma cruzada que compreende componentes de servidor e cliente. Ele ajudará você a escrever todos os tipos de software distribuído, desde jogos multiplayer e clientes de bate-papo IRC, até aplicativos de cálculo SETI.


Recursos em resumo

Com o MUSCLE, os usuários poderão personalizar facilmente o "servidor musculoso" incluído, definindo sua própria lógica de sessão ou protocolo de transmissão de mensagens. O software ajuda você a escrever seu código de cliente em qualquer uma das linguagens de programação C ++, C, C #, Java, Delphi ou Python.

O programa usa o músculo parecido com o BMessage :: Mensagens, suporta o envio de músculos achatados :: Mensagens entre computadores via fluxos TCP (Transmission Control Protocol), implementa um & ldquo; muscled server & rdquo; em uma máquina servidora, permitindo que você escreva programas clientes que podem ser usados ​​para se comunicar com o servidor.

Além disso, inclui APIs de mensagens simples e múltiplas que suportam todas as linguagens de programação mencionadas anteriormente. O & ldquo; muscled server & rdquo; pode ser facilmente personalizado definindo um protocolo de transmissão de mensagens ou uma lógica de sessão.

Começando com MUSCLE

Após um login bem-sucedido, os programas clientes podem determinar quem mais está logado no servidor central, bem como armazenar músculo: Mensagens na RAM (memória do sistema) e enviar musculos :: Mensagens para outros clientes que estão conectados para o servidor. Observe que os programas clientes podem se inscrever em dados específicos no servidor e receber notificações instantâneas quando os dados são alterados.


Suporta uma ampla gama de roteamentos de mensagens

O software foi projetado para oferecer suporte a uma ampla gama de roteamentos de mensagens, incluindo estilo estilo unicast, estilo broadcast e estilo multicast, por meio de um mecanismo de roteamento inteligente e hierárquico de correspondência de padrões.


Sistemas Operacionais Suportados e Disponibilidade

O MUSCLE é executado em qualquer sistema operacional compatível com POSIX. Ele é distribuído como um arquivo de fontes único e universal que permite aos usuários otimizar o aplicativo para seu sistema GNU / Linux. Ambas as plataformas de hardware de 32 e 64 bits são suportadas no momento.

O que há de novo nesta versão:

  • testes / Makefile-mt não tenta mais compilar testreflectsession, exceto ao executar em um SO que o testreflectsession suporta.
  • Fiz algumas pequenas edições e re-arranjos do "MUSCLE por exemplo" páginas.
  • Substitui um número de `tags` nos MkDocs por [URLs] (...)
  • Removida a herança particular de CountedObject de todas as classes que a tinham - agora elas incluem uma variável de membro particular CountedObject. Isso foi feito apenas porque toda essa herança privada estava atravancando os gráficos de herança do DOxygen.
  • Adicionada uma macro DECLARE_COUNTED_OBJECT a CountedObject.h para que qualquer possível sobrecarga de memória de CountedObjects possa ser eliminada nos casos em que a contagem de objetos não seja desejada.
  • Removido o suporte para o -DMUSCLE_AVOID_OBJECT_COUNTING e adicionada uma macro -DMUSCLE_ENABLE_OBJECT_COUNTING em seu lugar. (Ou seja, a classe CountedObject agora está desativada por padrão e deve ser ativada explicitamente para usá-la)
  • Adicionado "MUSCLE por exemplo" documentação para MiscUtilityFunctions. {cpp, h}
  • Foi alterado um número de `tags` na fonte MkDocs MUSCLE-by-Example para [urls], de modo que os métodos mencionados por eles possam ser rapidamente revisados.
  • server / Makefile agora especifica libmuscle.a após o arquivo main () .o.
  • Corrigidos alguns avisos do gcc na pasta de testes (de acordo com as sugestões do Mika)
  • UnparseFile () não estava citando palavras-chave com espaços corretamente. Corrigido.
  • Corrigidas as dependências no & quot; MUSCLE por exemplo & quot; exemplos 'Makefiles.

O que há de novo na versão:

  • Adicionou um método de conveniência ShrinkToFit () à Queue, Hashtable, e classes String. Esse método reduz o objeto para que a quantidade de memória alocada internamente corresponda ao tamanho dos dados que está sendo retido.
  • Hashtable :: EnsureSize () e Queue :: EnsureSize () agora aceitam um argumento opcional (allowShrink), que (se definido como true) permite que a matriz alocada internamente do objeto seja realocada se for maior que o necessário.
  • Ajustou o comportamento de expansão do buffer da classe String para ser um pouco mais eficiente.
  • Adicionada uma proteção contra uma possível recursão infinita que pode ocorrer durante o registro de um "OUT OF MEMORY" erro após uma falha de alocação de memória, se um LogCallback tentou alocar memória.

O que há de novo na versão 6.01:

  • Adicionou um método de conveniência PrependWord () à classe String.
  • Adicionamos métodos convenientes WithReplacements () à classe String.
  • Adicionado um método SetExplicitDelayMicros () à classe DetectNetworkConfigChangesSession.
  • Adicionado um método IsCopperDetected () à classe NetworkInterfaceInfo, para que o código possa dizer se um conector Ethernet está ou não conectado a ele.
  • Adicionou um & quot; quietsend & quot; argumento para hextermo.
  • O método virtual NetworkInterfacesChanged () na classe DetectNetworkConfigChangesSession foi alterado para aceitar um argumento que indique quais interfaces de rede foram alteradas. Esta funcionalidade está atualmente implementada apenas no Linux, MacOS / X e Windows. Para outros sistemas operacionais, o argumento sempre será uma lista vazia.
  • Corrigido um erro na implementação Linux de DetectNetworkConfigChangesSession que poderia causar uma falha de segmentação se recvmsg () retornasse um erro (por exemplo, devido a um sinal recebido).

O que há de novo na versão 6.00:

  • Reescreveu a classe SSLSocketDataIO para funcionar melhor com E / S sem bloqueio (em conjunto com a nova classe SSLSocketAdapterGateway).
  • Adicionadas implementações de SSLSocketDataIO :: SetPrivateKey () e SSLSocketDataIO :: SetCertificate () que usam um ByteBuffer como argumento.
  • Adicionada uma classe SSLSocketAdapterGateway que é usada para gerenciar a máquina de estado interna do OpenSSL ao usar uma classe SSLSocketDataIO com seu gateway.
  • Adicionados os métodos SetSSLPrivateKey () e GetSSLPrivateKey () à classe ReflectServer, para facilitar a ativação da autenticação SSL em todas as conexões TCP recebidas. Estes métodos estão disponíveis se o MUSCLE_ENABLE_SSL estiver definido.
  • Adicionados os métodos SetSSLPublicKeyCertificate () e GetSSLPublicKeyCertificate () à classe ReflectServer, para facilitar a ativação da autenticação SSL nas conexões TCP de saída. Estes métodos estão disponíveis se o MUSCLE_ENABLE_SSL estiver definido.
  • Adicionados os métodos SetSSLPrivateKey () e SetSSLPublicKeyCertificate () à classe MessageTransceiverThread, para facilitar a ativação da funcionalidade SSL ao usar E / S com threads.
  • Adicionada uma pasta ssl_data com algumas informações sobre como gerar pares de chaves públicas / privadas do OpenSSL e um exemplo de par de chaves para uso no teste do OpenSSL.
  • Quando MUSCLE_ENABLE_SSL é definido, muscled agora aceita um argumento opcional 'privatekey = filename'. Quando especificado, o modo SSL será ativado e musculado aceitará apenas conexões TCP de entrada que apresentem chaves públicas que correspondam a essa chave / certificado particular.
  • Quando MUSCLE_ENABLE_SSL for definido, portablereflectclient e qt_example agora aceitarão um argumento opcional 'publickey = filename'. Quando especificado, o modo SSL será ativado e esses clientes se conectarão ao muscled usando o OpenSSL e apresentarão esse arquivo como suas credenciais.
  • Adicionou um & quot; Animate & quot; caixa de seleção para a demonstração qt_example. A verificação faz com que a janela mova seu indicador automaticamente. Isso é divertido e também útil se você quiser testar um cenário em que vários clientes estão gerando tráfego simultaneamente.
  • tornou a demonstração qt_example mais bonita.
  • Renomearam as macros auxiliares do C ++ 11 em Hashtable.h e Queue.h para torná-las menos propensas a colidir com as macros de outros pacotes. * Corrigido alguns pequenos erros na classe SSLSocketDataIO. o Renomeado SSLSocketDataIO :: SetKey () para SetPrivateKey (). o Renomeado SSLSocketDataIO :: SetCertificate () para SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () é agora um método virtual.

O que há de novo na versão 5.92:

  • Melhor suporte para a semântica de movimentação de C ++ 11 nas classes Queue e Hashtable (ativada somente quando -DMUSCLE_USE_CPLUSPLUS11 é definido)
  • Adicionada alguma instrumentação à classe String para que eu possa observar quantas vezes um objeto String é copiado, movido, etc. (ativado somente quando -DMUSCLE_COUNT_STRING_COPY_OPERATIONS está definido)
  • Adicionada uma função PrintAndClearStringCopyCounts (), que imprimirá os dados da operação String coletados acima.
  • Adicionada alguma magia do SFINAE ao muscleSwap () para que ele seja alternado chamando SwapContents () sempre que possível, em vez de copiá-lo para um objeto temporário.
  • Adicionado um construtor de lista de inicialização e sobrecarga de AddTailMulti () à classe Queue (disponível somente quando -DMUSCLE_USE_CPLUSPLUS11 é definido, é claro)
  • Renomeado as sobrecargas de Fila e matriz de Queue :: AddTail () para AddTailMulti (), para evitar conflitos com o novo suporte de análise de modelo do C ++ 11.
  • Renomeado as sobrecargas de Fila e matriz de Queue :: AddHead () para AddHeadMulti (), para evitar conflitos com o novo suporte de análise de modelo do C ++ 11.
  • Substitui a macro MCRASH_IMPL por uma chamada para afirmar (falso).
  • Um pouco mais de compatibilidade com o Android.
  • Muitos dos programas na pasta de testes não estavam sendo compilados no C ++ 11. Corrigido.
  • Corrigidos vários erros potenciais que foram detectados pela ferramenta de análise estática do clang.

O que há de novo na versão 5.91:

  • Adicionou o método de conveniência EnsureCanPut () à classe Hashtable.
  • Adicionado o método de conveniência EnsureCanAdd () à classe Queue.
  • Alterou DoMutexAtomicIncrement () para ser uma função inline para tornar a chamada mais eficiente.
  • QMessageTransceiverThread e QAcceptSocketsThread foram alterados para chamar QCoreApplication :: postEvent () em vez de QApplication :: postEvent (), para permitir aplicativos QT não-GUI.
  • Atualizado o documento do Guia do Principiante para refletir o melhor suporte UDP do MUSCLE.
  • Mesclado em algumas alterações de compatibilidade do Android fornecidas por Jean-François Mullet.
  • O uso do sinalizador de compilação MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS faria com que MUSCLE falhasse na inicialização devido a um problema na ordem de operações. Isso foi corrigido agora.
  • O sinalizador de compilação MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS era usado anteriormente somente se nenhuma outra implementação do AtomicCounter estivesse disponível. Agora, o sinalizador tem precedência mais alta, portanto, configurar o sinalizador significa que o Mutexes será usado, mesmo que outro mecanismo (mais eficiente) esteja disponível.

O que há de novo na versão 5.90:

  • Adicionado um método GetPacketMaximumSize () à classe DataIO para permitir que o código do gateway manipule de forma mais inteligente a comunicação empacotada no estilo UDP.
  • O MessageIOGateway agora funciona de maneira útil em conjunto com o UDPSocketDataIO.
  • Adicionadas funções do modelo CreateObjectFromArchiveMessage () ao Message.h, para servir como uma contraparte do lado do restauro para GetArchiveMessageFromPool (), etc.
  • AtomicCounter :: AtomicIncrement () agora retorna um booleano (true se o novo valor do contador for igual a um).
  • Modificada a classe HashtableIterator para que as iterações de Hashtable somente leitura sejam agora seguras para thread, mesmo se o sinalizador HTIT_FLAG_NOREGISTER não for especificado.
  • Adicionada uma classe muscle_thread_id ao SetupSystem.h, para representar adequadamente um ID de thread de maneira neutra à implementação.
  • Adicionado um & quot; deadlock & quot; programa para a pasta de testes. Este programa deliberadamente corre o risco de criar um impasse, como uma maneira de exercitar / demonstrar o teste do deadlockfinder.
  • Adicionado suporte para um sinalizador de linha de comando -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS, para aqueles que preferem evitar a sobrecarga da segurança de encadeamentos automática e prometem fornecer argumentos HTIT_FLAG_NORREGISTER manualmente, quando necessário.
  • Adicionado um cache de pesquisa LRU opcional à função GetHostByName (), para que ele possa retornar mais rapidamente quando os mesmos nomes de host forem resolvidos repetidamente.
  • Adicionada uma função SetHostNameCacheSettings () que habilita e ajusta o cache de pesquisa de LRU em GetHostByName ().
  • Adicionado suporte para & quot; dnscache & quot; e & quot; dnscachesize & quot; argumentos de linha de comando no HandleStandardDaemonArgs (), para permitir a especificação de linha de comando do comportamento do cache de pesquisa LRU.
  • Modificada a classe Hashtable para que os valores de _iterHead, _iterTail e _freeHead sejam agora uint32s em vez de ponteiros, para reduzir o uso de memória.
  • Removido o método ThreadLocalStorage :: SetFreeHeldObjectsOnExit () e adicionado um argumento booleano ao seu construtor, já que os pthreads não permitem que você altere essa configuração depois que pthread_key_create () for chamado.
  • Transferiu GetCurrentThreadID () para a classe muscle_thread_id como uma função de membro estático e alterou-a para retornar um objeto muscle_thread_id em vez de um tempo não assinado.
  • Alterou o nome do host padrão para sessões sem um endereço IP conhecido de & quot; & quot; para & quot; _conhecidos_ & quot ;, como os colchetes angulares na cadeia antiga têm um significado especial a partir da versão 5.84, e isso pode interferir na correspondência do caminho do nó de formas não intencionais.
  • Os métodos CalculateChecksum () em Message.cpp foram modificados para serem mais robustos na detecção de diferenças de transposição de dados.
  • Foi removido o suporte a MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS do AtomicCounter.h, pois a classe QAtomicInt do Qt não suporta a funcionalidade que o novo valor de retorno do método AtomicIncrement () requer.
  • Removido MessageIOGateway :: FlattenMessage () e MessageIOGateway :: UnflattenMessage (). Adicionado em seu lugar: MessageIOGateway :: FlattenHeaderAndMessage () e MessageIOGateway :: UnflattenHeaderAndMessage (). Esses novos métodos lidam com os bytes de cabeçalho e o corpo da mensagem ao mesmo tempo.
  • Adicionamos um arquivo udpproxy.vcproj à pasta de testes, para ajudar a compilar o udpproxy no Windows.
  • Mensagem: Flatten () agora itera sobre os campos na Mensagem uma vez, em vez de duas vezes.
  • GetCurrentThreadID () agora é uma função embutida, já que agora pode ser chamada frequentemente pelo HashtableIterator.
  • Modificado o código do deadlockfinder para usar Filas em vez de Hashtables, já que muscle_thread_id não pode mais ser usado como um tipo de chave Hashtable.
  • Corrigido testudp.cpp para usar corretamente um MessageIOGateway para sua comunicação UDP.
  • Ajustou um pouco mais o ifdefs em FilePathInfo.cpp para que statInfo.st_birthtimespec não seja acessado ao usar os SDKs do MacOS / X que não o fornecem.
  • O MessageDataIOGateway não tenta mais desfazer uma mensagem de um buffer de dados deflacionado pelo zlib que não foi possível inflar novamente.
  • Corrigido um erro no SendDataUDP () que fazia com que o SendDataUDP () retornasse incorretamente um erro ao enviar para um endereço multicast usando o modo sem bloqueio, e o buffer de saída estava cheio.

O que há de novo na versão 5.85:

  • Adicionadas chamadas LogTime (MUSCLE_LOG_DEBUG) a todos os caminhos de erro em MessageIOGateway :: DoInputImplementation () e Message :: Unflatten (), para que seja mais fácil determinar quando as conexões TCP estão sendo interrompidas devido a dados corrupção.
  • Adicionada uma função PreviousOperationHadTransientFailure (), que retorna true iff errno é EINTR ou ENOBUFS.
  • Especificar spamspersecond = -1 agora fará com que o hexterm envie dados de spam o mais rápido possível.
  • A implementação MUSCLE_USE_POLL do SocketMultiplexer.h estava fornecendo POLLERR para WSAPoll (), mas o WSAPoll () não suporta POLLERR, portanto, o WSAPoll () retornaria um erro quando isso ocorresse. Trabalhou em torno do problema filtrando o POLLERR ao compilar no Windows.
  • Corrigido um bug no qual send () retornando ENOBUFS poderia fazer com que a conexão do soquete fosse finalizada, mesmo que o ENOBUFS não seja uma condição fatal.
  • SocketMultiplexer.cpp não compilará quando MUSCLE_USE_POLL foi definido. Corrigido.
  • O método ZLibCodec :: Deflate () não compactaria todos os dados em um buffer muito grande (por exemplo, mais de 42 MB). Corrigido.

O que há de novo na versão 5.84:

  • A sintaxe do intervalo numérico da classe StringMatcher foi estendida para que você possa especificar vários intervalos. Por exemplo, & quot; & quot; corresponderia às cadeias "19", "20", "21", "25", "30", "31", e "50".
  • Adicionadas funções de conversão GetCurrentTime64ForRunTime64 () e GetRunTime64ForCurrenTime64 () a TimeUtilityFunctions.h.
  • Adicionado um método de utilitário GetDescendant () à classe DataNode.
  • Adicionados os construtores de movimento C ++ 11 e os operadores de atribuição de movimento às classes Hashtable, Queue, String, Message e ByteBuffer. Para compatibilidade com antigos compiladores, este código só será compilado se -DMUSCLE_USE_CPLUSPLUS11 for especificado na linha de compilação.

  • A classe
  • SharedMemory agora será nerf em uma classe de memória não compartilhada, se -DMUSCLE_FAKE_SHARED_MEMORY for especificado.
  • Adicionou um teste testfilepathinfo à pasta de testes.
  • Atualize todos os cabeçalhos de avisos de direitos autorais para ler o 2000-2013 Meyer Sound.
  • Espaços adicionados entre tokens de macro (por exemplo, UINT32_FORMAT_SPEC) e constantes de string (por exemplo, "Hello") para tornar felizes os compiladores de C ++ 11.

  • O

  • ByteBuffer.cpp tinha um erro de sintaxe que o impediria de compilar em hosts big-endian. Corrigido.

  • Apenas
  • MacOS / X: substituídas chamadas de funções de carbono reprovadas com equivalentes de Mach, para evitar avisos de descontinuação sob 10.8.x.

O que há de novo na versão 5.83:

  • Adicionadas versões de conveniência de InflateByteBuffer () e DeflateByteBuffer () que tome um ByteBufferRef como um argumento.
  • Foram removidos alguns métodos obsoletos / não utilizados (EnsureBufferSize () e FreeLargeBuffer ()) da classe AbstractMessageIOGateway.
  • Corrigidos alguns erros nos comentários na subpasta delphi.
  • A classe Hashtable não gera mais avisos quando compilada no MSVC com -DMUSCLE_AVOID_MINIMIZED_HASHTABLES definido.
  • Corrigido um erro no IPAddressAndPort :: ToString () que fazia com que as cadeias de endereços IPv4 fossem formatadas de forma ambígua quando (preferIPv4Style) era definido como falso.

Programas semelhantes

progress_sa
progress_sa

20 Feb 15

GT.M
GT.M

18 Feb 15

Percona Server
Percona Server

20 Jan 18

Outro software de desenvolvedor Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Comentário para MUSCLE

Comentários não encontrado
Adicionar comentário
Ligue imagens!