本文整理汇总了C#中Google.Protobuf.CodedOutputStream.WriteUInt32方法的典型用法代码示例。如果您正苦于以下问题:C# CodedOutputStream.WriteUInt32方法的具体用法?C# CodedOutputStream.WriteUInt32怎么用?C# CodedOutputStream.WriteUInt32使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Google.Protobuf.CodedOutputStream
的用法示例。
在下文中一共展示了CodedOutputStream.WriteUInt32方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: EncodeObject
static ByteString EncodeObject (object value, MemoryStream buffer, CodedOutputStream stream)
{
buffer.SetLength (0);
if (value == null) {
stream.WriteUInt64 (0);
} else if (value is Enum) {
stream.WriteInt32 ((int)value);
} else {
Type type = value.GetType ();
switch (Type.GetTypeCode (type)) {
case TypeCode.Int32:
stream.WriteInt32 ((int)value);
break;
case TypeCode.Int64:
stream.WriteInt64 ((long)value);
break;
case TypeCode.UInt32:
stream.WriteUInt32 ((uint)value);
break;
case TypeCode.UInt64:
stream.WriteUInt64 ((ulong)value);
break;
case TypeCode.Single:
stream.WriteFloat ((float)value);
break;
case TypeCode.Double:
stream.WriteDouble ((double)value);
break;
case TypeCode.Boolean:
stream.WriteBool ((bool)value);
break;
case TypeCode.String:
stream.WriteString ((string)value);
break;
default:
if (type == typeof(byte[]))
stream.WriteBytes (ByteString.CopyFrom ((byte[])value));
else if (TypeUtils.IsAClassType (type))
stream.WriteUInt64 (ObjectStore.Instance.AddInstance (value));
else if (TypeUtils.IsAMessageType (type))
WriteMessage (value, stream);
else if (TypeUtils.IsAListCollectionType (type))
WriteList (value, stream);
else if (TypeUtils.IsADictionaryCollectionType (type))
WriteDictionary (value, stream);
else if (TypeUtils.IsASetCollectionType (type))
WriteSet (value, stream);
else if (TypeUtils.IsATupleCollectionType (type))
WriteTuple (value, stream);
else
throw new ArgumentException (type + " is not a serializable type");
break;
}
}
stream.Flush ();
return ByteString.CopyFrom (buffer.GetBuffer (), 0, (int)buffer.Length);
}
示例2: ValueTypeToByteString
public void ValueTypeToByteString ()
{
// From Google's protobuf documentation, varint encoding example:
// 300 = 1010 1100 0000 0010 = 0xAC 0x02
const int value = 300;
var buffer = new byte [2];
var codedStream = new CodedOutputStream (buffer);
codedStream.WriteUInt32 (value);
Assert.AreEqual ("ac02", buffer.ToHexString ());
}
示例3: ValueTypeToByteString
public void ValueTypeToByteString()
{
// From Google's protobuf documentation, varint encoding example:
// 300 = 1010 1100 0000 0010 = 0xAC 0x02
const int value = 300;
var buffer = new byte [2];
var codedStream = new CodedOutputStream (buffer);
codedStream.WriteUInt32 (value);
string hex = ("0x" + BitConverter.ToString (buffer)).Replace ("-", " 0x");
Assert.AreEqual ("0xAC 0x02", hex);
}
示例4: EncodeObject
static ByteString EncodeObject (object value, Type type, MemoryStream buffer, CodedOutputStream stream)
{
buffer.SetLength (0);
if (value != null && !type.IsInstanceOfType (value))
throw new ArgumentException ("Value of type " + value.GetType () + " cannot be encoded to type " + type);
if (value == null && !type.IsSubclassOf (typeof(RemoteObject)) && !IsACollectionType (type))
throw new ArgumentException ("null cannot be encoded to type " + type);
if (value == null)
stream.WriteUInt64 (0);
else if (value is Enum)
stream.WriteInt32 ((int)value);
else {
switch (Type.GetTypeCode (type)) {
case TypeCode.Int32:
stream.WriteInt32 ((int)value);
break;
case TypeCode.Int64:
stream.WriteInt64 ((long)value);
break;
case TypeCode.UInt32:
stream.WriteUInt32 ((uint)value);
break;
case TypeCode.UInt64:
stream.WriteUInt64 ((ulong)value);
break;
case TypeCode.Single:
stream.WriteFloat ((float)value);
break;
case TypeCode.Double:
stream.WriteDouble ((double)value);
break;
case TypeCode.Boolean:
stream.WriteBool ((bool)value);
break;
case TypeCode.String:
stream.WriteString ((string)value);
break;
default:
if (type.Equals (typeof(byte[])))
stream.WriteBytes (ByteString.CopyFrom ((byte[])value));
else if (IsAClassType (type))
stream.WriteUInt64 (((RemoteObject)value).id);
else if (IsAMessageType (type))
((IMessage)value).WriteTo (buffer);
else if (IsAListType (type))
WriteList (value, type, buffer);
else if (IsADictionaryType (type))
WriteDictionary (value, type, buffer);
else if (IsASetType (type))
WriteSet (value, type, buffer);
else if (IsATupleType (type))
WriteTuple (value, type, buffer);
else
throw new ArgumentException (type + " is not a serializable type");
break;
}
}
stream.Flush ();
return ByteString.CopyFrom (buffer.GetBuffer (), 0, (int)buffer.Length);
}
示例5: Encode
/// <summary>
/// Encode a value of the given type.
/// Should not be called directly. This interface is used by service client stubs.
/// </summary>
public static ByteString Encode(object value, Type type)
{
var stream = new MemoryStream ();
var encoder = new CodedOutputStream (stream);
if (value != null && !type.IsAssignableFrom (value.GetType ())) //TODO: nulls?
throw new ArgumentException ("Value of type " + value.GetType () + " cannot be encoded to type " + type);
if (type == typeof(Double))
encoder.WriteDouble ((Double)value);
else if (type == typeof(Single))
encoder.WriteFloat ((Single)value);
else if (type == typeof(Int32))
encoder.WriteInt32 ((Int32)value);
else if (type == typeof(Int64))
encoder.WriteInt64 ((Int64)value);
else if (type == typeof(UInt32))
encoder.WriteUInt32 ((UInt32)value);
else if (type == typeof(UInt64))
encoder.WriteUInt64 ((UInt64)value);
else if (type == typeof(Boolean))
encoder.WriteBool ((Boolean)value);
else if (type == typeof(String))
encoder.WriteString ((String)value);
else if (type == typeof(byte[]))
encoder.WriteBytes (ByteString.CopyFrom ((byte[])value));
else if (value != null && value is Enum)
encoder.WriteInt32 ((int)value);
else if (type.IsSubclassOf (typeof(RemoteObject))) {
if (value == null)
encoder.WriteUInt64 (0);
else
encoder.WriteUInt64 (((RemoteObject)value)._ID);
} else if (value != null && value is IMessage) {
((IMessage)value).WriteTo (stream);
return ByteString.CopyFrom (stream.ToArray ());
} else if (value != null && value is IList)
return EncodeList (value, type);
else if (value != null && value is IDictionary)
return EncodeDictionary (value, type);
else if (value != null && value.GetType ().IsGenericType && value.GetType ().GetGenericTypeDefinition () == typeof(HashSet<>))
return EncodeSet (value, type); //TODO: ugly checking for set types
else if (value != null && value.GetType ().IsGenericType &&
(value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<>) ||
value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<,>) ||
value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<,,>) ||
value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<,,,>) ||
value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<,,,,>) ||
value.GetType ().GetGenericTypeDefinition () == typeof(Tuple<,,,,,>)))
return EncodeTuple (value, type); //TODO: ugly checking for tuple types
else
throw new ArgumentException (type + " is not a serializable type");
encoder.Flush ();
return ByteString.CopyFrom (stream.ToArray ());
}
示例6: WriteValue
/// <summary>
/// Convert a Protocol Buffer value type from a C# value to a byte string.
/// </summary>
public static ByteString WriteValue(object value, Type type)
{
var stream = new MemoryStream ();
var encoder = new CodedOutputStream (stream);
if (type == typeof(double))
encoder.WriteDouble ((double)value);
else if (type == typeof(float))
encoder.WriteFloat ((float)value);
else if (type == typeof(int))
encoder.WriteInt32 ((int)value);
else if (type == typeof(long))
encoder.WriteInt64 ((long)value);
else if (type == typeof(uint))
encoder.WriteUInt32 ((uint)value);
else if (type == typeof(ulong))
encoder.WriteUInt64 ((ulong)value);
else if (type == typeof(bool))
encoder.WriteBool ((bool)value);
else if (type == typeof(string))
encoder.WriteString ((string)value);
else if (type == typeof(byte[]))
encoder.WriteBytes (ByteString.CopyFrom ((byte[])value));
else
throw new ArgumentException (type + " is not a Protocol Buffer value type");
encoder.Flush ();
return ByteString.CopyFrom (stream.ToArray ());
}