public NetworkCallServer(TInterface implementation, INetworkSerializer serializer, NetworkCallServerCache cache) { _implementation = implementation; _serializer = serializer; Cache = cache; _eventLock = new FifoAsyncLock(); }
/// <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); }
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)]); } }
/// <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); }
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)]); } }
/// <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); }
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; }
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; }
public NetSerializerTests() { _networkSerializer = new NetSerializerNetworkSerializer(); }
/// <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>()) { }
/// <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> >(); }