MUSCLE

Software screenshot:
MUSCLE
Rincian Software:
Versi: 6.82 Diperbarui
Tanggal Upload: 22 Jun 18
Pengembang: Jeremy Friesner
Lisensi: Gratis
Popularitas: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE adalah singkatan dari Lingkungan Multi-Server Client Linkage dan itu adalah sistem pesan sumber terbuka, bebas, kuat, skalabel dan lintas platform yang terdiri dari komponen server dan klien. Ini akan membantu Anda untuk menulis semua jenis perangkat lunak terdistribusi, dari game multipemain dan klien obrolan IRC, hingga aplikasi penghitungan SETI.


Fitur sekilas

Dengan OTOT, pengguna akan dapat dengan mudah menyesuaikan "server berotot" yang disertakan dengan mendefinisikan logika sesi mereka sendiri atau protokol pesan-streaming. Perangkat lunak ini membantu Anda untuk menulis kode klien Anda dalam salah satu bahasa pemrograman C ++, C, C #, Java, Delphi atau Python.

Program ini menggunakan BMessage-like muscle :: Messages, mendukung pengiriman otot yang rata: Pesan di antara komputer melalui TCP (Transmission Control Protocol) stream, menyebarkan & ldquo; berotot server & rdquo; pada mesin server, memungkinkan Anda untuk menulis program klien yang dapat digunakan untuk berkomunikasi dengan server.

Selain itu, ini termasuk API olah pesan tunggal dan multi-berulir yang mendukung semua bahasa pemrograman yang disebutkan di atas. & Ldquo; server berotot & rdquo; dapat dengan mudah disesuaikan dengan mendefinisikan protokol pesan-streaming atau logika sesi.

Memulai dengan MUSCLE

Setelah berhasil masuk, program klien dapat menentukan siapa lagi yang masuk ke server pusat, serta untuk menyimpan otot :: Pesan dalam RAM (memori sistem) dan mengirim otot :: Pesan ke klien lain yang terhubung ke server. Harap dicatat bahwa program klien dapat berlangganan ke data spesifik di server, dan mendapatkan pemberitahuan instan ketika data berubah.


Mendukung berbagai rute pesan

Perangkat lunak ini telah dirancang untuk mendukung berbagai rute pesan, termasuk gaya-unicast, gaya siaran, dan gaya multicast melalui mekanisme routing pencocokan pola yang cerdas dan hierarkis.


OS dan ketersediaan yang didukung

OTOT berjalan di semua sistem operasi POSIX-compliant. Ini didistribusikan sebagai satu arsip sumber universal yang memungkinkan pengguna untuk mengoptimalkan aplikasi untuk sistem GNU / Linux mereka. Baik platform perangkat keras 32-bit dan 64-bit didukung saat ini.

Apa yang baru dalam rilis ini:

  • tes / Makefile-mt tidak lagi mencoba untuk mengkompilasi testreflectsession kecuali ketika mengeksekusi pada OS yang mendukung testreflectsession.
  • Melakukan pengeditan kecil dan mengatur ulang & quot; OTOT oleh Contoh & quot; halaman.
  • Mengganti sejumlah `tags` di MkDocs dengan [URL] (...)
  • Menghapus pewarisan pribadi CountedObject dari semua kelas yang memilikinya - sekarang mereka menyertakan variabel anggota pribadi CountedObject. Ini dilakukan hanya karena semua warisan pribadi itu mengacaukan grafik pewarisan DOxygen.
  • Menambahkan makro DECLARE_COUNTED_OBJECT ke CountedObject.h sehingga setiap potensi memori-overhead dari CountedObjects dapat dihilangkan jika tujuan penghitungan-objek tidak diinginkan.
  • Dukungan yang dihapus untuk -DMUSCLE_AVOID_OBJECT_COUNTING dan menambahkan makro -DMUSCLE_ENABLE_OBJECT_COUNTING di tempatnya. (Yaitu, kelas CountedObject sekarang dinonaktifkan-oleh-default dan harus secara eksplisit diaktifkan untuk menggunakannya)
  • Ditambahkan & quot; OTOT oleh Contoh & quot; dokumentasi untuk MiscUtilityFunctions. {cpp, h}
  • Mengubah sejumlah `tag` di sumber MUSCLE-oleh-Contoh MkDocs ke [url] sehingga metode yang mereka sebutkan dapat dengan cepat ditinjau.
  • server / Makefile sekarang menentukan libmuscle.a setelah file main () .o.
  • Memperbaiki beberapa peringatan gcc di folder pengujian (sesuai saran Mika)
  • UnparseFile () tidak mengutip kata kunci dengan spasi dengan benar. Memperbaiki.
  • Perbaiki dependensi di & quot; OTOT oleh Contoh & quot; contoh 'Makefiles.

