public void AddToAlive(MyProxy proxy) { lock (addLock) //IndexOutOfRangeException exception { Alive.Add(proxy); } }
public void ExecuteMessage() { var port = NetworkHelpers.FindFreePort(); TcpChannel chn = new TcpChannel(port); ChannelServices.RegisterChannel(chn); try { MarshalObject objMarshal = NewMarshalObject(); RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), objMarshal.Uri, WellKnownObjectMode.SingleCall); // use a proxy to catch the Message MyProxy proxy = new MyProxy(typeof(MarshalObject), (MarshalObject)Activator.GetObject(typeof(MarshalObject), $"tcp://localhost:{port}/" + objMarshal.Uri)); MarshalObject objRem = (MarshalObject)proxy.GetTransparentProxy(); objRem.Method1(); // Tests RemotingServices.GetMethodBaseFromMethodMessage() Assert.AreEqual("Method1", proxy.MthBase.Name, "#A09"); Assert.IsFalse(proxy.IsMethodOverloaded, "#A09.1"); objRem.Method2(); Assert.IsTrue(proxy.IsMethodOverloaded, "#A09.2"); // Tests RemotingServices.ExecuteMessage(); // If ExecuteMessage does it job well, Method1 should be called 2 times Assert.AreEqual(2, MarshalObject.Called, "#A10"); } finally { ChannelServices.UnregisterChannel(chn); } }
public void ExecuteMessage() { TcpChannel chn = new TcpChannel(1235); ChannelServices.RegisterChannel(chn); try { MarshalObject objMarshal = NewMarshalObject(); RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), objMarshal.Uri, WellKnownObjectMode.SingleCall); // use a proxy to catch the Message MyProxy proxy = new MyProxy(typeof(MarshalObject), (MarshalObject)Activator.GetObject(typeof(MarshalObject), "tcp://localhost:1235/" + objMarshal.Uri)); MarshalObject objRem = (MarshalObject)proxy.GetTransparentProxy(); objRem.Method1(); // Tests RemotingServices.GetMethodBaseFromMethodMessage() AssertEquals("#A09", "Method1", proxy.MthBase.Name); Assert("#A09.1", !proxy.IsMethodOverloaded); objRem.Method2(); Assert("#A09.2", proxy.IsMethodOverloaded); // Tests RemotingServices.ExecuteMessage(); // If ExecuteMessage does it job well, Method1 should be called 2 times AssertEquals("#A10", 2, MarshalObject.Called); } finally { ChannelServices.UnregisterChannel(chn); } }
public void GetRealProxy() { TcpChannel chn = null; try { chn = new TcpChannel(1241); ChannelServices.RegisterChannel(chn); RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap", WellKnownObjectMode.Singleton); MyProxy proxy = new MyProxy(typeof(MarshalObject), (MarshalByRefObject)Activator.GetObject(typeof(MarshalObject), "tcp://localhost:1241/MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap")); MarshalObject objRem = (MarshalObject)proxy.GetTransparentProxy(); RealProxy rp = RemotingServices.GetRealProxy(objRem); Assert.IsTrue(rp != null, "#A12"); Assert.AreEqual("MonoTests.System.Runtime.Remoting.RemotingServicesInternal.MyProxy", rp.GetType().ToString(), "#A13"); } finally { if (chn != null) { ChannelServices.UnregisterChannel(chn); } } }
public void Download(bool includeZeroBalances, DateTime toDate) { MyProxy proxy = GetProxy(); byte[] file = proxy.GetFile(includeZeroBalance, toDate); PropertyBag["downloadurl"] = "data:application/zip;base64," + System.Convert.ToBase64String(file); }
public void CreateProxy_CallAddMethod_AddsTwoIntegers() { var proxy = new MyProxy(); var realProxy = proxy.GetProxyObject(); Assert.IsNotNull(realProxy); Assert.AreEqual(100, realProxy.Add(40, 60)); }
public static void Main() { MyProxy proxy = new MyProxy(typeof(Zip)); Zip myZip = (Zip)proxy.GetTransparentProxy(); CallContext.SetData("USER", new Zip()); myZip.Method1(6); }
private async void Execute() { //DisplayAlert("TEST", param.ToString(), "OK"); var p = new MyProxy(); var user = await p.GetUser(Model.ID); Model.UserName = user.Name; }
public void AddProxy(MyProxy proxy) { if (ProxiesScraped.Add(proxy.ToString())) //if added to hashset and not a duplicate { scrapedListBox.Invoke(new Action(() => scrapedListBox.Items.Add(proxy.ToString()))); //add to listbox UI UpdateScraperUI(); } }
public string GetMyNetwork() { if (String.IsNullOrWhiteSpace(network)) { MyProxy myprox = MyProxy.Instance; network = myprox.GetNetworkConfig(); } return(network); }
private void importProxiesBtn_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "Proxies"; ofd.Filter = "Text Files|*.txt"; ofd.Multiselect = true; if (ofd.ShowDialog() == DialogResult.OK) { ProxyMgr.Clear(); uint badProxies = 0; uint duplicateProxies = 0; uint dangerousProxies = 0; foreach (string file in ofd.FileNames) { using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (StreamReader sr = new StreamReader(fs, Encoding.Default)) { string proxy; while ((proxy = sr.ReadLine()) != null) { MyProxy myProxy = new MyProxy(proxy, true); if (myProxy.isMalformed) { badProxies++; } else { if (removeDangCheck.Checked) { if (filter.isDangerous(myProxy.ToString())) { dangerousProxies++; continue; } } if (!ProxyMgr.Add(myProxy.ToString())) //adding to hashset { duplicateProxies++; } } } } } //Update UI EnableScanUI(); MessageBox.Show(string.Format("A total of {0} Proxies have been imported for scanning.{1}{2}", ProxyMgr.Count.ToString(), (badProxies + duplicateProxies) > 0 ? string.Format("{0} - {1} bad proxies and {2} duplicates were removed!", Environment.NewLine, badProxies.ToString(), duplicateProxies.ToString()):"", dangerousProxies > 0? string.Concat(Environment.NewLine, " - ", dangerousProxies.ToString(), " DANGEROUS Proxies were also removed!"):""), "Import Proxies", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
static int Main () { MyProxy real_proxy = new MyProxy (new R1 ()); R1 o = (R1)real_proxy.GetTransparentProxy (); Dictionary<string, int> i; o.foo (out i); if (1 == i["One"]) return 0; return 1; }
public void CreateProxy_WithProperty_GetsAndSetsProperty() { var proxy = new MyProxy(); var realProxy = proxy.GetProxyObject(); Assert.IsNotNull(realProxy); realProxy.StringProperty = "Test"; Assert.AreEqual("Test", realProxy.StringProperty); }
static async Task Main(string[] args) { Console.WriteLine("Press key to test"); Console.ReadKey(); var p = new MyProxy(); var user = await p.GetUser("test"); Console.WriteLine(user.Name); Console.ReadKey(); }
private void ImportProxiesBtn_Click(object sender, EventArgs e) { var ofd = new OpenFileDialog(); ofd.Title = "Proxies"; ofd.Filter = "Text Files|*.txt"; ofd.Multiselect = true; if (ofd.ShowDialog() == DialogResult.OK) { ProxyMgr.Clear(); uint badProxies = 0; uint duplicateProxies = 0; uint dangerousProxies = 0; foreach (var file in ofd.FileNames) { using (var fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (var sr = new StreamReader(fs, Encoding.Default)) { string proxy; while ((proxy = sr.ReadLine()) != null) { var myProxy = new MyProxy(proxy, true); if (myProxy.IsMalformed) { badProxies++; } else { if (removeDangCheck.Checked) { if (filter.IsDangerous(myProxy.ToString())) { dangerousProxies++; continue; } } if (!ProxyMgr.Add(myProxy.ToString())) //adding to hashset { duplicateProxies++; } } } } } //Update UI EnableScanUI(); MessageBox.Show(string.Concat($"A total of {ProxyMgr.Count} Proxies have been imported for scanning.", (badProxies + duplicateProxies) > 0 ? $"\n - {badProxies} bad proxies and {duplicateProxies} duplicates were removed!" : string.Empty, dangerousProxies > 0 ? $"\n - {dangerousProxies} DANGEROUS Proxies were also removed!" : string.Empty), "Import Proxies", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
public MyProxy RecommendProxy() { lock ( proxiesLock ) { if (Unscanned.Count == 0) { return(null); } var proxy = new MyProxy(Unscanned.First(), false); Unscanned.RemoveFirst(); return(proxy); } }
public void CreateProxy_WithMethodContainingAReferenceOutParameter_ReturnsOutParameter() { var proxy = new MyProxy(); var realProxy = proxy.GetProxyObject(); Assert.IsNotNull(realProxy); realProxy.StringProperty = "Test"; var result = realProxy.TryGetStringProperty(out string value); Assert.IsTrue(result); Assert.AreEqual("Test", value); }
public void TestCalls() { var proxy = new MyProxy() {NextRet = 5}; var tproxy = ProxyGen.CreateInstance<ISimple>(proxy); tproxy.Bar(); Assert.Equal(5, tproxy.Foo(1, "2")); Assert.Equal(2, proxy.Calls.Count); Assert.Equal(1, proxy.Calls[1].Arguments[0]); Assert.Equal("2", proxy.Calls[1].Arguments[1]); Assert.Equal("Bar", proxy.Calls[0].Method.Name); Assert.Equal("Foo", proxy.Calls[1].Method.Name); }
public void CreateProxy_WithMethodContainingAValueOutParameter_ReturnsOutParameter() { var proxy = new MyProxy(); var realProxy = proxy.GetProxyObject(); Assert.IsNotNull(realProxy); realProxy.BooleanProperty = true; var result = realProxy.TryGetBooleanProperty(out bool value); Assert.IsTrue(result); Assert.IsTrue(value); }
public virtual int ldfield_test () { MyProxy real_proxy = new MyProxy (this); R1 o = (R1)real_proxy.GetTransparentProxy (); if (o.test_field != 1) return 1; if (test_field != 1) return 1; return 0; }
static int Main() { MyProxy real_proxy = new MyProxy(new R1()); R1 o = (R1)real_proxy.GetTransparentProxy(); Dictionary <string, int> i; o.foo(out i); if (1 == i["One"]) { return(0); } return(1); }
public override MarshalByRefObject CreateInstance(Type serverType) { if (serverType.IsMarshalByRef) { MarshalByRefObject targetObject = (MarshalByRefObject)Activator.CreateInstance(serverType); MyProxy proxy = new MyProxy(serverType, targetObject); return((MarshalByRefObject)proxy.GetTransparentProxy()); } else { throw new Exception("Proxies only work on MarshalByRefObject objects" + " and their children"); } }
private List <MyProxy> ProxiesFromHtml(string html) { var proxies = new List <MyProxy>(); /////Remove everything that can mislead html = html.Trim().ToLowerInvariant(); //Remove time stamps ex '11h 44m 56s'; are usually adjacent to proxies so removal is encouraged for best results //Start from big [60] to small [0] so we have no trailing digits, ex: '52s' removing '2s' first and we have a trailing 5 var suffixes = new string[] { "s", "m", "h", "d" }; for (var i = 60; i >= 0; --i) { for (var s = 0; s < suffixes.Length; ++s) { html = html.Replace(string.Concat(i.ToString(), suffixes[s]), " "); } } html = Regex.Replace(html, @"<[^>]+>| ", " ").Trim(); //remove any html <tag> or non-breaking spaces const string timeRegex = @"(\s\d{1,2}:\d{1,2}\s)|(\s\d{1,2}:\d{1,2}:\d{1,2}\s)"; html = Regex.Replace(html, timeRegex, " ").Trim(); //remove time 00:00:00 or 00:00 html = Regex.Replace(html, @"\s+", " "); //remove extra spaces ///// //Regex Cheat Sheet: https://www.mikesdotnetting.com/article/46/c-regular-expressions-cheat-sheet //[1-3 Digits] [.1-3 Digit]x3 :or_ [2-5 Digits] | Same shit but Port first const string normalRegex = @"(\d{1,3}(\.\d{1,3}){3}(:|\s)\d{2,5})|(\d{2,5}(:|\s)\d{1,3}(\.\d{1,3}){3})"; MatchCollection matches = Regex.Matches(html, normalRegex, RegexOptions.IgnoreCase); foreach (Match match in matches) { var _proxy = match.ToString().Trim().Replace(" ", ":"); var parts = _proxy.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries); //Assemble proxy! May be in two different configs ip:port or port:ip if (parts.Length == 2) { var portIndex = parts[0].Contains(".") ? 1 : 0; var ipIndex = portIndex == 1 ? 0 : 1; var proxy = new MyProxy(parts[ipIndex], Convert.ToInt32(parts[portIndex])); proxies.Add(proxy); } } return(proxies); }
public override RealProxy CreateProxy(ObjRef objRef1, Type serverType, object serverObject, Context serverContext) { MyProxy myCustomProxy = new MyProxy(serverType); if (serverContext != null) { RealProxy.SetStubData(myCustomProxy, serverContext); } if ((!serverType.IsMarshalByRef) && (serverContext == null)) { throw new RemotingException("Bad Type for CreateProxy"); } return(myCustomProxy); }
public void TestCalls() { var proxy = new MyProxy() { NextRet = 5 }; var tproxy = ProxyGen.CreateInstance <ISimple>(proxy); tproxy.Bar(); Assert.Equal(5, tproxy.Foo(1, "2").Result); Assert.Equal(2, proxy.Calls.Count); Assert.Equal(1, proxy.Calls[1].Arguments[0]); Assert.Equal("2", proxy.Calls[1].Arguments[1]); Assert.Equal("Bar", proxy.Calls[0].Method.Name); Assert.Equal("Foo", proxy.Calls[1].Method.Name); }
public virtual int ldfield_test() { MyProxy real_proxy = new MyProxy(this); R1 o = (R1)real_proxy.GetTransparentProxy(); if (o.test_field != 1) { return(1); } if (test_field != 1) { return(1); } return(0); }
private async void Button_OnClicked(object sender, EventArgs e) { var p = new MyProxy(); var user = await p.GetUser("test"); Model = new MainPageModel { UserName = user.Name }; //DisplayAlert("TEST", "TEST222222222222222", "OK"); //using (var db = new LiteDatabase(@"MyData.db")) //{ // // Get customer collection // var col = db.GetCollection<Customer>("customers"); // // Create your new customer instance // var customer = new Customer // { // Name = "John Doe", // Phones = new string[] { "8000-0000", "9000-0000" }, // Age = 39, // IsActive = true // }; // // Create unique index in Name field // col.EnsureIndex(x => x.Name, true); // // Insert new customer document (Id will be auto-incremented) // col.Insert(customer); // // Update a document inside a collection // customer.Name = "Joana Doe"; // col.Update(customer); // // Use LINQ to query documents (with no index) // var results = col.Find(x => x.Age > 20); //} }
private List <MailMessage> CreateMessage() { MyProxy proxy; proxy = new MyProxy(); //Console.WriteLine("Client is running at " + DateTime.Now.ToString()); try { var result1 = proxy.GetBirthdays(); List <MailMessage> msg = new List <MailMessage>(); foreach (Employee emp in result1) { MailDefinition md = new MailDefinition(); md.From = "*****@*****.**"; md.IsBodyHtml = true; md.Subject = "Happy Birthday!"; ListDictionary replacements = new ListDictionary(); replacements.Add("{FirstName}", emp.Name); replacements.Add("{LastName}", emp.Lastname); string body = "Happy BirthDay " + emp.Name + " " + emp.Lastname; msg.Add(md.CreateMailMessage("*****@*****.**", replacements, body, new System.Web.UI.Control())); //return msg; } return(msg); } catch (Exception ex) { throw ex; } finally { proxy.Close(); } }
public void GetRealProxy() { var port = NetworkHelpers.FindFreePort(); TcpChannel chn = new TcpChannel(port); ChannelServices.RegisterChannel(chn); try { RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap", WellKnownObjectMode.Singleton); MyProxy proxy = new MyProxy(typeof(MarshalObject), (MarshalByRefObject)Activator.GetObject(typeof(MarshalObject), $"tcp://localhost:{port}/MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap")); MarshalObject objRem = (MarshalObject)proxy.GetTransparentProxy(); RealProxy rp = RemotingServices.GetRealProxy(objRem); Assert.IsNotNull(rp, "#A12"); Assert.AreEqual("MonoTests.System.Runtime.Remoting.RemotingServicesInternal.MyProxy", rp.GetType().ToString(), "#A13"); } finally { ChannelServices.UnregisterChannel(chn); } }
public void ProxyTypeGenerator_GeneratorTypeWithInjection() { var implementation = new MyProxy(); var proxy = new ProxyTypeGenerator() .CreateProxy( typeof(IMyProxy), implementation, (context) => { context.TypeBuilder.InheritsFrom <MarshalByRefObject>(); }, new ProxyOptions() { TypeName = Guid.NewGuid().ToString() }); Assert.IsNotNull(proxy); Assert.IsTrue(proxy is MarshalByRefObject); }
public void Test_Proxy() { int result = 0; ISubject mySubject = new MySubject(); result = mySubject.Request("param1"); Assert.AreEqual(1, result); ISubject myProxy = new MyProxy(mySubject); // adds 1000 for each proxy call result = myProxy.Request("param2"); Assert.AreEqual(1001, result); result = myProxy.Request("param3"); Assert.AreEqual(2001, result); result = myProxy.Request(""); Assert.AreEqual(3001, result); }
public static void Main() { try { TcpChannel myTcpChannel = new TcpChannel(8086); ChannelServices.RegisterChannel(myTcpChannel); MyProxy myProxyObject = new MyProxy(typeof(PrintServer)); PrintServer myPrintServer = (PrintServer)myProxyObject.GetTransparentProxy(); if (myPrintServer == null) { Console.WriteLine("Could not locate server"); } else { Console.WriteLine(myPrintServer.MyPrintMethod("String1", 1.2, 6)); } Console.WriteLine("Calling the Proxy"); int kValue = myPrintServer.MyPrintMethod("String1", 1.2, 6); Console.WriteLine("Checking result"); if (kValue == 6) { Console.WriteLine("PrintServer.MyPrintMethod PASSED : returned {0}", kValue); } else { Console.WriteLine("PrintServer.MyPrintMethod FAILED : returned {0}", kValue); } Console.WriteLine("Sample Done"); } catch (Exception e) { Console.WriteLine("Exception caught!!!"); Console.WriteLine("The source of exception: " + e.Source); Console.WriteLine("The Message of exception: " + e.Message); } }
private void TimerProxy_Tick(object sender, EventArgs e) { DateTime dt = DateTime.Now; if (dt.Hour >= 9 && dt.Hour < 15) { if (MyProxy.GoodProxyServer.Count <= (Master.Scripts().Count() * 2)) { AddLog("Proxy: Count(" + MyProxy.GoodProxyServer.Count.ToString() + ") < Script"); MyProxy.VerifyProxy(); } else { if (dt.Minute == 10 || dt.Minute == 25 || dt.Minute == 40 || dt.Minute == 55) { AddLog("Proxy: 10,25,40,55 Count(" + MyProxy.GoodProxyServer.Count.ToString() + ")"); MyProxy.GoodProxyServer.Clear(); MyProxy.VerifyProxy(); } } } }
static int Main () { R1 myobj = new R1 (); long lres; MyProxy real_proxy = new MyProxy (myobj); R1 o = (R1)real_proxy.GetTransparentProxy (); RemoteDelegate2 d2 = new RemoteDelegate2 (o.nonvirtual_Add); d2 (6, 7); IAsyncResult ar1 = d2.BeginInvoke (2, 4, null, null); lres = d2.EndInvoke (ar1); if (lres != 6) return 1; return 0; }
static int Main() { R1 myobj = new R1 (); int res = 0; long lres; MyProxy real_proxy = new MyProxy (myobj); R1 o = (R1)real_proxy.GetTransparentProxy (); if (RemotingServices.IsTransparentProxy (null)) return 1; if (!RemotingServices.IsTransparentProxy (o)) return 2; Console.WriteLine ("XXXXXXXXXXXX: " + RemotingServices.GetRealProxy (o)); if (o.GetType () != myobj.GetType ()) return 3; MyStruct myres = o.Add (2, out res, 3); Console.WriteLine ("Result: " + myres.a + " " + myres.b + " " + myres.c + " " + res); if (myres.a != 2) return 4; if (myres.b != 3) return 5; if (myres.c != 5) return 6; if (res != 5) return 7; R1 o2 = new R1 (); lres = test_call (o2); lres = test_call (o); Console.WriteLine ("Result: " + lres); if (lres != 5) return 8; lres = test_call (o); o.test_field = 2; Console.WriteLine ("test_field: " + o.test_field); if (o.test_field != 2) return 9; RemoteDelegate1 d1 = new RemoteDelegate1 (o.Add); MyStruct myres2 = d1 (2, out res, 3); Console.WriteLine ("Result: " + myres2.a + " " + myres2.b + " " + myres2.c + " " + res); if (myres2.a != 2) return 10; if (myres2.b != 3) return 11; if (myres2.c != 5) return 12; if (res != 5) return 13; RemoteDelegate2 d2 = new RemoteDelegate2 (o.nonvirtual_Add); d2 (6, 7); if (!(real_proxy.GetTransparentProxy () is R2)) return 14; return 0; }
static int Main() { R1 myobj = new R1 (); int res = 0; MyProxy real_proxy = new MyProxy (myobj); R1 o = (R1)real_proxy.GetTransparentProxy (); RemoteDelegate1 d1 = new RemoteDelegate1 (o.Add); IAsyncResult ar = d1.BeginInvoke (2, out res, 3, null, null); MyStruct myres = d1.EndInvoke (out res, ar); Console.WriteLine ("Result: " + myres.a + " " + myres.b + " " + myres.c + " " + res); if (myres.a != 2) return 1; if (myres.b != 3) return 2; if (myres.c != 5) return 3; if (res != 5) return 4; return 0; }
static int Main () { R1 myobj = new R1 (); int res = 0; long lres; MyProxy real_proxy = new MyProxy (myobj); R1 o = (R1)real_proxy.GetTransparentProxy (); if (RemotingServices.IsTransparentProxy (null)) return 1; if (!RemotingServices.IsTransparentProxy (o)) return 2; Console.WriteLine ("XXXXXXXXXXXX: " + RemotingServices.GetRealProxy (o)); if (o.GetType () != myobj.GetType ()) return 3; MyStruct myres = o.Add (2, out res, 3); Console.WriteLine ("Result: " + myres.a + " " + myres.b + " " + myres.c + " " + res); if (myres.a != 2) return 4; if (myres.b != 3) return 5; if (myres.c != 5) return 6; if (res != 5) return 7; R1 o2 = new R1 (); lres = test_call (o2); lres = test_call (o); Console.WriteLine ("Result: " + lres); if (lres != 5) return 8; lres = test_call (o); o.test_field = 2; Console.WriteLine ("test_field: " + o.test_field); if (o.test_field != 2) return 9; RemoteDelegate1 d1 = new RemoteDelegate1 (o.Add); MyStruct myres2 = d1 (2, out res, 3); Console.WriteLine ("Result: " + myres2.a + " " + myres2.b + " " + myres2.c + " " + res); if (myres2.a != 2) return 10; if (myres2.b != 3) return 11; if (myres2.c != 5) return 12; if (res != 5) return 13; RemoteDelegate2 d2 = new RemoteDelegate2 (o.nonvirtual_Add); d2 (6, 7); if (!(real_proxy.GetTransparentProxy () is R2)) return 14; /* Test what happens if the proxy doesn't return the required information */ EmptyProxy handler = new EmptyProxy ( typeof (R3) ); R3 o3 = (R3)handler.GetTransparentProxy(); if (o3.anObject != null) return 15; if (o.null_test_field != null) return 16; return 0; }