-
Notifications
You must be signed in to change notification settings - Fork 1
/
TCMessage.java
123 lines (118 loc) · 3.33 KB
/
TCMessage.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* @author asus
*/
public class TCMessage {
public int m_nOriginatorId;
public int m_nSenderId;
public int m_nSeqNo;
public ArrayList<Integer> m_lstMS;
public TCMessage(int x_nOriginator, int x_nSenderId,int x_nSeqNo)
{
m_nOriginatorId = x_nOriginator;
m_nSenderId = x_nSenderId;
m_nSeqNo = x_nSeqNo;
m_lstMS = new ArrayList<>();
}
public TCMessage(String x_str)
{
m_nOriginatorId = -1;
m_nSenderId = -1;
m_nSeqNo = -1;
m_lstMS = new ArrayList<>();
FillFromString(x_str);
}
public String getMessage()
{
String msg="* ";
msg += "<" + m_nSenderId + ">";
msg += " TC ";
msg += "<" + m_nOriginatorId + ">";
msg += "<" + m_nSeqNo + ">";
msg += " MS ";
for(int i = 0 ; i < m_lstMS.size() ; i++)
{
msg +="<";
msg+= m_lstMS.get(i);
msg += ">";
}
return msg;
}
public void FillFromString(String x_strHello)
{
Pattern p = Pattern.compile("(<\\d+>)|TC|MS");
Matcher m = p.matcher(x_strHello);
String strWhichPart = "fromnbr";
boolean bSRCRead = false;
while(m.find())
{
if(m.group().equals("TC"))
{
strWhichPart = "TC";
}
else if(m.group().equals("MS"))
{
strWhichPart = "MS";
}
else
{
int nId = extractIntFromTag(m.group());
if (nId >= 0)
{
switch(strWhichPart)
{
case "fromnbr":
{
m_nSenderId = nId;
break;
}
case "TC":
{
if(!bSRCRead)
{
bSRCRead = true;
m_nOriginatorId = nId;
}
else
{
m_nSeqNo = nId;
}
break;
}
case "MS":
{
if(!m_lstMS.contains(nId))
m_lstMS.add(nId);
break;
}
}
}
}
}
}
private int extractIntFromTag(String x_strTag)
{
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(x_strTag);
int n = -1;
try
{
if(m.find())
{
n = Integer.parseInt(m.group(0));
}
}
catch(Exception ex)
{
}
return n;
}
}