Apa yang baru dalam versi:

  • Menambahkan metode ShrinkToFit () kenyamanan ke Antrean, Hashtable, dan kelas String. Metode ini menyusutkan objek sehingga jumlah memori yang dialokasikan secara internal sesuai dengan ukuran data yang sebenarnya dipegang.
  • Hashtable :: EnsureSize () dan Queue :: EnsureSize () sekarang mengambil argumen opsional (allowShrink), bahwa (jika disetel ke true) memungkinkan array yang dialokasikan secara internal dialokasikan kembali lebih kecil jika lebih besar dari yang diperlukan.
  • Tweak perilaku buffer-ekspansi kelas String menjadi sedikit lebih efisien.
  • Menambahkan penjaga terhadap kemungkinan rekursi tak terbatas yang dapat terjadi saat melakukan pencatatan & quot; OUT OF MEMORY & quot; kesalahan setelah kegagalan alokasi memori, jika LogCallback mencoba mengalokasikan memori.

Apa yang baru di versi 6.01:

  • Menambahkan metode kenyamanan PrependWord () ke kelas String.
  • Menambahkan WithReplacements () metode kenyamanan ke kelas String.
  • Menambahkan metode SetExplicitDelayMicros () ke kelas DetectNetworkConfigChangesSession.
  • Menambahkan metode IsCopperDetected () ke kelas NetworkInterfaceInfo, sehingga kode tersebut dapat mengetahui apakah jack Ethernet memiliki kabel yang dicolokkan ke dalamnya.
  • Menambahkan & quot; quietsend & quot; argumen ke heksterm.
  • Metode maya NetworkInterfacesChanged () di kelas DetectNetworkConfigChangesSession telah diubah untuk mengambil argumen yang memanggil antarmuka jaringan mana yang secara khusus telah berubah. Fungsi ini saat ini hanya diimplementasikan di Linux, MacOS / X, dan Windows. Untuk OS lain, argumennya akan selalu berupa daftar kosong.
  • Memperbaiki bug dalam implementasi Linux DetectNetworkConfigChangesSession yang dapat menyebabkan kesalahan segmentasi jika recvmsg () mengembalikan kesalahan (mis. karena sinyal yang diterima).

