private INativeDataHandler GetNativeDataHandler(IDataHandler handler) { INativeDataHandler nativeDataHandler = handler as INativeDataHandler; if (nativeDataHandler != null) { return(nativeDataHandler); } IManagedDataHandler managedDataHandler = handler as IManagedDataHandler; if (managedDataHandler != null) { return(new NativeDataHandlerRouter(managedDataHandler)); } return(null); }
public void Register(byte dataMarker, IDataHandler handler) { lock (_handlers) { VerifyDisposed(); if (IsLocked) { throw new TempException(string.Format("Gateway is already locked. Cannot register handler for marker {0}", dataMarker)); } if (_handlers.ContainsKey(dataMarker)) { throw new TempException(string.Format("Data handler with marker {0} is already registered", dataMarker)); } INativeDataHandler nativeDataHandler = GetNativeDataHandler(handler); if (nativeDataHandler == null) { return; } _handlers.Add(dataMarker, nativeDataHandler); _agentLibrary.GatewayServerRegisterHandler(_token, dataMarker, nativeDataHandler.DataHandlerPointer); } }
public ManagedDataHandlerRouter(INativeDataHandler nativeDataHandler) { _handler = nativeDataHandler.DataHandlerPointer; }