Помогите разработка плагина с Netty, создание АПИ, помогите

Mukiroku

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Kukuroku
Здравствуйте, коротко о проблеме пишу плагины(Сервер+ Клиен) на экономику. Нужно с помощью метода как-то получить информацию в сервера. То есть

/-------> Нужны монеты Vasya ->--\
Клиент [Сервер]
| | |
API | Обработка
| \-----------<----Vasya 200<--/
200
|
3 плагин


Q) Т.К. netty работает асинхронно то у неё нет метода что-то получить, есть эвенты, и когда клиент прослушивает что отправил сервер данные заносит в КАРТУ.

пример метода.

PHP:
  public static int getMoney(String name)
{
  [Отправка запроса к серверу]

  while(   [Если в мате нет Name]  ){
  //ждём пока не появится.
}
return МАПА.получить(Name);
}
Суть вопроса: стоит ли ждать пока сервер ответит циклом While или есть другой способ?

P.S. делал с Netty[/PHP]
 
Ну тебе этого не достаточно, эт простой экзампл юза listenablefuture
ААААА у меня мозг скоро взорвётся, нечего не понятно. просто скажу, можешь свой текст на русский перевести.
 
Так да?
PHP:
implements ListenableFuture<Boolean>
Вот методы
Код:
  [php]  public void addListener(Runnable runnable, Executor executor) {

    }

    public boolean cancel(boolean mayInterruptIfRunning) {
        return false;
    }

    public boolean isCancelled() {
        return false;
    }

    public boolean isDone() {
        return false;
    }

    public Boolean get() throws InterruptedException, ExecutionException {
        return null;
    }

    public Boolean get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
        return null;[/php]
    }
И что в методах писать?
 
Ну вас класс, как можно реализовать, хотя бы на пальцах.
PHP:
public class ClientHandler extends ChannelInboundHandlerAdapter implements ListenableFuture<Economick>{
    private ByteBuf buf;
    private static HashMap<String,Economick> list;



    static void loadMap(){
        list = new HashMap<String, Economick>();
        list.put("ttestf",new Economick("fd","fd",2,2,true, "ADD"));
    }
    static Economick getData(String name){


        if(list.containsKey(name)){
            Economick data = list.get(name);
            list.remove(name);
            return data;
        }else{
            return null;
        }
    }

    public static void putEco(Economick e){
        list.put(e.getName(), e);
    }

    @Override
    public void handlerAdded(ChannelHandlerContext ctx) {
        buf = ctx.alloc().buffer(4); // (1)
    }

    @Override
    public void handlerRemoved(ChannelHandlerContext ctx) {
        buf.release(); // (1)
        buf = null;
    }


    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) {
        ByteBuf m = (ByteBuf) msg;
        String  s= m.toString(Charset.forName("UTF8"));
        for(String q : s.split(" /$/ ")){
            String[] type = q.split(" /%/ ");
           Load.getLoader(type[0]).event(type[1]);
        }

        buf.writeBytes(m); // (2)
        m.release();
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        cause.printStackTrace();
        ctx.close();
    }


    public void addListener(Runnable runnable, Executor executor) {

    }

    public boolean cancel(boolean mayInterruptIfRunning) {
        return false;
    }

    public boolean isCancelled() {
        return false;
    }

    public boolean isDone() {
        return false;
    }

    public Economick get() throws InterruptedException, ExecutionException {
        return null;
    }

    public Economick get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
        return null;
    }
}
 
Я просто уточнить.
CompletableFuture наследует(или что типо) ListenableFuture?
Можно попробовать использовать
CompletableFuture?
 
Я просто уточнить.
CompletableFuture наследует(или что типо) ListenableFuture?
Можно попробовать использовать
CompletableFuture?
ListenableFuture интерфейс от гуава, completablefuture от явы самой. По идеи с ListenableFuture тебе было бы легче работать для таких целей, но можешь и комплитэбл юзать
 
ListenableFuture интерфейс от гуава, completablefuture от явы самой. По идеи с ListenableFuture тебе было бы легче работать для таких целей, но можешь и комплитэбл юзать
До меня не доходит как это сделать, что-бы главный поток не останавливался , Всё что я могу придумать это цикл пока результат не появится.
 
Просто спрошу, не хочу в коде копаться, что твой плагин может, или это API, то что api может?
Гуишка с серверами готовая есть, в качестве примера. Сервера разделяются через мотд.
В целом это готовый сокет сервер-клиент.
 
Последнее редактирование:
Назад
Верх