Пример #1
0
 public NetworkCallServer(TInterface implementation, INetworkSerializer serializer, NetworkCallServerCache cache)
 {
     _implementation = implementation;
     _serializer     = serializer;
     Cache           = cache;
     _eventLock      = new FifoAsyncLock();
 }
Пример #2
0
 /// <summary>
 ///     Initialize a new instance of <see cref="EventRegister" />
 /// </summary>
 /// <param name="serializer">The serializer used to serialize/deserialize the objects</param>
 /// <param name="totalBufferCacheSize">
 ///     The size of the thread-shared buffer for object serialization. Submit zero if you
 ///     dont want a global buffer
 /// </param>
 public EventRegister(INetworkSerializer serializer, long totalBufferCacheSize)
 {
     _serializer     = serializer;
     _events         = new ConcurrentDictionary <ulong, EventSubscription>();
     _clients        = new ConcurrentDictionary <IEventSubscriber, List <ulong> >();
     _eventIdCounter = 1;
     _bufferManager  = BufferManager.CreateBufferManager(totalBufferCacheSize, MaxBufferSize);
 }
Пример #3
0
        public MainPage(ScannerConnection connection, bool offlineMode)
        {
            this.connection = connection;
            this.serializer = new ProtobufNetworkSerializer();
            NavigationPage.SetHasNavigationBar(this, false);

            var grid = new Grid();

            grid.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(1, GridUnitType.Star)
            });
            grid.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(4, GridUnitType.Star)
            });

            bulbsStack = new StackLayout();
            grid.Children.Add(bulbsStack);

            urhoSurface = new UrhoSurface
            {
                BackgroundColor = Color.Black,
                VerticalOptions = LayoutOptions.FillAndExpand
            };

            var stack = new StackLayout
            {
                VerticalOptions = LayoutOptions.FillAndExpand,
                Children        = { urhoSurface }
            };

            grid.Children.Add(stack);
            Grid.SetColumn(stack, 1);
            Content = grid;

            if (!offlineMode)
            {
                space = new SpaceDto();
                connection.RegisterFor <SurfaceDto>(OnSurfaceReceived);
                connection.RegisterFor <BulbAddedDto>(OnBulbAdded);
                connection.RegisterFor <CurrentPositionDto>(OnCurrentPositionUpdated);
                Start();
            }
            else
            {
                space = serializer.Deserialize <SpaceDto>(
                    (byte[])Application.Current.Properties[nameof(SpaceDto)]);
            }
        }
Пример #4
0
        /// <summary>
        /// Connect to a client
        /// </summary>
        public async Task <bool> ConnectAsync(string ip, int port)
        {
            try
            {
                socketClient      = new TcpSocketClient();
                networkSerializer = new ProtobufNetworkSerializer();
                await socketClient.ConnectAsync(ip, port);

                Connected = true;
            }
            catch (Exception)
            {
                return(false);
            }
            StartSendingData();
            return(true);
        }
Пример #5
0
		public MainPage(ScannerConnection connection, bool offlineMode)
		{
			this.connection = connection;
			this.serializer = new ProtobufNetworkSerializer();
			NavigationPage.SetHasNavigationBar(this, false);

			var grid = new Grid();
			grid.ColumnDefinitions.Add(new ColumnDefinition {Width = new GridLength(1, GridUnitType.Star)});
			grid.ColumnDefinitions.Add(new ColumnDefinition {Width = new GridLength(4, GridUnitType.Star)});

			bulbsStack = new StackLayout();
			grid.Children.Add(bulbsStack);

			urhoSurface = new UrhoSurface
				{
					BackgroundColor = Color.Black,
					VerticalOptions = LayoutOptions.FillAndExpand
				};

			var stack = new StackLayout
				{
					VerticalOptions = LayoutOptions.FillAndExpand,
					Children = {urhoSurface}
				};

			grid.Children.Add(stack);
			Grid.SetColumn(stack, 1);
			Content = grid;

			if (!offlineMode)
			{
				space = new SpaceDto();
				connection.RegisterFor<SurfaceDto>(OnSurfaceReceived);
				connection.RegisterFor<BulbAddedDto>(OnBulbAdded);
				connection.RegisterFor<CurrentPositionDto>(OnCurrentPositionUpdated);
				Start();
			}
			else
			{
				space = serializer.Deserialize<SpaceDto>(
					(byte[])Application.Current.Properties[nameof(SpaceDto)]);
			}
		}
