public ClassConverter(Type type) { this.type = type; object[] attributes = type.GetCustomAttributes(typeof(TransferableAttribute), true); foreach (TransferableAttribute attr in attributes) { PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); var props = properties.Where(x => Attribute.GetCustomAttributes(x, typeof(DataAttribute)).Length > 0) .OrderBy(x => ((DataAttribute)Attribute.GetCustomAttributes(x, typeof(DataAttribute))[0]).Index); foreach (PropertyInfo p in props) { //Util.Log("name:" + f.Name); var dattrs = Attribute.GetCustomAttributes(p, typeof(DataAttribute)); foreach (var datt in dattrs) { parameters.Add(p); converters.Add(DataSerializer.GetConverter(p.PropertyType)); break; } } return; } throw new InvalidDataException("The class " + type.Name + " is not supported."); }
public IListConverter(Type type) { this.type = type; this.elementType = type.GetGenericArguments()[0]; converter = DataSerializer.GetConverter(elementType); }
public ComServer() { IsOpened = false; if (Global.UseSyncContextPost && Global.SyncContext == null) { Global.SyncContext = SynchronizationContext.Current; } AddChannel(new DataChannel <string>((short)PreservedChannelId.Login, QosType.Reliable, Compression.None, (node, data) => { node.UserName = data; if (OnConnected != null) { OnConnected(node); } Util.Log("SetUsername:" + node.UserName); })); AddChannel(new DataChannel <byte>((short)PreservedChannelId.Health, QosType.Unreliable, Compression.None, (node, data) => {})); beaconConverter = DataSerializer.GetConverter(typeof(string)); }
public DataChannel( short channelID, QosType qos, Compression compression, Encryption encryption, ReceivedHandler onReceived, CheckMode checkMode = CheckMode.Sequre ) { ChannelID = channelID; Qos = qos; Compression = compression; Encryption = encryption; OnReceived += onReceived; CheckMode = checkMode; converter = DataSerializer.GetConverter(typeof(T)); if (Compression == Compression.LZ4) { byteArrayConverter = DataSerializer.GetConverter(typeof(byte[])); } if (Encryption == Encryption.Rsa || Encryption == Encryption.Aes) { encArrayConverter = DataSerializer.GetConverter(typeof(byte[])); } }
public IDictionaryConverter(Type type) { this.type = type; this.keyType = type.GetGenericArguments()[0]; this.valueType = type.GetGenericArguments()[1]; keyConverter = DataSerializer.GetConverter(keyType); valueConverter = DataSerializer.GetConverter(valueType); }
public DataChannel(short channelID, QosType qos, Compression compression, ReceivedHandler onReceived) { ChannelID = channelID; Qos = qos; Compression = Compression; OnReceived += onReceived; converter = DataSerializer.GetConverter(typeof(T)); lz4converter = DataSerializer.GetConverter(typeof(byte[])); }
public ComServer(bool userSyncContext = true) { IsOpened = false; this.userSyncContext = userSyncContext; AddChannel(new DataChannel <IssueIdData>((short)PreservedChannelId.IssueId, QosType.Reliable, Compression.None, Encryption.None, (node, data) => { OnIssueId(node, data); })); AddChannel(new DataChannel <byte[]>((short)PreservedChannelId.Health, QosType.Unreliable, Compression.None, Encryption.None, (node, data) => { byte[] decrypted = DecrypteTmpKey(data); if (node.TmpKey != null && node.TmpKey.SequenceEqual(decrypted)) { node.HealthLostCount = 0; } else { node.TmpKey = null; } })); AddChannel(new DataChannel <IssueIdData>((short)PreservedChannelId.UdpNotify, QosType.Unreliable, Compression.None, Encryption.None, (node, data) => { })); AddChannel(new DataChannel <int>((short)PreservedChannelId.UdpNotifyAck, QosType.Reliable, Compression.None, Encryption.None, (node, data) => { })); AddChannel(new DataChannel <AesKeyPair>((short)PreservedChannelId.KeyExchange, QosType.Reliable, Compression.None, Encryption.Rsa, (node, data) => { OnKeyExchange(node, data); })); AddChannel(new DataChannel <int>((short)PreservedChannelId.KeyExchangeAck, QosType.Reliable, Compression.None, Encryption.None, (node, data) => { })); beaconConverter = DataSerializer.GetConverter(typeof(string)); healthTimer = new System.Timers.Timer(healthIntervalMs); healthTimer.Elapsed += OnHealthCheck; removeNodeCheckTimer = new System.Timers.Timer(removeNodeCheckIntervalMs); removeNodeCheckTimer.Elapsed += OnRemoveNodeCheck; }
public RawDataChannel( short channelID, QosType qos, Compression compression, ReceivedHandler onReceived, CheckMode checkMode = CheckMode.Sequre ) { ChannelID = channelID; Qos = qos; Compression = compression; OnReceived += onReceived; CheckMode = checkMode; converter = DataSerializer.GetConverter(typeof(T)); lz4converter = DataSerializer.GetConverter(typeof(byte[])); }
public ArrayConverter(Type type) { this.type = type; converter = DataSerializer.GetConverter(type.GetElementType()); }