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風のmuscle :: Messagesを使用し、TCP(Transmission Control Protocol)ストリームを介してコンピュータ間のメッセージをフラットな筋肉の送信をサポートし、筋力の弱いサーバーを展開します。サーバーマシン上で、サーバーとの通信に使用できるクライアントプログラムを記述することができます。

さらに、前述のすべてのプログラミング言語をサポートするシングルスレッドおよびマルチスレッドのメッセージングAPIが含まれています。 “筋書きされたサーバー”メッセージストリーミングプロトコルまたはセッションロジックを定義することで簡単にカスタマイズできます。

MUSCLEを使い始める

ログインに成功すると、クライアントプログラムは誰かが中央サーバにログインしているかどうかを判断し、muscle :: messagesをRAM(システムメモリ)に保存し、muscle :: messagesを接続している他のクライアントに送信することができますサーバーに送信します。クライアントプログラムは、サーバー上の特定のデータを購読することができ、データが変更されたときに即時通知を受け取ることができます。


幅広いメッセージルーティングをサポート

このソフトウェアは、インテリジェントで階層的なパターン・マッチング・ルーティング・メカニズムを通じて、ユニキャスト・スタイル、ブロードキャスト・スタイル、マルチキャスト・スタイルのメッセージ・ルーティングを含む幅広いメッセージ・ルーティングをサポートするように設計されています。
サポートされるOSと可用性

MUSCLEはPOSIX準拠のオペレーティングシステムで動作します。これは、ユーザがGNU / Linuxシステム用にアプリケーションを最適化できるようにする、単一の汎用ソースアーカイブとして配布されています。この時点では、32ビットと64ビットの両方のハードウェアプラットフォームがサポートされています。

このリリースの新機能:

tests / Makefile-mtは、testreflectsessionがサポートするOS上で実行する場合を除いて、testreflectsessionをコンパイルしようとしません。
「MUSCLE by Example」のいくつかの小さな編集および再配置を行ったか?ページ。
MkDocsのいくつかの `tags 'を[URLs](...)に置き換えました
CountedObjectのプライベート継承をすべてのクラスから削除しました。代わりにCountedObjectプライベートメンバ変数が代わりに追加されました。これは、そのすべての私的継承がDOxygen継承グラフを乱雑にしていたからです。
countedObject.hにDECLARE_COUNTED_OBJECTマクロを追加しました。オブジェクトカウントが望ましくない場合、CountedObjectsの潜在的なメモリオーバヘッドを排除できます。
-DMUSCLE_AVOID_OBJECT_COUNTINGのサポートが削除され、代わりに-DMUSCLE_ENABLE_OBJECT_COUNTINGマクロが追加されました。 (つまり、CountedObjectクラスはデフォルトで無効になっており、使用するには明示的に有効にする必要があります)
「MUSCLE by Example」を追加しました。 MiscUtilityFunctionsのドキュメント。{cpp、h}
MUSCLE-by-Example MkDocsソース内の `tags 'の数を[urls]に変更し、それらのメソッドがすぐに見直されるようにしました。

server / Makefileは、main().oファイルの後にlibmuscle.aを指定するようになりました。
テストフォルダ内のいくつかのgcc警告を修正しました(Mikaの提案による)
UnparseFile()はスペースを含むキーワードを適切に引用していませんでした。一定。
"MUSCLE by Example"の依存関係を修正しました。例 'メークファイル。

バージョンの新機能:

Queue、Hashtable、およびStringクラスにShrinkToFit()の便利メソッドを追加しました。このメソッドはオブジェクトを縮小して、内部的に割り当てたメモリ量が実際に保持しているデータのサイズと一致するようにします。
Hashtable :: EnsureSize()とQueue :: EnsureSize()はオプショナルな(allowShrink)引数をとります(trueに設定されている場合)。オブジェクトが必要以上に大きければ、オブジェクトの内部割り当て配列を小さく割り当てます。
Stringクラスのバッファ拡張動作を少し効率的に調整しました。
"OUT OF MEMORY"ログを記録している間に発生する潜在的な無限再帰に対するガードを追加しました。 LogCallbackがメモリーを割り当てようとした場合、メモリー割り振り失敗後のエラー。

バージョン6.01の新機能:

StringクラスにPrependWord()メソッドを追加しました。
StringクラスにWithReplacements()メソッドを追加しました。
DetectNetworkConfigChangesSessionクラスにSetExplicitDelayMicros()メソッドを追加しました。
IsCopperDetected()メソッドをNetworkInterfaceInfoクラスに追加しました。これにより、イーサネットジャックにケーブルが接続されているかどうかをコードで確認できます。
「quietsend」を追加しました。 hextermへの議論。
DetectNetworkConfigChangesSessionクラスのNetworkInterfacesChanged()仮想メソッドは、特にどのネットワークインターフェイスが変更されたかを呼び出す引数を取るように変更されました。この機能は現在、Linux、MacOS / XおよびWindowsでのみ実装されています。他のOSの場合、引数は常に空のリストになります。
DetectNetworkConfigChangesSessionのLinux実装におけるバグを修正しました。これは、recvmsg()がエラーを返した場合(たとえば、シグナルが受信されたため)、セグメンテーション違反を引き起こす可能性があります。

