public void writePrimitive(DatagramOut dg, string type_n, object value) { switch (type_n) { case "uint8": dg.Write((Byte)value); break; case "uint16": dg.Write((UInt16)value); break; case "uint32": dg.Write((UInt32)value); break; case "uint64": dg.Write((UInt64)value); break; case "int8": dg.Write((SByte)value); break; case "int16": dg.Write(Convert.ToInt16(value)); // bad bad bad shadow TODO: properly implement floating types and nuke OTP's math break; case "int32": dg.Write((Int32)value); break; case "int64": dg.Write((Int64)value); break; case "string": dg.Write((String)value); break; case "blob": dg.Write((byte[])value); break; case "float64": dg.Write((double)value); break; default: Debug.Log("Writing Error: Type '" + type_n + "' is not a primitive"); break; } }
public bool connect(string host, int port) { socket = new TcpClient(); try { socket.Connect(host, port); } catch (SocketException e) { Debug.LogException(e); return(false); } connected = true; stream = socket.GetStream(); writer = new BinaryWriter(stream); sout = new AstronStream(); odgram = new DatagramOut(sout); beginReceiveData(); return(connected); }
public void serializeType(DatagramOut dg, string type_n, object value) { if (type_n.Contains("int")) { int divideBy = 1; if (type_n.Contains("/")) { string[] divideParts = type_n.Split("/".ToCharArray()); divideBy = Int32.Parse(divideParts[1]); type_n = divideParts[0]; } if (divideBy != 1) { writePrimitive(dg, type_n, (Int64)Convert.ToInt64(((double)value) * divideBy)); return; } } writePrimitive(dg, type_n, value); }