Apa yang baru di versi 6.00:

  • Tulis ulang kelas SSLSocketDataIO agar berfungsi lebih baik dengan non-blocking I / O (bersama dengan kelas SSLSocketAdapterGateway baru).
  • Menambahkan implementasi SSLSocketDataIO :: SetPrivateKey () dan SSLSocketDataIO :: SetCertificate () yang mengambil ByteBuffer sebagai argumen.
  • Menambahkan kelas SSLSocketAdapterGateway yang digunakan untuk mengelola mesin keadaan internal OpenSSL ketika menggunakan kelas SSLSocketDataIO dengan gateway Anda.
  • Menambahkan metode SetSSLPrivateKey () dan GetSSLPrivateKey () ke kelas ReflectServer, agar lebih mudah memungkinkan otentikasi SSL pada semua koneksi TCP yang masuk. Metode ini tersedia jika MUSCLE_ENABLE_SSL didefinisikan.
  • Menambahkan SetSSLPublicKeyCertificate () dan GetSSLPublicKeyCertificate () metode ke kelas ReflectServer, untuk lebih mudah memungkinkan otentikasi SSL pada koneksi TCP keluar. Metode ini tersedia jika MUSCLE_ENABLE_SSL didefinisikan.
  • Menambahkan metode SetSSLPrivateKey () dan SetSSLPublicKeyCertificate () ke kelas MessageTransceiverThread, untuk mempermudah fungsionalitas SSL saat menggunakan I / O berulir.
  • Menambahkan folder ssl_data dengan beberapa info tentang pembuatan OpenSSL public / private keypairs, dan contoh keypair untuk digunakan dalam pengujian OpenSSL.
  • Ketika MUSCLE_ENABLE_SSL didefinisikan, berotot sekarang menerima argumen opsional 'privatekey = filename'. Ketika ditentukan, mode SSL akan diaktifkan dan berotot hanya akan menerima koneksi TCP masuk yang menampilkan kunci publik yang cocok dengan kunci / sertifikat pribadi ini.
  • Ketika MUSCLE_ENABLE_SSL didefinisikan, portablereflectclient dan qt_example sekarang akan menerima argumen opsional 'publickey = filename'. Ketika ditentukan, mode SSL akan diaktifkan dan klien ini akan terhubung ke berotot menggunakan OpenSSL dan menyajikan file ini sebagai kredensial mereka.
  • Menambahkan & quot; Animasikan & quot; kotak centang ke demo qt_example. Memeriksa itu menyebabkan jendela untuk memindahkan indikatornya secara otomatis. Ini menyenangkan dan juga berguna jika Anda ingin menguji skenario di mana beberapa klien menghasilkan lalu lintas secara bersamaan.
  • Membuat Qt_example demo lebih cantik.
  • Berganti nama macro C + + 11-helper di Hashtable.h dan Queue.h untuk membuat mereka kurang bertabrakan dengan makro paket lain. * Memperbaiki beberapa kesalahan kecil di kelas SSLSocketDataIO. o Ganti nama SSLSocketDataIO :: SetKey () menjadi SetPrivateKey (). o Ganti nama SSLSocketDataIO :: SetCertificate () menjadi SetPublicKeyCertificate (). o AbstrakMessageIOGateway :: SetDataIO () sekarang menjadi metode virtual.

Apa yang baru di versi 5.92:

  • Peningkatan dukungan untuk C + + 11 bergerak-semantik di kelas Antrian dan Hashtable (hanya diaktifkan ketika -DMUSCLE_USE_CPLUSPLUS11 didefinisikan)
  • Menambahkan beberapa instrumentasi ke kelas String sehingga saya dapat melihat berapa kali objek String disalin, dipindahkan, dll (hanya diaktifkan ketika -DMUSCLE_COUNT_STRING_COPY_OPERATIONS didefinisikan)
  • Menambahkan fungsi PrintAndClearStringCopyCounts () yang akan mencetak data operasi String yang dikumpulkan di atas.
  • Menambahkan beberapa magic SFINAE ke muscleSwap () sehingga akan bertukar dengan memanggil SwapContents () bila mungkin, daripada dengan menyalin ke objek sementara.
  • Menambahkan konstruktor initializer-list dan kelebihan AddTailMulti () ke kelas Antrian (hanya tersedia ketika -DMUSCLE_USE_CPLUSPLUS11 didefinisikan, tentu saja)
  • Mengganti nama Antrian dan deret array dari Queue :: AddTail () ke AddTailMulti (), untuk menghindari konflik dengan dukungan parsing C ++ 11 template yang baru.
  • Mengganti nama Antrian dan deret array dari Queue :: AddHead () ke AddHeadMulti (), untuk menghindari konflik dengan dukungan parsing C ++ 11 template yang baru.
  • MCRASH_IMPL yang diganti dengan panggilan untuk menegaskan (salah).
  • Sedikit tweakage kompatibilitas Android.
  • Banyak program dalam folder pengujian tidak dikompilasi di bawah C ++ 11. Memperbaiki.
  • Memperbaiki beberapa potensi bug yang dideteksi oleh alat analisis statis clang.

