Jetsever开源项目学习(三)Session学习

package org.menacheri.jetserver.app;

import java.util.List;

import org.menacheri.jetserver.communication.MessageSender;
import org.menacheri.jetserver.communication.MessageSender.Fast;
import org.menacheri.jetserver.communication.MessageSender.Reliable;
import org.menacheri.jetserver.event.Events;
import org.menacheri.jetserver.event.Event;
import org.menacheri.jetserver.event.EventDispatcher;
import org.menacheri.jetserver.event.EventHandler;

public interface Session
{
    /**
     * session status types
     */
    enum Status
    {
        NOT_CONNECTED, CONNECTING, CONNECTED, CLOSED
    }

    Object getId();

    void setId(Object id);

    void setAttribute(String key, Object value);

    Object getAttribute(String key);

    void removeAttribute(String key);

    void onEvent(Event event);

    EventDispatcher getEventDispatcher();

    boolean isWriteable();

    void setWriteable(boolean writeable);

    /**
     * A session would not have UDP capability when created. Depending on the
     * network abilities of the client, it can request UDP communication to be
     * enabled with the LOGIN_UDP and CONNECT_UDP events of the {@link Events}
     * class. Once UDP is enabled this flag will be set to true on the session.
     *
     * @return Returns true if the a UDP {@link MessageSender} instance is
     *         attached to this session, else false.
     */
    boolean isUDPEnabled();

    /**
     * A session would not have UDP capability when created. Depending on the
     * network abilities of the client, it can request UDP communication to be
     * enabled with the LOGIN_UDP and CONNECT_UDP events of the {@link Events}
     * class. Once UDP {@link MessageSender} instance is attached to the
     * session, this method should be called with flag to true to signal that
     * the session is now UDP enabled.
     *
     * @param isEnabled
     *            Should be true in most use cases. It is used to signal that
     *            the UDP {@link MessageSender} has been attached to session.
     */
    void setUDPEnabled(boolean isEnabled);

    boolean isShuttingDown();

    long getCreationTime();

    long getLastReadWriteTime();

    void setStatus(Status status);

    Status getStatus();

    boolean isConnected();

    void addHandler(EventHandler eventHandler);

    void removeHandler(EventHandler eventHandler);

    List<EventHandler> getEventHandlers(int eventType);

    void close();

    public abstract void setUdpSender(Fast udpSender);

    public abstract Fast getUdpSender();

    public abstract void setTcpSender(Reliable tcpSender);

    public abstract Reliable getTcpSender();
}
时间: 2024-10-24 23:07:19

Jetsever开源项目学习(三)Session学习的相关文章

开源项目Material Calendar View 学习记录 (一)

开源项目Material Calendar View 学习记录 Github: https://github.com/prolificinteractive/material-calendarview README.md 中文翻译: Material Calendar View将Android CalendarView 的Material Design风格向后移植.其目标是拥有Material的视觉和使用效果,而不是完全依赖于平台的实现. 0.8.0版本的主要变更 此视图现在对布局参数的响应更好

Android开源项目第三篇——优秀项目篇

本文为那些不错的Android开源项目第三篇——优秀项目篇,主要介绍那些还不错的完整Android项目. Android开源项目系列汇总已完成,包括: Android开源项目第一篇——个性化控件(View)篇 Android开源项目第二篇——工具库篇 Android开源项目第三篇——优秀项目篇 Android开源项目第四篇——开发及测试工具篇 Android开源项目第五篇——优秀个人和团体篇 记录的项目主要依据是项目有意思或项目分层规范比较好. Linux 项目地址:https://github

转__Android开源项目(三 完结篇)

http://www.csdn.net/article/2013-05-21/2815370-Android-open-source-projects-finale/1 截至目前,在GitHub“最受欢迎的开源项目”系列文章中我们已介绍了40个Android开源项目,对于如此众多的项目,你是Mark.和码友分享经验还是慨叹“活到老要学到老”?今天我们将继续介绍另外34个Android开源项目. 此前,CSDN移动频道推出的GitHub平台上“最受欢迎的开源项目”系列文章引发了许多读者的热议,在“

GitHub上不错的Android开源项目(三)

收集相关系列资料,自己用作参考,练习和实践.小伙伴们,总有一天,你也能写出 Niubility 的 Android App :-) GitHub上不错的Android开源项目(一):http://www.cnblogs.com/haochuang/p/4676090.html GitHub上不错的Android开源项目(二):http://www.cnblogs.com/haochuang/p/4676092.html GitHub上不错的Android开源项目(三):http://www.cn

直接拿来用!最火的iOS开源项目(三)

41. DCIntrospect Introspect是由来自澳大利亚的Domestic Cat Software工作室在GitHub上发起的一个开源项目.Introspect是一个很小的工具集,主要用于帮助开发者调试使用UIKit框架构建的iOS用户界面,堪称是iOS界面调试神器. Introspect特别适合来做动态创建.运行时可更改.通过查找透明视图调整性能.不必重绘的视图等的UI布局.既可用于iPhone模拟器,也可直接在iOS设备上运行使用. 42. SVWebViewControll

Jetsever开源项目学习(三)Server学习

首先看一下org.menacheri.jetserver.server包 Server.java package org.menacheri.jetserver.server; import java.net.InetSocketAddress; import org.menacheri.jetserver.app.Session; public interface Server { public interface TransmissionProtocol{ } //内部接口,只有域没有方法

Jetsever开源项目学习(五)Concurrent学习

首先梳理一下整体的架构,总的来说就是一个生产—消费者的形式,建立在Executor framework上: 1.每一个Lane包含一个名字string和线程池(ExecutorService),线程池其实就相当于worker集合2.每一个Lane有一个计数器(AtomicInteger),用来记录进入这个Lane的session的数量,session集合其实就相当于相当于任务队列3.每一个GameRoom属于一个Lane(也就是一个Lane中可以有多个GameRoom).每当添加一个新的sess

Jetsever开源项目学习(二)架构学习—— Jetserver internal details and how it works.

Jet Server - architecture and internal details This section outlines how data flows through jet server, the important classes and interfaces and also which ones need to be extended by users to write their game logic, receive events and so on. If you

ios GitHub上比较不错的开源项目,有时间可以学习下

1.ReactiveCocoa:ReactiveCocoa/ReactiveCocoa · GitHub: GitHub自家的函数式响应式编程泛型的Objective-C实现,名字听着很高大上,学习曲线确实也比较陡,但是绝对会改变你对iOS编程的认知,首推之. 2. Mantle:Mantle/Mantle · GitHub: 又是GitHub自家的产物,轻量级建模的首选,也可以很好的配合CoreData工作. 3. AFNetworking:AFNetworking/AFNetworking