Skip to content

Commit e28313b

Browse files
committed
up
1 parent 9416afc commit e28313b

File tree

1 file changed

+34
-28
lines changed

1 file changed

+34
-28
lines changed

NetworkInterface.cs

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,17 @@ public class NetworkInterface
2626
PacketReceiver _packetReceiver = null;
2727
PacketSender _packetSender = null;
2828

29-
// for connect
30-
string _connectIP;
31-
int _connectPort;
32-
ConnectCallback _connectCB;
33-
object _userData;
29+
public class ConnectState
30+
{
31+
// for connect
32+
public string connectIP = "";
33+
public int connectPort = 0;
34+
public ConnectCallback connectCB = null;
35+
public object userData = null;
36+
public Socket socket = null;
37+
public NetworkInterface networkInterface = null;
38+
public string error = "";
39+
}
3440

3541
public NetworkInterface()
3642
{
@@ -46,11 +52,6 @@ public void reset()
4652
_socket = null;
4753
_packetReceiver = null;
4854
_packetSender = null;
49-
50-
_connectIP = "";
51-
_connectPort = 0;
52-
_connectCB = null;
53-
_userData = null;
5455
}
5556

5657
public Socket sock()
@@ -68,45 +69,46 @@ public bool valid()
6869
return ((_socket != null) && (_socket.Connected == true));
6970
}
7071

71-
public void _onConnectStatus(string error)
72+
public void _onConnectStatus(ConnectState state)
7273
{
7374
KBEngine.Event.deregisterIn(this);
7475

75-
bool success = (error == "" && valid());
76-
76+
bool success = (state.error == "" && valid());
7777
if(success)
7878
{
79-
Dbg.DEBUG_MSG(string.Format("NetworkInterface::_onConnectStatus(), connect to {0} is success!", sock().RemoteEndPoint.ToString()));
79+
Dbg.DEBUG_MSG(string.Format("NetworkInterface::_onConnectStatus(), connect to {0} is success!", state.socket.RemoteEndPoint.ToString()));
8080
_packetReceiver = new PacketReceiver(this);
8181
_packetReceiver.startRecv();
8282
}
8383
else
8484
{
85-
Dbg.ERROR_MSG(string.Format("NetworkInterface::_onConnectStatus(), connect is error! ip: {0}:{1}, err: {2}", _connectIP, _connectPort, error));
85+
Dbg.ERROR_MSG(string.Format("NetworkInterface::_onConnectStatus(), connect is error! ip: {0}:{1}, err: {2}", state.connectIP, state.connectPort, state.error));
8686
}
8787

8888
Event.fireAll("onConnectStatus", new object[]{success});
8989

90-
if (_connectCB != null)
91-
_connectCB(_connectIP, _connectPort, success, _userData);
90+
if (state.connectCB != null)
91+
state.connectCB(state.connectIP, state.connectPort, success, state.userData);
9292
}
9393

9494
private static void connectCB(IAsyncResult ar)
9595
{
96+
ConnectState state = null;
97+
9698
try
9799
{
98100
// Retrieve the socket from the state object.
99-
NetworkInterface networkInterface = (NetworkInterface) ar.AsyncState;
101+
state = (ConnectState) ar.AsyncState;
100102

101103
// Complete the connection.
102-
if(networkInterface.sock() != null)
103-
networkInterface.sock().EndConnect(ar);
104+
state.socket.EndConnect(ar);
104105

105-
Event.fireIn("_onConnectStatus", new object[]{""});
106+
Event.fireIn("_onConnectStatus", new object[]{state});
106107
}
107108
catch (Exception e)
108109
{
109-
Event.fireIn("_onConnectStatus", new object[]{e.ToString()});
110+
state.error = e.ToString();
111+
Event.fireIn("_onConnectStatus", new object[]{state});
110112
}
111113
}
112114

@@ -125,10 +127,13 @@ public void connectTo(string ip, int port, ConnectCallback callback, object user
125127
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
126128
_socket.SetSocketOption (System.Net.Sockets.SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, KBEngineApp.app.getInitArgs().getRecvBufferSize() * 2);
127129

128-
_connectIP = ip;
129-
_connectPort = port;
130-
_connectCB = callback;
131-
_userData = userData;
130+
ConnectState state = new ConnectState();
131+
state.connectIP = ip;
132+
state.connectPort = port;
133+
state.connectCB = callback;
134+
state.userData = userData;
135+
state.socket = _socket;
136+
state.networkInterface = this;
132137

133138
Dbg.DEBUG_MSG("connect to " + ip + ":" + port + " ...");
134139

@@ -137,11 +142,12 @@ public void connectTo(string ip, int port, ConnectCallback callback, object user
137142

138143
try
139144
{
140-
_socket.BeginConnect(new IPEndPoint(IPAddress.Parse(ip), port), new AsyncCallback(connectCB), this);
145+
_socket.BeginConnect(new IPEndPoint(IPAddress.Parse(ip), port), new AsyncCallback(connectCB), state);
141146
}
142147
catch (Exception e)
143148
{
144-
Event.fireIn("_onConnectStatus", new object[]{e.ToString()});
149+
state.error = e.ToString();
150+
Event.fireIn("_onConnectStatus", new object[]{state});
145151
}
146152
}
147153

0 commit comments

Comments
 (0)