public synchronized void FromByteArray(byte[] BA, TIndex Idx) throws IOException, OperationException { Timestamp = TGeographServerServiceOperation.ConvertBEByteArrayToDouble(BA, Idx.Value); Idx.Value += 8; Value = TGeographServerServiceOperation.ConvertBEByteArrayToInt64(BA, Idx.Value); Idx.Value += 8; super.FromByteArray(BA, /*ref*/ Idx); }
@Override public void run() { try { ConnectDestination(); try { // . receive incoming operations TIndex OperationMessageOrigin = new TIndex(); TOperationSession OperationSession = new TOperationSession(); byte[] OperationMessage = null; TProcessIncomingOperationResult ProcessIncomingOperationResult = new TProcessIncomingOperationResult(); while (!Canceller.flCancel) { if (LANModule.Device.ModuleState == TDEVICEModule.MODULE_STATE_RUNNING) { OperationMessageOrigin.Reset(); OperationSession.New(); OperationMessage = TGeographServerServiceOperation.CheckReceiveMessage( LANModule.Device.UserID, LANModule.Device.UserPassword, DestinationConnection, DestinationConnectionInputStream, DestinationConnectionOutputStream, /*out*/ OperationSession, /*out*/ OperationMessageOrigin, LANModule.Device.ConnectorModule.LoopSleepTime); if (OperationMessage != null) { // . process incoming operation flProcessingOperation = true; try { LANModule.Device.ConnectorModule.ProcessIncomingOperation( OperationSession.ID, OperationMessage, /*ref*/ OperationMessageOrigin, CUAL, DestinationConnectionInputStream, DestinationConnectionOutputStream, ProcessIncomingOperationResult); if (ProcessIncomingOperationResult.ResultCode >= 0) { TObjectComponentServiceOperation ObjectOperation = ProcessIncomingOperationResult.Operation.GetObjectComponentServiceOperation(); if (ObjectOperation instanceof TObjectSetComponentDataServiceOperation) { LANModule.Device.ConnectorModule.OutgoingSetComponentDataOperationsQueue .AddNewOperation((TObjectSetComponentDataServiceOperation) ObjectOperation); LANModule.Device.ConnectorModule .ImmediateTransmiteOutgoingSetComponentDataOperations(); } } } finally { flProcessingOperation = false; } } } else Thread.sleep(LANModule.Device.ConnectorModule.LoopSleepTime); } } finally { DisconnectDestination(); } } catch (InterruptedException E) { } catch (Throwable TE) { // . log errors LANModule.Device.Log.WriteError("ConnectorModule.DeviceConnectionRepeater", TE.getMessage()); if (!(TE instanceof Exception)) TGeoLogApplication.Log_WriteCriticalError(TE); } // . Repeaters.remove(this); }