internal MyCallbackBase(MySyncLayer layer, MessageCallbackTime <TMsg> callback, MyMessagePermissions permission, ISerializer <TMsg> serializer) { this.Layer = layer; this.Permission = permission; this.Serializer = serializer; this.Callback = callback; }
public static bool CheckReceivePermissions(ulong sender, MyMessagePermissions permission) { bool success; switch (permission) { case MyMessagePermissions.ToServer | MyMessagePermissions.FromServer: success = Sync.ServerId == sender || Sync.IsServer; break; case MyMessagePermissions.FromServer: success = Sync.ServerId == sender; break; case MyMessagePermissions.ToServer: success = Sync.IsServer; break; default: success = false; break; } string format = "Permissions check failed, permission: {0}\nIsServer: {1}, CameFromServer: {2}\nMy id: {3}, server id: {4}, sender id: {5}"; Debug.Assert(success, String.Format(format, permission, Sync.IsServer, Sync.ServerId == sender, Sync.MyId, Sync.ServerId, sender)); return(success); }
public void RegisterMessageImmediate <TMsg>(MessageCallback <TMsg> callback, MyMessagePermissions permissions, MyTransportMessageEnum messageType = MyTransportMessageEnum.Request, ISerializer <TMsg> serializer = null) where TMsg : struct { TransportLayer.Register <TMsg>(new MyCallbackBase <TMsg>(this, new MyCallbackTime <TMsg>(callback).Handle, permissions, serializer ?? GetSerializer <TMsg>()), messageType); }
public static void RegisterEntityMessage <TSync, TMsg>(MessageCallback <TSync, TMsg> callback, MyMessagePermissions permissions, MyTransportMessageEnum messageType = MyTransportMessageEnum.Request, ISerializer <TMsg> serializer = null) where TSync : MySyncEntity where TMsg : struct, IEntityMessage { RegisterMessage <TMsg>((layer) => new MyCallbackBase <TMsg>(layer, new MyCallbackEntity <TSync, TMsg>(layer, callback).Handle, permissions, serializer ?? GetSerializer <TMsg>()), messageType); }
public static void RegisterMessage <TMsg>(MessageCallbackTime <TMsg> callback, MyMessagePermissions permissions, MyTransportMessageEnum messageType = MyTransportMessageEnum.Request, ISerializer <TMsg> serializer = null) where TMsg : struct { RegisterMessage <TMsg>((layer) => new MyCallbackBase <TMsg>(layer, callback, permissions, serializer ?? GetSerializer <TMsg>()), messageType); }
internal void RegisterControlMessage <T>(MyControlMessageEnum msg, ControlMessageHandler <T> handler, MyMessagePermissions permission) where T : struct { MyControlMessageCallback <T> callback = new MyControlMessageCallback <T>(handler, MySyncLayer.GetSerializer <T>(), permission); m_controlMessageHandlers.Add((int)msg, callback); m_controlMessageTypes.Add(typeof(T), msg); }
public MyControlMessageCallback(ControlMessageHandler <TMsg> callback, ISerializer <TMsg> serializer, MyMessagePermissions permission) { this.Callback = callback; this.Serializer = serializer; this.Permission = permission; }