バージョン6.00の新機能:

SSLSocketDataIOクラスを書き直して、新しいSSLSocketAdapterGatewayクラスと組み合わせて非ブロッキングI / Oでよりうまく機能するようにしました。
ByteBufferを引数として取るSSLSocketDataIO :: SetPrivateKey()とSSLSocketDataIO :: SetCertificate()の実装が追加されました。
SSLSocketAdapterGatewayクラスを追加しました。SSLSocketAdapterGatewayクラスは、ゲートウェイでSSLSocketDataIOクラスを使用するときにOpenSSLの内部ステートマシンを管理するために使用されます。
ReflectServerクラスにSetSSLPrivateKey()およびGetSSLPrivateKey()メソッドを追加し、すべての受信TCP接続でSSL認証を簡単に有効にしました。これらのメソッドは、MUSCLE_ENABLE_SSLが定義されている場合に使用できます。
ReflectServerクラスにSetSSLPublicKeyCertificate()およびGetSSLPublicKeyCertificate()メソッドを追加して、発信TCP接続でSSL認証を簡単に有効にしました。これらのメソッドは、MUSCLE_ENABLE_SSLが定義されている場合に使用できます。
スレッド化されたI / Oを使用するときにSSL機能を簡単に有効にするために、SetSSLPrivateKey()およびSetSSLPublicKeyCertificate()メソッドをMessageTransceiverThreadクラスに追加しました。
OpenSSL公開鍵/秘密鍵ペアの生成に関する情報とOpenSSLのテストに使用する鍵ペアの例を含むssl_dataフォルダを追加しました。

MUSCLE_ENABLE_SSLが定義されると、muscledはオプションの 'privatekey = filename'引数を受け付けるようになりました。指定すると、SSLモードが有効になり、この秘密鍵/証明書と一致する公開鍵を提示する着信TCP接続のみが強制的に受け入れられます。
MUSCLE_ENABLE_SSLが定義されると、portablereflectclientとqt_exampleはオプションの 'publickey = filename'引数を受け入れるようになりました。指定すると、SSLモードが有効になり、これらのクライアントはOpenSSLを使用して強制的に接続し、このファイルを認証情報として提示します。
" Animate" qt_exampleデモのチェックボックスをオンにします。それをチェックすると、ウィンドウが自動的にそのインジケータを移動させます。これは楽しく、複数のクライアントが同時にトラフィックを生成しているシナリオをテストする場合にも便利です。
qt_exampleデモをよりきれいにしました。
Hashtable.hおよびQueue.hのC ++ 11ヘルパーマクロの名前を変更して、他のパッケージのマクロとの衝突を少なくします。 * SSLSocketDataIOクラスのマイナーエラーを修正しました。 o SSLSocketDataIO :: SetKey()をSetPrivateKey()に変更しました。 o SSLSocketDataIO :: SetCertificate()をSetPublicKeyCertificate()に変更しました。 o AbstractMessageIOGateway :: SetDataIO()は仮想メソッドになりました。

バージョン5.92の新機能:

QueueクラスとHashtableクラスのC ++ 11移動セマンティクスのサポートが改善されました(-DMUSCLE_USE_CPLUSPLUS11が定義されている場合のみ有効)
Stringクラスにインストゥルメンテーションを追加したので、Stringオブジェクトが何回コピー、移動されたかを見ることができます(-DMUSCLE_COUNT_STRING_COPY_OPERATIONSが定義されている場合のみ有効)
上記で収集した文字列操作データを出力するPrintAndClearStringCopyCounts()関数を追加しました。
muscleSwap()にSFINAEの魔法をいくつか追加し、一時オブジェクトにコピーするのではなく、可能な場合にSwapContents()を呼び出すことでスワップするようにしました。
Queueクラスに初期化子リストコンストラクタとAddTailMulti()のオーバーロードを追加しました(もちろん、-DMUSCLE_USE_CPLUSPLUS11が定義されている場合のみ利用可能です)
Queue :: AddTail()をAddTailMulti()に変更して、新しいC ++ 11テンプレート解析サポートとの競合を回避しました。
Queue :: AddHead()をAddHeadMulti()に変更して、新しいC ++ 11テンプレート解析サポートとの競合を回避します。
MCRASH_IMPLマクロを、アサートの呼び出し(false)に置き換えました。
もう少しAndroid互換性の調整があります。

