} // end HandleReadRequests public override int HandleWriteRequests() { int count = Requests.Count; MySession pClient = (MySession)Session; for (int i = 0; i < count; i++) { DaRequest request = Requests[i] as DaRequest; if ((request != null) && (request.ProgressRequestState(EnumRequestState.CREATED, EnumRequestState.INPROGRESS) == true)) { MyDaAddressSpaceElement element = (MyDaAddressSpaceElement)request.AddressSpaceElement; if (element != null) { if (pClient.Equals(MySession.s_controlingSession)) { ValueQT valueQT = request.Value; request.Result = (EnumResultCode)element.ValueChanged(valueQT); } else { request.Result = EnumResultCode.E_ACCESSDENIED; } // end if } // end if } // end if } // end for return(CompleteRequests()); } // end HandleWriteRequests
} // end constructor public override int HandleReadRequests() { int count = Requests.Count; for (int i = 0; i < count; i++) { DaRequest request = (DaRequest)Requests[i]; if ((request != null) && (request.ProgressRequestState(EnumRequestState.CREATED, EnumRequestState.INPROGRESS) == true)) { if (request.PropertyId == 0) { // get address space element value // take the toolkit cache value ValueQT cacheValue = null; request.AddressSpaceElement.GetCacheValue(ref cacheValue); if (cacheValue == null) { request.AddressSpaceElement.QueryCacheValue((MySession)Session, ref cacheValue); } request.Value = cacheValue; request.Result = EnumResultCode.S_OK; } else { // get property value // get the value from the address space element MyDaAddressSpaceElement element = request.AddressSpaceElement as MyDaAddressSpaceElement; if (element != null) { element.GetPropertyValue(request); } else { request.Result = EnumResultCode.E_FAIL; } // end if ... else } // end if ... else } // end if } // end for return(CompleteRequests()); } // end HandleReadRequests
} // end ProcessCommandLine public int BuildAddressSpace() { try { MyCreator creator = (MyCreator)Application.Instance.Creator; // DA MyDaAddressSpaceRoot daRoot = (MyDaAddressSpaceRoot)Application.Instance.DaAddressSpaceRoot; m_daSimulationElement1 = (MyDaAddressSpaceElement)creator.CreateMyDaAddressSpaceElement(); m_daSimulationElement1.Name = "client specific"; m_daSimulationElement1.AccessRights = EnumAccessRights.READABLE; m_daSimulationElement1.Datatype = typeof(System.Int32); m_daSimulationElement1.IoMode = EnumIoMode.POLL_OWNCACHE; daRoot.AddChild(m_daSimulationElement1); m_daSimulationElement2 = (MyDaAddressSpaceElement)creator.CreateMyDaAddressSpaceElement(); m_daSimulationElement2.Name = "secured write"; m_daSimulationElement2.AccessRights = EnumAccessRights.READWRITEABLE; m_daSimulationElement2.Datatype = typeof(System.Int32); m_daSimulationElement2.IoMode = EnumIoMode.POLL; daRoot.AddChild(m_daSimulationElement2); m_daSimulationElement2.ValueChanged(new ValueQT(2, EnumQuality.GOOD, DateTime.Now)); } catch (Exception exc) { Trace( EnumTraceLevel.ERR, EnumTraceGroup.USER1, "OpcServer:BuildAddressSpace", exc.ToString()); return((int)EnumResultCode.E_FAIL); } // end try...catch return((int)EnumResultCode.S_OK); } // end BuildAddressSpace