Apa yang baru di versi 5.91:

  • Menambahkan EnsureCanPut () metode kenyamanan ke kelas Hashtable.
  • Menambahkan EnsureCanAdd () metode kenyamanan ke kelas Antrean.
  • Mengubah DoMutexAtomicIncrement () menjadi fungsi sebaris untuk menjadikannya lebih efisien.
  • Berubah QMessageTransceiverThread dan QAcceptSocketsThread untuk memanggil QCoreApplication :: postEvent () daripada QApplication :: postEvent (), untuk memungkinkan aplikasi Qt Non-GUI.
  • Memperbarui dokumen Pemula Pemula untuk mencerminkan dukungan UDP yang ditingkatkan MUSCLE.
  • Bergabung dalam beberapa perubahan kompatibilitas Android yang disediakan oleh Jean-FranA§ois Mullet.
  • Penggunaan flag compile MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS akan menyebabkan MUSCLE crash pada startup karena masalah order-of-operation. Ini telah diperbaiki sekarang.
  • Bendera kompilasi MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS sebelumnya hanya digunakan jika tidak ada implementasi AtomicCounter lain yang tersedia. Sekarang bendera memiliki prioritas lebih tinggi, jadi mengatur bendera berarti bahwa Mutexes akan digunakan, bahkan jika mekanisme lain (lebih efisien) tersedia.