testsフォルダのプログラムの多くはC ++ 11でコンパイルされていませんでした。一定。
clangの静的解析ツールで検出されたいくつかの潜在的なバグを修正しました。

バージョン5.91の新機能:

EnsureCanPut()メソッドをHashtableクラスに追加しました。
EnsureCanAdd()の簡易メソッドをQueueクラスに追加しました。
DoMutexAtomicIncrement()をインライン関数に変更し、より効率的に呼び出すようにしました。
QMessageTransceiverThreadとQAcceptSocketsThreadをQApplication :: postEvent()ではなくQCoreApplication :: postEvent()に変更し、GUI以外のQtアプリケーションを許可しました。
MUSCLEの改良されたUDPサポートを反映するように、初心者向けガイドのドキュメントを更新しました。
Jean-FranAçoisMulletが提供するAndroidの互換性の一部が合併しました。
MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONSコンパイルフラグを使用すると、MUSCLEが起動時に操作の順序の問題によりクラッシュする可能性があります。これは今修正されました。
MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONSコンパイルフラグは、AtomicCounterの他の実装が利用できなかった場合にのみ使用されていました。今度はフラグの優先順位が高くなります。フラグを設定すると、別の(より効率的な)メカニズムが利用可能であっても、Mutexが使用されます。

バージョン5.90の新機能:

ゲートウェイコードがUDPスタイルのパケット化された通信をよりインテリジェントに処理できるように、DataIOクラスにGetPacketMaximumSize()メソッドを追加しました。
MessageIOGatewayはUDPSocketDataIOと連携して便利に機能するようになりました。
MessageArtにGetArchiveMessageFromPool()などの復元側の対応として機能する、テンプレート化されたCreateObjectFromArchiveMessage()関数を追加しました。
AtomicCounter :: AtomicIncrement()はブール値を返します(新しいカウンタ値が1の場合はtrue)。
HTIT_FLAG_NOREGISTERフラグが指定されていなくても、読み取り専用ハッシュテーブル反復がスレッドセーフになるように、HashtableIteratorクラスを変更しました。
実装に中立な方法でスレッドIDを適切に表現するために、SetupSystem.hにmuscle_thread_idクラスを追加しました。
「デッドロック」機能を追加しました。プログラムをテストフォルダに追加します。このプログラムは意図的にデッドロックを発生させる危険性があり、デッドロックファインダーのテストを行使/実証する方法となります。
必要に応じて自動的にスレッドの安全性のオーバーヘッドを避け、HTIT_FLAG_NOREGISTER引数を手動で提供することを約束している人に、-DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORSコマンドラインフラグのサポートを追加しました。

オプションのLRUルックアップキャッシュをGetHostByName()関数に追加しました。これにより、同じホスト名が何度も何度も解決されたときに、より迅速に戻ることができます。
GetHostByName()のLRUルックアップキャッシュを有効にして調整するSetHostNameCacheSettings()関数を追加しました。
" dnscache"のサポートが追加されました。 「dnscachesize」は、 HandleStandardDaemonArgs()のコマンドライン引数を使用して、LRUルックアップキャッシュの動作をコマンドラインで指定できるようにします。
メモリ使用量を減らすために、_iterHead、_iterTail、および_freeHeadメンバの値がポインタではなくuint32になるように、Hashtableクラスを修正しました。
ThreadLocalStorage :: SetFreeHeldObjectsOnExit()メソッドを削除し、その代わりにboolean引数をそのコンストラクタに追加しました.pthreadsはpthread_key_create()が呼び出された後にその設定を変更することを許可しないためです。
GetCurrentThreadID()をstaticメンバ関数としてmuscle_thread_idクラスに移動し、unsigned longではなくmuscle_thread_idオブジェクトを返すように変更しました。既知のIPアドレスのないセッションのデフォルトのホスト名を""から変更しました。前のストリングの山括弧が5.84リリースの特別な意味を持ち、意図しない方法でノードパスの一致を妨げる可能性があるため、「_unknown_」に変更する必要があります。
Message.cppのCalculateChecksum()メソッドは、データ転置の違いを検出する際により堅牢になるように変更されています。
QtのQAtomicIntクラスは、AtomicIncrement()メソッドの新しい戻り値が必要とする機能をサポートしていないため、AtomicCounter.hのMUSCLE_USE_QT_FOR_ATOMIC_OPERATIONSサポートを削除しました。
MessageIOGateway :: FlattenMessage()とMessageIOGateway :: UnflattenMessage()を削除しました。彼らの場所にMessageIOGateway :: FlattenHeaderAndMessage()とMessageIOGateway :: UnflattenHeaderAndMessage()を追加しました。これらの新しいメソッドは、ヘッダバイトとMessageボディの両方を同時に処理します。
Windows上でudpproxyをコンパイルするために、udpproxy.vcprojファイルをtestsフォルダに追加しました。
メッセージ:Flatten()はMessageのフィールドを2回ではなく1回反復処理するようになりました。
GetCurrentThreadID()は、現在、HashtableIteratorによって頻繁に呼び出される可能性があるため、インライン関数になりました。

