public void Write(BridgeType message, Action completed) { byte[] msg = CyberSerialization.Serialize(message); var data = new List <byte>(1 + 4 + Topic.Length + 4 + msg.Length); data.Add((byte)BridgeOp.Publish); data.Add((byte)(Topic.Length >> 0)); data.Add((byte)(Topic.Length >> 8)); data.Add((byte)(Topic.Length >> 16)); data.Add((byte)(Topic.Length >> 24)); data.AddRange(Topic); data.Add((byte)(msg.Length >> 0)); data.Add((byte)(msg.Length >> 8)); data.Add((byte)(msg.Length >> 16)); data.Add((byte)(msg.Length >> 24)); data.AddRange(msg); Instance.SendAsync(data.ToArray(), completed); }
public void RegSubscriber <DataType, BridgeType>(IBridgePlugin plugin, Func <BridgeType, DataType> converter) { plugin.AddType <DataType>(typeof(BridgeType).Name); plugin.AddSubscriberCreator <DataType>( (instance, topic, callback) => (instance as CyberBridgeInstance).AddSubscriber <BridgeType>(topic, rawData => callback(converter(CyberSerialization.Unserialize <BridgeType>(rawData))) ) ); }