Apa yang baru di versi 5.90:

  • Menambahkan metode GetPacketMaximumSize () ke kelas DataIO untuk memungkinkan kode gateway untuk menangani secara lebih cerdas komunikasi paket paket bergaya UDP.
  • MessageIOGateway sekarang berfungsi dengan baik dalam hubungannya dengan UDPSocketDataIO.
  • Menambahkan CreateObjectFromArchiveMessage () fungsi templated ke Message.h, untuk melayani sebagai mitra restoring-side untuk GetArchiveMessageFromPool (), dll.
  • AtomicCounter :: AtomicIncrement () sekarang mengembalikan boolean (true iff the new counter value sama dengan satu).
  • Memodifikasi kelas HashtableIterator sehingga hanya-baca iterasi Hashtable sekarang aman-thread bahkan jika bendera HTIT_FLAG_NOREGISTER tidak ditentukan.
  • Menambahkan kelas muscle_thread_id ke SetupSystem.h, untuk merepresentasikan ID utas secara benar dalam mode implementasi-netral.
  • Menambahkan & quot; deadlock & quot; program ke folder tes. Program ini sengaja berisiko menciptakan kebuntuan, sebagai cara untuk melakukan / mendemonstrasikan tes deadlockfinder.
  • Penambahan dukungan untuk flag baris perintah -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS, bagi mereka yang lebih suka menghindari overhead keselamatan benang otomatis dan berjanji untuk menyediakan HTIT_FLAG_NOREGISTER argumen dengan tangan bila perlu.
  • Menambahkan cache pencarian LRU opsional ke fungsi GetHostByName (), sehingga dapat kembali lebih cepat ketika hostname yang sama diselesaikan berulang-ulang.
  • Menambahkan fungsi SetHostNameCacheSettings () yang memungkinkan dan menyesuaikan cache pencarian LRU di GetHostByName ().
  • Dukungan tambahan untuk & quot; dnscache & quot; dan & quot; dnscachesize & quot; argumen baris perintah di HandleStandardDaemonArgs (), untuk memungkinkan spesifikasi baris perintah perilaku cache pencarian LRU.
  • Memodifikasi kelas Hashtable sehingga nilai _iterHead, _iterTail, dan _freeHead sekarang uint32s daripada pointer, untuk mengurangi penggunaan memori.
  • Menghapus metode ThreadLocalStorage :: SetFreeHeldObjectsOnExit (), dan menambahkan argumen boolean ke konstruktornya sebagai gantinya, karena pthread tidak mengizinkan Anda untuk mengubah pengaturan setelah pthread_key_create () dipanggil.
  • Memindahkan GetCurrentThreadID () ke kelas muscle_thread_id sebagai fungsi anggota statis, dan mengubahnya untuk mengembalikan objek muscle_thread_id daripada unsigned long.
  • Mengubah nama host default untuk sesi tanpa alamat IP yang diketahui dari & quot; & quot; ke & quot; _unknown_ & quot ;, karena kurung sudut pada string sebelumnya memiliki arti khusus pada rilis 5.84, dan itu dapat mengganggu pencocokan simpul-jalur dengan cara yang tidak diinginkan.
  • Metode CalculateChecksum () di Message.cpp telah dimodifikasi agar lebih kuat dalam mendeteksi perbedaan transposisi data.
  • Menghapus dukungan MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS dari AtomicCounter.h, karena QtaTomicInt kelas Qt tidak mendukung fungsionalitas yang dibutuhkan oleh nilai baru metode baru dari AtomicIncrement ().
  • Pesan yang DihapusIOGateway :: FlattenMessage () dan MessageIOGateway :: UnflattenMessage (). Ditambahkan di tempat mereka: MessageIOGateway :: FlattenHeaderAndMessage () dan MessageIOGateway :: UnflattenHeaderAndMessage (). Metode-metode baru ini berhubungan dengan kedua byte header dan badan Pesan pada saat yang bersamaan.
  • Menambahkan file udpproxy.vcproj ke folder pengujian, untuk membantu mengkompilasi udpproxy pada Windows.
  • Pesan: Ratakan () sekarang mengulangi bidang dalam Pesan satu kali, alih-alih dua kali.
  • GetCurrentThreadID () sekarang menjadi fungsi inline, karena sekarang dapat dipanggil sering oleh HashtableIterator.
  • Mengubah kode deadlockfinder untuk menggunakan Antrean, bukan Hashtable, karena muscle_thread_id tidak dapat digunakan sebagai jenis kunci Hashtable lagi.
  • Tetap testudp.cpp untuk menggunakan MessageIOGateway dengan benar untuk komunikasi UDP-nya.
  • Menyalakan ifdefs di FilePathInfo.cpp sedikit lebih banyak sehingga statInfo.st_birthtimespec tidak akan diakses saat menggunakan MacOS / X SDK yang tidak menyediakannya.
  • MessageDataIOGateway tidak lagi mencoba untuk Menghapus pesan dari buffer data yang dibangkitkan-zlib yang tidak dapat di-inflate.
  • Memperbaiki bug di SendDataUDP () yang dapat menyebabkan SendDataUDP () salah mengembalikan kesalahan saat mengirim ke alamat multicast menggunakan mode non-blocking, dan buffer output penuh.

Apa yang baru di versi 5.85:

  • Panggilan LogTime (MUSCLE_LOG_DEBUG) ditambahkan ke semua jalur kesalahan di MessageIOGateway :: DoInputImplementation () dan Message :: Unflatten (), sehingga lebih mudah untuk menentukan kapan koneksi TCP dibatalkan karena data korupsi.
  • Menambahkan fungsi PreviousOperationHadTransientFailure (), yang mengembalikan true iff errno adalah EINTR atau ENOBUFS.
  • Menentukan spamspersecond = -1 sekarang akan menyebabkan hexterm mengirim data spam secepat mungkin.
  • Implementasi MUSCLE_POLL SocketMultiplexer.h adalah memasok POLLERR ke WSAPoll () tetapi WSAPoll () tidak mendukung POLLERR sehingga WSAPoll () akan mengembalikan kesalahan saat ini terjadi. Bekerja di sekitar masalah dengan menyaring POLLERR ketika kompilasi di bawah Windows.
  • Memperbaiki bug di mana mengirim () mengembalikan ENOBUFS dapat menyebabkan koneksi soket diakhiri, meskipun ENOBUFS bukan merupakan kondisi yang fatal.
  • SocketMultiplexer.cpp tidak dapat dikompilasi saat MUSCLE_USE_POLL ditentukan. Memperbaiki.
  • Metode ZLibCodec :: Deflate () akan gagal untuk mengompresi semua data dalam buffer yang sangat besar (mis. di atas 42MB). Memperbaiki.

