Skip to content

bear43/education-3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Модуль 3. Стандартная библиотека JDK

Для семинара была выбрана тема написания KV хранилища на основе log-append файлов (Подробнее, А ещё тут).

Реализация сервера содержит работу с файлами log-append типа, однако не содержит главного - обработку клиентских соединений через селекторы. Необходимо реализовать интерфейсы Server, ServerBuilder.
Реализация клиента также не содержит логики подключения к серверу, однако предоставляет интерфейсы Client, ClientBuilder, реализовав которые всё должно завестись.

Заготовки кода серверной части kv-storage:

public interface Server {
    void start() throws IOException;
}

public interface ServerBuilder {
    ServerBuilder setSettings(ServerSettings settings);
    ServerSettings getSettings();
    Server build();
}

Заготовки кода клиента kv-storage-client:

public interface Client extends Closeable {
    void start() throws IOException;
    Optional<byte[]> waitResponse() throws IOException;
    void send(byte[] bytes) throws IOException;
}

public interface ClientBuilder {
    Configuration getConfiguration();
    void setConfiguration(Configuration configuration);
    Client create();
}

Клиент и сервер содержат в себе реализации-заглушки (StubServer, StubServerBuilder, StubClient, StubClientBuilder), выбрасывающие сообщение "Unsupported operation" в System.err.
Также можно самостоятельно реализовать интерфейсы для работы с файлами:

public interface DataIn {
    Collection<DataRecord> read() throws IOException;
    DataRecord read(int offset) throws IOException;
    boolean exists();
}
public interface DataOut {
    DataOut write(Collection<DataRecord> records) throws IOException;
    DataOut create() throws IOException;
    DataOut delete();
}
public interface DataInfoIn {
    InfoRecord read() throws IOException, ClassNotFoundException;
    boolean exists();
}
public interface DataInfoOut {
    DataInfoOut write(InfoRecord infoRecord) throws IOException;
    DataInfoOut create() throws IOException;
    DataInfoOut delete();
}

Ветка master не содержит реализации клиент-серверных интерфейсов, лишь стабы.
Ветка impl с реализацией.

About

Third seminar's code

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages