什么是Platform类?
public final class Platform extends java.lang.object
是Swirlds的平台,运行应用,处理同步信息和达成共识。如果多个成员在同一个电脑上运行,每个成员都有自己的Platform对象。在同一个电脑上的Platform对象都是由同一个Browser对象创建和启动的,Browser是程序的入口Main类。
方法概要
static void beep()
播放嘟的声音。
static void beep(int pitch, int velocity, int duration)
播放嘟的声音。
static void click()
播放点击鼠标的声音
Console createConsole(boolean visible)
创建带有文字控制台的新窗口,大小和位置为推荐值,并包含Swirlds菜单。
boolean createTransaction(byte[] trans)
SwirldMain 对象调用这个方法创建一个新交易。
javax.swing.JFrame createWindow(boolean visible)
创建新窗口,大小和位置为推荐值,并包含Swirlds菜单。
java.time.Instant estimateTime()
估算一个交易最终达成共识的时间戳, 如果这个交易通过调用 createTransaction()刚被创建。
java.lang.String getAbout()
得到程序“关于我们”的最新字符串
Address getAddress()
得到运行这个Platform的成员地址。
Event[] getAllEvents()
得到哈希图中所有事件的数组。
int getNumMembers()
得到参与共识的成员数量。
java.lang.String[] getParameters()
得到Platform对象创建时被赋值的参数,如在config.txt中配置的参数。
long getSleepAfterSync()
得到Platform在传言同步启动后延迟的毫秒数。
SwirldState[] getState()
SwirldMain 对象可以调用这个方法得到当前的state对象。
Statistics[] getStats()
得到监控和报告网络与同步的统计对象。
byte[] getSwirldId()
得到当前swirld的ID
void setAbout(java.lang.String about)
SwirldMain 调用这个方法设置“关于”菜单显示的字符串
void setSleepAfterSync(long delay)
设置Platform在传言同步启动后延迟的毫秒数。
从接口 com.swirlds.platform.FastCopyable继承的方法
equals
getClass
hashCode
notify
notifyAll
toString
wait
wait
wait
方法详解
getSwirldId
public byte[] getSwirldId()
得到当前swirld的ID。 一个应用可以创建多个不同swirld(所谓的网络,账本或共享世界)。它是swirld的唯一识别编号。
Returns:
swirld的ID编号
getStats
public Statistics getStats()
得到监控和报告网络与同步的统计对象。
返回:
Platform对象所关联的统计对象。
getSleepAfterSync
public long getSleepAfterSync()
得到Platform在传言同步启动后延迟的毫秒数。默认值是0,但可以改变数值来减慢系统。用于系统测试。
返回:
延迟的毫秒数。
setSleepAfterSync
public void setSleepAfterSync(long delay)
设置Platform在传言同步启动后延迟的毫秒数。 默认值是0,但可以改变数值来减慢系统。用于系统测试。
参数:
delay - 延迟的毫秒数
setAbout
public void setAbout(java.lang.String about)
SwirldMain调用这个方法设置当用户在窗口右上角点击“关于”菜单后显示的字符串。推荐字符串是一个包含应用名称,版本号和年份的简短字符串。
参数:
about - 点击菜单“关于”后 窗口显示内容
getAbout
public java.lang.String getAbout()
得到程序“关于我们”的最新字符串
返回:
菜单“关于”的显示内容
getParameters
public java.lang.String[] getParameters()
得到Platform对象创建时被赋值的参数,如在config.txt中配置的参数。
返回:
参数数组
createTransaction
public boolean createTransaction(byte[] trans)
SwirldMain 对象调用这个方法创建一个新交易。这个新创建的交易内嵌于一个新创建的事件,并在同步过程发送给所有其他成员。同时它也会被发送给swirldState对象。
hintIDs 是建议系统尽快与IDhintIDs的成员同步。通过这个来保证这个交易能快速到达紧急需要它的成员。这只是一个提示,不能保证Platform对象完全这样做。
如果交易被创建的快与能被处理的速度,最终会形成大的积压。这时,调用createTransaction会返回失败,并不会创建交易。
一个交易最多1024个字节,如果长度超过1024,返回失败,并不会创建交易。
参数:
trans - 被创建的交易,由swirld选择的方式编码t。
返回:
true 如果成功
estimateTime
public java.time.instant estimateTime()
估算一个交易最终达成共识的时间戳, 如果这个交易通过调用 createTransaction()刚被创建。一个实时应用,例如游戏,通常在调用estTime()后重画屏幕,把屏幕上事物渲染成它将要成为的状态。
返回:
估算的时间
getState
public SwirldState getState()
SwirldMain 对象可以调用这个方法得到当前的state对象。 SwirldMain需要经常调用这个方法,这样它总是能使用最新的State对象。因为Platform将会经常改变当前的State对象。
SwirldMain 必须确保对State对象的访问时同步的。所以要么State的getters方法和setters标记为“synchronized”,要么SwirldMain从State读取状态时,把调用包装在synchronized(…){…} 块中。
返回:
当前state对象
getAllEvents
public Event[] getAllEvents()
得到哈希图中所有事件的数组。这个方法运行缓慢,所以不要频繁调用。返回的数组是一个浅复制,因此调用者可以改变它,其它 线程不会改变它。然而,它所引用的这些事件可能有字段被其它线程修改,不一定是被调用方修改。这个数组中会首先包含共识事件(按共识次序),然后是非共识事件(按收到时间)。
返回:
所有事件的数组
getAddress
public Address getAddress()
得到Platform上所有运行成员的地址.
返回:
the Address
createConsole
public Console createConsole(boolean visible)
创建带有文字控制台的新窗口,大小和位置为推荐值,并包含Swirlds菜单。
参数:
visible - 窗口是否初始化为可见?如果否,可以以后设置setVisible(true) 使它可见。
返回:
新创建的窗口
createWindow
public javax.swing.JFrame createWindow(boolean visible)
创建新窗口,大小和位置为推荐值,并包含Swirlds菜单。
参数:
visible - 窗口是否初始化为可见?如果否,可以以后设置setVisible(true) 使它可见。
返回:
新创建的窗口
click
public static void click()
播放点击鼠标的声音
beep
public static void beep()
播放嘟的声音。 它是中音C,一半音量,持续20毫秒。
beep
public static void beep(int pitch, int velocity, int duration)
播放嘟的声音。
参数:
pitch - 音高, 从 0 到 127, 其中 60 是中音 C, 61 是 C#, 以此类推.
velocity - 音符播放的音量,0 静音, 127 最大声音.
duration - 声音播放的毫秒数
getNumMembers
public int getNumMembers()
得到参与共识的成员数量。也就是当前地址簿的大小。
返回:
成员数量