Пример #6
0
        /// <summary>
        /// Connect to a client
        /// </summary>
        public async Task <bool> ConnectAsync(string ip, int port)
        {
            try
            {
                // if you need a duplex TCP sample, take a look at SmartHome sample
                socketClient = new UdpSocketClient();
                socketClient.MessageReceived += SocketClient_MessageReceived;
                Serializer = new ProtobufNetworkSerializer();
                await socketClient.ConnectAsync(ip, port);

                StartSendingKeepAlive();
                Connected = true;
            }
            catch (Exception)
            {
                return(false);
            }
            return(true);
        }
Пример #7
0
        public async Task WaitForCompanion()
        {
            Serializer = new ProtobufNetworkSerializer();
            var tcs = new TaskCompletionSource <bool>();

            listener = new UdpSocketReceiver();
            listener.MessageReceived += (s, e) =>
            {
                remoteAddress = e.RemoteAddress;
                remotePort    = e.RemotePort;

                var dto          = Serializer.Deserialize <BaseDto>(e.ByteData);
                var handshakeDto = dto as PingDto;
                if (handshakeDto != null)
                {
                    var msg = handshakeDto.Message;
                }
                tcs.TrySetResult(true);
            };
            await listener.StartListeningAsync(Port);

            await tcs.Task;
        }
Пример #8
0
        public async Task WaitForCompanion()
        {
            Serializer = new ProtobufNetworkSerializer();
            var tcs = new TaskCompletionSource <bool>();

            listener = new TcpSocketListener();
            listener.ConnectionReceived += (s, e) =>
            {
                Serializer.ObjectDeserialized += SimpleNetworkSerializerObjectDeserialized;
                tcs.TrySetResult(true);
                client = e.SocketClient;
                try
                {
                    Serializer.ReadFromStream(client.ReadStream);
                }
                catch (Exception exc)
                {
                    //show error?
                }
            };
            await listener.StartListeningAsync(Port);

            await tcs.Task;
        }
Пример #9
0
 public NetSerializerTests()
 {
     _networkSerializer = new NetSerializerNetworkSerializer();
 }
Пример #10
0
 /// <summary>
 ///     Initialize a new instance of <see cref="NetworkCallServer{TInterface}" />
 /// </summary>
 /// <param name="implementation">The interface which can be called by the remote side</param>
 /// <param name="serializer">The serializer used to serialize/deserialize the objects</param>
 public NetworkCallServer(TInterface implementation, INetworkSerializer serializer) : this(implementation,
                                                                                           serializer, NetworkCallServerCache.Build <TInterface>())
 {
 }
Пример #11
0
 /// <summary>
 ///     Initialize a new instance of <see cref="EventRegister" />
 /// </summary>
 /// <param name="serializer">The serializer used to serialize/deserialize the objects</param>
 public EventRegister(INetworkSerializer serializer) : this(serializer, DefaultPoolSize)
 {
 }
 /// <summary>
 ///     Initialize a new instance of <see cref="EventManager" />
 /// </summary>
 /// <param name="serializer">The serializer used to serialize/deserialize the objects</param>
 public EventManager(INetworkSerializer serializer)
 {
     _serializer              = serializer;
     _subscribedEvents        = new ConcurrentDictionary <ulong, SubscribedEventInfo>();
     _interfaceGeneratedTypes = new ConcurrentDictionary <Type, Lazy <EventProxyInitializationInfo> >();
 }