LINUX.ORG.RU

История изменений

Исправление Sadler, (текущая версия) :

Делись :)

Не, сначала либа должна достаточно вырасти, а то мало кому будет интересна. Сейчас она умеет только:

  • bind-ить midi-out в 2 строки и играть на него.
  • multithreaded TCP server в 3 строки + 1 класс.
  • классы для нот, аккордов, тональностей.
  • класс GameWindow для создания окна с Canvas, двойной буферизацией и всеми необходимыми listener'ами в несколько строк.
  • несколько простых классов для алгоритмов, вроде поиска максимального объекта.
  • static-класс Console для удобного чтения консольного ввода (содержит поля in, out, err).
  • static-класс Logger с функцией log(Exception e) выводящей дефолтовый лог об исключении. Думаю, надо перекинуть в Console.
  • WaveFile, умеющий читать и писать wave-файлы как множество float (этот класс не мой, просто очень понравился).

    Так выглядит абстрактный кусок public-api сервера, например:

    public abstract class TCPServer {
        public abstract TCPServerConnection onConnecting(Socket socket);    
        public abstract void onConnected(TCPServerConnection connection);    
        public abstract void onData(TCPServerConnection connection);
        public abstract void onDisconnect(TCPServerConnection connection);    
        public abstract void onError(Exception e);
        public abstract boolean onStop();
    }
    

    Исключения не throw-аются, а передаются как результат функций, либо в специальную функцию onError (для сервера). Вызвано тем, что метод намного более компактный, нежели классический.

Исходная версия Sadler, :

Делись :)

Не, сначала либа должна достаточно вырасти, а то мало кому будет интересна. Сейчас она умеет только:

  • bind-ить midi-out в 2 строки и играть на него.
  • multithreaded TCP server в 3 строки + 1 класс.
  • классы для нот, аккордов, тональностей.
  • класс GameWindow для создания окна с Canvas, двойной буферизацией и всеми необходимыми listener'ами в несколько строк.
  • несколько простых классов для алгоритмов, вроде поиска максимального объекта.
  • static-класс Console для удобного чтения консольного ввода (содержит поля in, out, err).
  • static-класс Logger с функцией log(Exception e) выводящей дефолтовый лог об исключении. Думаю, надо перекинуть в Console.
  • WaveFile, умеющий читать и писать wave-файлы как множество float (этот класс не мой, просто очень понравился).

    Так выглядит public-api сервера, например:

    public abstract class TCPServer {
        public abstract TCPServerConnection onConnecting(Socket socket);    
        public abstract void onConnected(TCPServerConnection connection);    
        public abstract void onData(TCPServerConnection connection);
        public abstract void onDisconnect(TCPServerConnection connection);    
        public abstract void onError(Exception e);
        public abstract boolean onStop();
    }
    

    Исключения не throw-аются, а передаются как результат функций, либо в специальную функцию onError (для сервера). Вызвано тем, что метод намного более компактный, нежели классический.