Coder Social home page Coder Social logo

mum's People

Contributors

default-username-852 avatar rbran avatar sornas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

jgarte

mum's Issues

Custom tab completions

Call mumctl-commands so we can e.g. tab through servers, channels, usernames.

We could do something ourselves but I'd rather wait for clap (or some other library) to solve something automatic.

Handle received TCP packages

Everything doesn't need to be handled but it's still nice to have all these in one place.

https://docs.rs/mumble-protocol/0.4.1/mumble_protocol/control/msgs/index.html:

  • ACL
  • ACL_ChanACL
  • ACL_ChanGroup
  • Authenticate
  • BanList
  • BanList_BanEntry
  • ChannelRemove
  • ChannelState
  • CodecVersion
  • ContextAction
  • ContextActionModify
  • CryptSetup
  • PermissionDenied
  • PermissionQuery
  • Ping
  • QueryUsers
  • Reject
  • RequestBlob
  • ServerConfig
  • ServerSync
  • SuggestConfig
  • TextMessage
  • UDPTunnel
  • UserList
  • UserList_User
  • UserRemove
  • UserState
  • UserStats
  • UserStats_Stats
  • Version
  • VoiceTarget
  • VoiceTarget_Target

Input volume feedback

Something like alsa-mixer (?)

How should we communicate between processes? Persistent channels? dbus? Skip entirely and bake into mumd?

Inline documentation

  • mumctl
    • build.rs
    • src
      • main.rs
  • mumd
    • build.rs
    • src
      • audio
        • input.rs #61 (partly)
        • output.rs #61 (partly)
        • transformers.rs
      • audio.rs #61
      • client.rs
      • command.rs
      • error.rs
      • main.rs
      • network
        • tcp.rs
        • udp.rs
      • network.rs
      • notifications.rs
      • state
        • channel.rs
        • server.rs
        • user.rs
      • state.rs
  • mumlib/src
    • command.rs #61 (partly)
    • config.rs #61
    • error.rs
    • lib.rs #61
    • state.rs #61 (partly)

Build Fails at `glib-sys v0.5.0`

error: failed to run custom build command for glib-sys v0.5.0

Caused by:
process didn't exit successfully: /tmp/cargo-install3kZc2w/release/build/glib-sys-255260c710c5480b/build-script-build (exit code: 1)
--- stdout
cargo:rerun-if-env-changed=GLIB_2.0_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=GLIB_2.0_STATIC
cargo:rerun-if-env-changed=GLIB_2.0_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_arm-unknown-linux-gnueabihf
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_arm_unknown_linux_gnueabihf
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_arm-unknown-linux-gnueabihf
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_arm_unknown_linux_gnueabihf
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_arm-unknown-linux-gnueabihf
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_arm_unknown_linux_gnueabihf
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR

--- stderr
"pkg-config" "--libs" "--cflags" "glib-2.0" "glib-2.0 >= 2.32" did not exit successfully: exit code: 1
--- stderr
Package glib-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing glib-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'glib-2.0' found Package glib-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing glib-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'glib-2.0' found

warning: build failed, waiting for other jobs to finish...
error: failed to compile mumd v0.3.0, intermediate artifacts can be found at /tmp/cargo-install3kZc2w

Caused by:
build failed
pi@raspberrypi:~/mum $

Tests

At least some would be nice. We can at least simulate received packages and test the resulting state.

Tests

We desperately need them.

We should be able to write audio data into a [f32; N] and compare, but it'll be hard to check microphone and speaker output automatically.

We could run two instances and stream known audio between them and see that mute/deafen works. Here we can yoink the output buffer and see if audio reaches the other side as expected.

Don't lock state if we don't actually need access to state

Sometimes we use an Arc<Mutex<State>> as a way of passing around fields that are completely separate from other parts of the state. These should be reworked since they are potential deadlocks as well as a bit too close to monolithic.

The following is an example but more such locks probably exist.

Originally posted by @sornas in #58 (comment)

Tokio 1.0

Currently waiting on some dependency.

error[E0603]: module `export` is private

Compiling futures v0.3.13
Compiling toml v0.5.8
Compiling bincode v1.3.2
Compiling ipc-channel v0.14.1
Compiling mumlib v0.3.0
error[E0603]: module export is private
--> /home/pi/.cargo/registry/src/github.com-1ecc6299db9ec823/mumlib-0.3.0/src/error.rs:1:12
|
1 | use serde::export::Formatter;
| ^^^^^^

error[E0603]: module export is private
--> /home/pi/.cargo/registry/src/github.com-1ecc6299db9ec823/mumlib-0.3.0/src/state.rs:1:12
|
1 | use serde::export::Formatter;
| ^^^^^^

error: aborting due to 2 previous errors

For more information about this error, try rustc --explain E0603.
error: could not compile mumlib.
warning: build failed, waiting for other jobs to finish...
^C Building [=====================================================> ] 173/175

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.