addParameter(Arguments params)方法,這樣在具體消息中直接重寫這個方法,來添加具體的參數(shù)。是不是很方便?^_^,具體協(xié)議還需要實現(xiàn)的兩個方法分別是:getLabel和doTest。第一個方法時用于報告顯示的請求名字,一般定義為消息名字+“Label”OKay。第二個方法是我們重點重寫的方法,這里再貼段代碼,是一個具體消息的實現(xiàn):
1 package tea.client;
2
3 import com.google.protobuf.InvalidProtocolBufferException;
4 import com.google.protobuf.MessageLite;
5 import tea.client.network.BaseSample;
6 import tea.common.network.ClientMessage;
7 import tea.common.network.RPC.HeartBeat_C2S;
8 import tea.common.network.RPC.HeartBeat_S2C;
9
10 /**
11 * @author Teaey
12 * @creation 2012-8-24
13 */
14 public class HeartBeatSample extends BaseSample
15 {
16 @Override
17 public MessageLite doTest() throws InvalidProtocolBufferException
18 {
19 HeartBeat_C2S.Builder request = HeartBeat_C2S.newBuilder();
20 request.setTimestamp(System.currentTimeMillis());
21 ClientMessage cm = new ClientMessage();
22 cm.setContent(request.build().toByteArray());
23 cm.setName("HeartBeat");
24 ClientMessage sm = client.sendWaitBack(cm);
25 HeartBeat_S2C response = HeartBeat_S2C.parseFrom(sm.getContent());
26 return response;
27 }
28 @Override
29 public String getLabel()
30 {
31 return "HeartBeatSample";
32 }
33 }
可以看到doTest的工作是封裝請求,并拿到父類的client發(fā)送,然后返回響應(yīng)(send方式返回null),Okay,大功告成。