muscle_thread_idはもうハッシュテーブルのキータイプとして使用できないため、デッドロックファインダーコードを変更して、ハッシュテーブルの代わりにキューを使用するようにしました。
testudp.cppがUDP通信用にMessageIOGatewayを適切に使用するように修正しました。
FilePathInfo.cppのifdefを微調整して、提供していないMacOS / X SDKを使用しているときにstatInfo.st_birthtimespecにアクセスしないようにしました。
MessageDataIOGatewayは、再膨張できなかったzlibが収縮したデータバッファからメッセージを非平坦化しようとしなくなりました。
non-blockingモードを使用してマルチキャストアドレスに送信するときにSendDataUDP()が誤ってエラーを返し、出力バッファがいっぱいになってしまうバグを修正しました。

バージョン5.85の新機能:

MessageIOGateway :: DoInputImplementation()とMessage :: Unflatten()のすべてのエラーパスにLogTime(MUSCLE_LOG_DEBUG)呼び出しを追加しました。データ破損のためにTCP接続がいつ中止されたかを簡単に判断できます。
PreviousOperationHadTransientFailure()関数を追加しました。この関数は、errnoがEINTRまたはENOBUFSの場合にtrueを返します。
spamspersecond = -1を指定すると、hextermはできるだけ早くスパムデータを送信します。
SocketMultiplexer.hのMUSCLE_USE_POLL実装がWSAPoll()にPOLLERRを供給していましたが、WSAPoll()はPOLLERRをサポートしていないため、WSAPoll()はエラーが発生したときにエラーを返します。 Windowsの下でコンパイルするときにPOLLERRを除外して問題を回避しました。
ENOBUFSが致命的な状態でなくても、ENOBUFSを返すsend()がソケット接続を終了させるバグを修正しました。
MUSCLE_USE_POLLが定義されていると、SocketMultiplexer.cppはコンパイルされません。一定。
ZLibCodec :: Deflate()メソッドは、非常に大きなバッファ(例えば42MB以上)のすべてのデータを圧縮することに失敗します。一定。

バージョン5.84の新機能:

StringMatcherクラスの数値範囲構文が拡張され、複数の範囲を指定できるようになりました。例えば、 "" 「19」、「20」、「21」、「25」、「30」、「31」、「...」、および「50」の文字列と一致する。
GetCurrentTime64ForRunTime64()およびGetRunTime64ForCurrenTime64()変換関数をTimeUtilityFunctions.hに追加しました。
DataNodeクラスにGetDescendant()ユーティリティメソッドを追加しました。
Hashtable、Queue、String、Message、およびByteBufferクラスにC ++ 11の移動コンストラクタと移動代入演算子を追加しました。古いコンパイラとの下位互換性のために、このコードは、コンパイル行で-DMUSCLE_USE_CPLUSPLUS11が指定されている場合にのみコンパイルされます。
-DMUSCLE_FAKE_SHARED_MEMORYが指定されている場合、SharedMemoryクラスはそれ自身を非共有メモリクラスにします。
testsfilepathinfoテストをtestsフォルダに追加しました。
2000-2013 Meyer Soundのすべての著作権表示ヘッダーを更新しました。
C ++ 11コンパイラをうれしくするために、マクロトークン(UINT32_FORMAT_SPECなど)と文字列定数(例: "Hello")の間にスペースを追加しました。


ByteBuffer.cppにビッグエンディアンのホストでのコンパイルを妨げる構文エラーがありました。一定。
MacOS / Xのみ:非推奨のCarbon関数呼び出しをMachに相当するものに置き換え、10.8.xでの非推奨警告を回避する。

バージョン5.83の新機能:

ByteBufferRefを引数としてInflateByteBuffer()とDeflateByteBuffer()の便利なバージョンを追加しました。
AbstractMessageIOGatewayクラスから廃止/未使用のメソッド(EnsureBufferSize()およびFreeLargeBuffer())を削除しました。
delphiサブフォルダ内のコメントのいくつかのタイプミスを修正しました。
Hashtableクラスは、-DMUSCLE_AVOID_MINIMIZED_HASHTABLESを定義してMSVCでコンパイルすると、警告を生成しなくなりました。
IPAddressAndPort :: ToString()の不具合を修正し、(preferIPv4Style)がfalseに設定されたときにIPv4アドレス文字列があいまいにフォーマットされる問題を修正しました。

同じようなソフトウェア

開発者の他のソフトウェア Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

へのコメント MUSCLE

コメントが見つかりません
コメントを追加
画像をオンにする!