Apa yang baru di versi 5.84:

  • Sintaks numerik-range kelas StringMatcher telah diperpanjang sehingga Anda sekarang dapat menentukan beberapa rentang. Misalnya, & quot; & quot; akan mencocokkan string & quot; 19 & quot ;, & quot; 20 & quot ;, & quot; 21 & quot ;, & quot; 25 & quot ;, & quot; 30 & quot ;, & quot; 31 & quot ;, [...], dan & quot; 50 & quot;.
  • Menambahkan fungsi GetCurrentTime64ForRunTime64 () dan GetRunTime64ForCurrenTime64 () ke TimeUtilityFunctions.h.
  • Menambahkan metode utilitas GetDescendant () ke kelas DataNode.
  • Menambahkan C ++ 11 move-constructors dan memindahkan-assignment-operators ke kelas Hashtable, Queue, String, Message, dan ByteBuffer. Untuk kompatibilitas mundur dengan compiler lama, kode ini hanya akan dikompilasi jika -DMUSCLE_USE_CPLUSPLUS11 ditentukan pada baris kompilasi.
  • Kelas SharedMemory sekarang akan nerf sendiri menjadi kelas memori non-bersama jika -DMUSCLE_FAKE_SHARED_MEMORY ditetapkan.
  • Menambahkan tes testfilepathinfo ke folder pengujian.
  • Memperbarui semua pemberitahuan pemberitahuan hak cipta untuk membaca 2000-2013 Meyer Sound.
  • Menambahkan spasi di antara token makro (mis. UINT32_FORMAT_SPEC) dan konstanta string (mis. & quot; Hello & quot;) untuk membuat compiler C ++ 11 bahagia.
  • ByteBuffer.cpp memiliki kesalahan sintaks yang akan mencegahnya mengkompilasi pada host big-endian. Memperbaiki.
  • Hanya MacOS / X: Menggantikan panggilan fungsi Karbon yang tidak berlaku dengan setara Mach, untuk menghindari peringatan penghentian di bawah 10.8.x.

Apa yang baru di versi 5.83:

  • Versi kenyamanan tambahan dari InflateByteBuffer () dan DeflateByteBuffer () yang ambil ByteBufferRef sebagai argumen.
  • Menghapus beberapa metode usang / tidak terpakai (EnsureBufferSize () dan FreeLargeBuffer ()) dari kelas AbstractMessageIOGateway.
  • Memperbaiki beberapa kesalahan ketik pada komentar di subfolder delphi.
  • Kelas Hashtable tidak lagi menghasilkan peringatan ketika dikompilasi berdasarkan MSVC dengan -DMUSCLE_AVOID_MINIMIZED_HASHTABLES yang ditentukan.
  • Memperbaiki bug dalam IPAddressAndPort :: ToString () yang menyebabkan string alamat IPv4 diformat secara ambigu ketika (preferIPv4Style) disetel ke false.

Software yang serupa

progress_sa
progress_sa

20 Feb 15

Jaxer
Jaxer

3 Jun 15

Apache Cassandra
Apache Cassandra

19 Feb 15

Perangkat lunak lain dari pengembang Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Komentar untuk MUSCLE

Komentar tidak ditemukan
Tambahkan komentar
Aktifkan gambar!