tenet.protocol.datalink.SEther

## 类 SimpleEthernetDatalink

- java.lang.Object
- - tenet.protocol.interrupt.InterruptObject
  - - tenet.protocol.datalink.SEther.SimpleEthernetDatalink

- 所有已实现的接口:
    IDataLinkLayer, IProtocol, IStateSetable, ICaller, IReceiver, IClient<MediumAddress>, IRegistryableService<java.lang.Integer>, IService<java.lang.Integer>

      public class SimpleEthernetDatalink
      extends InterruptObject
      implements IDataLinkLayer, IRegistryableService<java.lang.Integer>

  简易实现Ethernet的逻辑，上层协议的特征域为整数（即ethertype） 其他的基于Ethernet的对数据链路的拓展均继承这个类
  版本:
    09.01
  作者:
    meilunsheng

- - ### 嵌套类概要

    - ### 从接口继承的嵌套类/接口 tenet.protocol.datalink.IDataLinkLayer

      `IDataLinkLayer.ReceiveParam, IDataLinkLayer.ReceiveStatus, IDataLinkLayer.TransmitParam, IDataLinkLayer.TransmitStatus`

  - ### 字段概要

    - ### 从类继承的字段 tenet.protocol.interrupt.InterruptObject

      `m_timeout`

    - ### 从接口继承的字段 tenet.protocol.datalink.IDataLinkLayer

      `INT_FRAME_RECEIVE, INT_FRAME_RECEIVE_READY, INT_FRAME_TRANSMIT, INT_FRAME_TRANSMIT_READY, INT_INTERFACE_DOWN, INT_INTERFACE_UP`

  - ### 构造器概要

    构造器
    构造器和说明
    `SimpleEthernetDatalink(MediumAddress m_mac)`

  - ### 方法概要

    方法
    限定符和类型 | 方法和说明
    --- | ---
    `void` | `attachTo(IService<?> service)` 绑定下层
    `void` | `detachFrom(IService<?> service)`
    `void` | `disable()` 禁用
    `void` | `dump()`
    `void` | `enable()` 使能
    `double` | `geDelay()`
    `java.lang.String` | `getIdentify()` 得到协议的标识
    `int` | `getMTU()` 获得MTU
    `java.lang.String` | `getName()` 返回对象的名称
    `MediumAddress` | `getUniqueID()`
    `boolean` | `isEnable()`
    `boolean` | `isLinkUp()` 判断设备是否处于接入状态
    `void` | `receiveFrame(FrameParamStruct param)` 请求接收一个帧。
    `void` | `registryClient(IClient<java.lang.Integer> client)` 注册上层协议
    `void` | `setDelay(double m_delay)`
    `void` | `setMTU(int m_MTU)`
    `void` | `setUniqueID(MediumAddress id)`
    `void` | `transmitFrame(FrameParamStruct param)` 请求发送一个帧.
    `void` | `unregistryClient(IClient<java.lang.Integer> client)`
    `void` | `unregistryClient(java.lang.Integer id)`

    - ### 从类继承的方法 tenet.protocol.interrupt.InterruptObject

      `delayInterrupt, hasWaiter, interrupt, onRecall, resetInterrupt, wait`

    - ### 从类继承的方法 java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 构造器详细资料

    - #### SimpleEthernetDatalink

          public SimpleEthernetDatalink(MediumAddress m_mac)

  - ### 方法详细资料

    - #### attachTo

          public void attachTo(IService<?> service)

      绑定下层
      指定者:
        `attachTo` 在接口中 `IClient<MediumAddress>`
      参数:
        `service` - 必须为 INode或者Link

    - #### getMTU

          public int getMTU()

      从接口复制的说明: `IDataLinkLayer`
      获得MTU
      指定者:
        `getMTU` 在接口中 `IDataLinkLayer`
      返回:
        MTU

    - #### setMTU

          public void setMTU(int m_MTU)

    - #### geDelay

          public double geDelay()

    - #### setDelay

          public void setDelay(double m_delay)

    - #### detachFrom

          public void detachFrom(IService<?> service)

      指定者:
        `detachFrom` 在接口中 `IClient<MediumAddress>`

    - #### disable

          public void disable()

      禁用
      指定者:
        `disable` 在接口中 `IStateSetable`

    - #### dump

          public void dump()

      指定者:
        `dump` 在接口中 `IProtocol`

    - #### enable

          public void enable()

      使能
      指定者:
        `enable` 在接口中 `IStateSetable`

    - #### getIdentify

          public java.lang.String getIdentify()

      从接口复制的说明: `IProtocol`
      得到协议的标识
      指定者:
        `getIdentify` 在接口中 `IProtocol`
      返回:
        协议的标识

    - #### getName

          public java.lang.String getName()

      从接口复制的说明: `IProtocol`
      返回对象的名称
      指定者:
        `getName` 在接口中 `IProtocol`
      返回:
        对象名称

    - #### getUniqueID

          public MediumAddress getUniqueID()

      指定者:
        `getUniqueID` 在接口中 `IClient<MediumAddress>`

    - #### isEnable

          public boolean isEnable()

      指定者:
        `isEnable` 在接口中 `IStateSetable`

    - #### isLinkUp

          public boolean isLinkUp()

      从接口复制的说明: `IDataLinkLayer`
      判断设备是否处于接入状态
      指定者:
        `isLinkUp` 在接口中 `IDataLinkLayer`
      返回:
        true 接入状态； false 非接入状态

    - #### receiveFrame

          public void receiveFrame(FrameParamStruct param)

      从接口复制的说明: `IDataLinkLayer`
      请求接收一个帧。
      指定者:
        `receiveFrame` 在接口中 `IDataLinkLayer`
      参数:
        `param` - 接收参数
        这里要求param的ethertype通常必须为协议对应的ethertype，其他参数对接收没有实际作用。但该参数在非正常接收的情况下可以通过中断完整返回。
      另请参阅:
        `FrameParamStruct`, `IDataLinkLayer.ReceiveParam`, `IDataLinkLayer.ReceiveStatus`, `IDataLinkLayer.INT_FRAME_RECEIVE`, `IDataLinkLayer.INT_FRAME_RECEIVE_READY`

    - #### registryClient

          public void registryClient(IClient<java.lang.Integer> client)

      注册上层协议
      指定者:
        `registryClient` 在接口中 `IRegistryableService<java.lang.Integer>`
      参数:
        `client` -

    - #### setUniqueID

          public void setUniqueID(MediumAddress id)

      指定者:
        `setUniqueID` 在接口中 `IClient<MediumAddress>`

    - #### transmitFrame

          public void transmitFrame(FrameParamStruct param)

      从接口复制的说明: `IDataLinkLayer`
      请求发送一个帧.
      指定者:
        `transmitFrame` 在接口中 `IDataLinkLayer`
      参数:
        `param` - 发送参数
      另请参阅:
        `FrameParamStruct`, `IDataLinkLayer.TransmitParam`, `IDataLinkLayer.TransmitStatus`, `IDataLinkLayer.INT_FRAME_TRANSMIT`, `IDataLinkLayer.INT_FRAME_TRANSMIT_READY`

    - #### unregistryClient

          public void unregistryClient(IClient<java.lang.Integer> client)

      指定者:
        `unregistryClient` 在接口中 `IRegistryableService<java.lang.Integer>`

    - #### unregistryClient

          public void unregistryClient(java.lang.Integer id)

      指定者:
        `unregistryClient` 在接口中 `IRegistryableService<java.lang.Integer>`