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

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!