public void Handle(ISnmpContext context, ObjectStore store) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (store == null) { throw new ArgumentNullException(nameof(store)); } var index = 0; var status = ErrorCode.NoError; IList <Variable> result = new List <Variable>(); foreach (var v in context.Request.Pdu().Variables) { index++; var obj = store.GetObject(v.Id); if (obj != null) { try { obj.Data = v.Data; } catch (AccessFailureException) { status = ErrorCode.NoSuchName; } catch (ArgumentException) { status = ErrorCode.BadValue; } catch (Exception) { status = ErrorCode.GenError; } } else { status = ErrorCode.NoSuchName; } if (status != ErrorCode.NoError) { context.CopyRequest(status, index); return; } result.Add(v); } context.GenerateResponse(result); }
public void Handle(ISnmpContext context, ObjectStore store) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (store == null) { throw new ArgumentNullException(nameof(store)); } var index = 0; IList <Variable> result = new List <Variable>(); foreach (var v in context.Request.Pdu().Variables) { index++; try { var obj = store.GetObject(v.Id); if (obj == null) { result.Add(new Variable(v.Id, new NoSuchInstance())); } else { var item = obj.Variable; result.Add(item); } } catch (AccessFailureException) { result.Add(new Variable(v.Id, new NoSuchObject())); } catch (Exception) { context.CopyRequest(ErrorCode.GenError, index); return; } } context.GenerateResponse(result); }
public void Handle(ISnmpContext context, ObjectStore store) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (store == null) { throw new ArgumentNullException(nameof(store)); } context.CopyRequest(ErrorCode.InconsistentName, int.MaxValue); if (context.TooBig) { context.GenerateTooBig(); return; } var index = 0; var status = ErrorCode.NoError; IList <Variable> result = new List <Variable>(); foreach (var v in context.Request.Pdu().Variables) { index++; var obj = store.GetObject(v.Id); if (obj != null) { try { obj.Data = v.Data; } catch (AccessFailureException) { status = ErrorCode.NoAccess; } catch (ArgumentException ex) { if (!Enum.TryParse <ErrorCode>(ex.Message, out status) || status == ErrorCode.NoError) { status = ErrorCode.WrongType; } } catch (Exception) { status = ErrorCode.GenError; } } else { status = ErrorCode.NotWritable; } if (status != ErrorCode.NoError) { context.CopyRequest(status, index); return; } result.Add(v); } context.GenerateResponse(result); }