This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static void WriteSerializerDictionary(ILGenerator il, Type type, | |
MethodInfo getSetGetMethod, LocalBuilder msLocal, | |
List<Action<ILGenerator>> actions) { | |
var arguments = type.GetGenericArguments(); | |
var valueType = arguments[0]; | |
var keyType = arguments[1]; | |
var keyValuePairType = genericKeyValuePairType.MakeGenericType(keyType, valueType); | |
var enumeratorLocal = il.DeclareLocal( | |
genericEnumeratorType.MakeGenericType(keyValuePairType)); | |
var entryLocal = il.DeclareLocal(keyValuePairType); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static void WriteSerializerClass(ILGenerator il, | |
MethodInfo getSetGetMethod, | |
Type type, int tag, LocalBuilder msLocal, | |
List<Action<ILGenerator>> actions) { | |
var isDefaultLabel = il.DefineLabel(); | |
var isDict = dictType.IsAssignableFrom(type); | |
var isList = listType.IsAssignableFrom(type); | |
var isClass = !isDict && !isList; | |
var ms2Local = il.DeclareLocal(MemoryStreamType); | |
var bufferLocal = il.DeclareLocal(ByteArrayType); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static void WriteSerializerDictionary(ILGenerator il, Type type, | |
MethodInfo getSetGetMethod, LocalBuilder msLocal, | |
List<Action<ILGenerator>> actions) { | |
var arguments = type.GetGenericArguments(); | |
var valueType = arguments[0]; | |
var keyType = arguments[1]; | |
var keyValuePairType = genericKeyValuePairType.MakeGenericType(keyType, valueType); | |
var enumeratorLocal = il.DeclareLocal( | |
genericEnumeratorType.MakeGenericType(keyValuePairType)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static void WriteSerializerDictionary(ILGenerator il, Type type, | |
MethodInfo getSetGetMethod, LocalBuilder msLocal, | |
List<Action<ILGenerator>> actions) { | |
var arguments = type.GetGenericArguments(); | |
var valueType = arguments[0]; | |
var keyType = arguments[1]; | |
var keyValuePairType = genericKeyValuePairType.MakeGenericType(keyType, valueType); | |
var enumeratorLocal = il.DeclareLocal( | |
genericEnumeratorType.MakeGenericType(keyValuePairType)); | |
var entryLocal = il.DeclareLocal(keyValuePairType); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static void WriteSerializerList(ILGenerator il, Type type, | |
MethodInfo getSetGetMethod, LocalBuilder msLocal, | |
List<Action<ILGenerator>> actions) { | |
var itemType = type.IsArray ? type.GetElementType() : | |
type.GetGenericArguments()[0]; | |
var itemLocal = il.DeclareLocal(itemType); | |
var listLocal = il.DeclareLocal(type); | |
var indexLocal = il.DeclareLocal(typeof(int)); | |
var startLabel = il.DefineLabel(); | |
var endLabel = il.DefineLabel(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static void WriteTimeSpanToBuffer(CustomBuffer customBuffer, TimeSpan value, int tag) { | |
if (value == TimeSpan.Zero) return; | |
byte[] buffer = null; | |
if (value == TimeSpan.MaxValue) buffer = MaxTimeSpanBytes; | |
else if (value == TimeSpan.MinValue) buffer = MinTimeSpanBytes; | |
else { | |
int tickIndex = -1; | |
long ticksValue; | |
var ticks = value.Ticks; | |
for (var i = 0; i < TimeSpanTicksLength; i++) { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static TimeSpan BytesToTimeSpan(byte[] buffer) { | |
if (buffer.Length == 1) { | |
if (buffer[0] == 0) return TimeSpan.MinValue; | |
else return TimeSpan.MaxValue; | |
} else if (buffer.Length == 2) { | |
return TimeSpan.FromTicks(TimeSpanTicks[buffer[0]] * buffer[1]); | |
} | |
var buffer2 = new byte[buffer.Length - 1]; | |
Buffer.BlockCopy(buffer, 1, buffer2, 0, buffer2.Length); | |
var ticks = BytesToInt64(buffer2); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static byte[] Int64ToBytes(long value) { | |
if (value <= 255) return new byte[] { (byte)value }; | |
const int msb = 0xff; | |
byte[] buffer = new byte[8]; | |
var index = 0; | |
var sValue = 0L; | |
unchecked { | |
buffer[index++] = (byte)(value & msb); | |
if ((sValue = (value >> 8) & msb) > 0) { | |
buffer[index++] = (byte)sValue; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using ZMQ; | |
using System.Threading.Tasks; | |
using System.Runtime.ExceptionServices; | |
namespace Phoenix.ZeroMQConnectors { | |
public sealed class ZeroMQReceiver : ZeroMQBase { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public void Send() { | |
var transport = _transport ?? Helper.GetTCPTransport(); | |
var hasAction = _action != null; | |
_receivedResponse = false; | |
_timeOut = _timeOut == null ? TimeSpan.FromSeconds(10) : _timeOut; | |
CorrelationID = CorrelationID == default(Guid) ? Guid.NewGuid() : CorrelationID; | |
if (hasAction) { | |
var responseTopic = Topic.Select<TResponse>(); | |
if (responseTopic.State == ObjectState.InValid) Topic.Register<TResponse>(); | |
var subscriberName = String.Concat("Subscriber", responseTopic.TopicName, |
OlderNewer