📄 replicationdynamicslavestorageimpl.cs
字号:
namespace Perst.Impl
{
using System;
using System.Net;
using System.Net.Sockets;
using Perst;
public class ReplicationDynamicSlaveStorageImpl : ReplicationSlaveStorageImpl
{
public ReplicationDynamicSlaveStorageImpl(string host, int port)
{
this.host = host;
this.port = port;
}
public override void Open(IFile file, int pagePoolSize)
{
initialized = false;
prevIndex = -1;
outOfSync = true;
base.Open(file, pagePoolSize);
}
protected override Socket GetSocket()
{
if (opened)
{
throw new StorageError(StorageError.ErrorCode.CONNECTION_FAILURE);
}
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
#if NET_FRAMEWORK_20
foreach (IPAddress ip in Dns.GetHostEntry(host).AddressList)
#else
foreach (IPAddress ip in Dns.Resolve(host).AddressList)
#endif
{
try
{
socket.Connect(new IPEndPoint(ip, port));
if (socket.Connected)
{
return socket;
}
}
catch (SocketException) {}
}
return null;
}
protected string host;
protected int port;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -