internal MyCallbackBase(MySyncLayer layer, MessageCallbackTime <TMsg> callback, MyMessagePermissions permission, ISerializer <TMsg> serializer)
 {
     this.Layer      = layer;
     this.Permission = permission;
     this.Serializer = serializer;
     this.Callback   = callback;
 }
예제 #2
0
        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);
        }
예제 #3
0
 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);
 }
예제 #4
0
 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);
 }
예제 #5
0
 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);
 }
예제 #6
0
        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);
        }
예제 #7
0
 public MyControlMessageCallback(ControlMessageHandler <TMsg> callback, ISerializer <TMsg> serializer, MyMessagePermissions permission)
 {
     this.Callback   = callback;
     this.Serializer = serializer;
     this.Permission = permission;
 }