You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ignite.apache.org by GitBox <gi...@apache.org> on 2022/05/12 08:13:02 UTC

[GitHub] [ignite] isapego commented on a diff in pull request #10019: IGNITE-16857 Java thin: Add AtomicLong

isapego commented on code in PR #10019:
URL: https://github.com/apache/ignite/pull/10019#discussion_r871019609


##########
modules/core/src/main/java/org/apache/ignite/client/ClientAtomicConfiguration.java:
##########
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.client;
+
+import org.apache.ignite.IgniteAtomicSequence;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+
+/**
+ * Configuration for atomic data structures.
+ */
+public class ClientAtomicConfiguration {
+    /** */
+    public static final int DFLT_BACKUPS = 1;
+
+    /** */
+    public static final CacheMode DFLT_CACHE_MODE = PARTITIONED;
+
+    /** Default atomic sequence reservation size. */
+    public static final int DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE = 1000;

Review Comment:
   Let's make comments consistent here.



##########
modules/core/src/main/java/org/apache/ignite/client/ClientAtomicLong.java:
##########
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.client;
+
+import java.io.Closeable;
+import org.apache.ignite.IgniteException;
+
+/**
+ * Distributed atomic long API.
+ * <p>
+ * <h1 class="header">Functionality</h1>
+ * Distributed atomic long includes the following main functionality:
+ * <ul>
+ * <li>
+ * Method {@link #get()} gets current value of atomic long.
+ * </li>
+ * <li>
+ * Various {@code get..(..)} methods get current value of atomic long
+ * and increase or decrease value of atomic long.
+ * </li>
+ * <li>
+ * Method {@link #addAndGet(long l)} sums {@code l} with current value of atomic long
+ * and returns result.
+ * </li>
+ * <li>
+ * Method {@link #incrementAndGet()} increases value of atomic long and returns result.
+ * </li>
+ * <li>
+ * Method {@link #decrementAndGet()} decreases value of atomic long and returns result.
+ * </li>
+ * <li>
+ * Method {@link #getAndSet(long l)} gets current value of atomic long and sets {@code l}
+ * as value of atomic long.
+ * </li>
+ * <li>
+ * Method {@link #name()} gets name of atomic long.
+ * </li>
+ * </ul>
+ * <p>
+ * <h1 class="header">Creating Distributed Atomic Long</h1>
+ * Instance of distributed atomic long can be created by calling the following method:
+ * <ul>
+ *     <li>{@link IgniteClient#atomicLong(String, long, boolean)}</li>
+ * </ul>
+ * @see IgniteClient#atomicLong(String, long, boolean)
+ */
+

Review Comment:
   Is this empyline here intended?



##########
modules/core/src/main/java/org/apache/ignite/client/ClientAtomicConfiguration.java:
##########
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.client;
+
+import org.apache.ignite.IgniteAtomicSequence;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+
+/**
+ * Configuration for atomic data structures.
+ */
+public class ClientAtomicConfiguration {
+    /** */
+    public static final int DFLT_BACKUPS = 1;
+
+    /** */
+    public static final CacheMode DFLT_CACHE_MODE = PARTITIONED;
+
+    /** Default atomic sequence reservation size. */
+    public static final int DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE = 1000;
+
+    /** Default batch size for all cache's sequences. */

Review Comment:
   Not sure the `Default` word is needed here



##########
modules/core/src/main/java/org/apache/ignite/client/ClientAtomicConfiguration.java:
##########
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.client;
+
+import org.apache.ignite.IgniteAtomicSequence;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+
+/**
+ * Configuration for atomic data structures.
+ */
+public class ClientAtomicConfiguration {
+    /** */
+    public static final int DFLT_BACKUPS = 1;
+
+    /** */
+    public static final CacheMode DFLT_CACHE_MODE = PARTITIONED;
+
+    /** Default atomic sequence reservation size. */
+    public static final int DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE = 1000;
+
+    /** Default batch size for all cache's sequences. */
+    private int seqReserveSize = DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE;
+
+    /** Cache mode. */
+    private CacheMode cacheMode = DFLT_CACHE_MODE;
+
+    /** Number of backups. */
+    private int backups = DFLT_BACKUPS;
+
+    /** Group name. */
+    private String grpName;
+
+    /**
+     * @return Number of backup nodes.
+     */
+    public int getBackups() {
+        return backups;
+    }
+
+    /**
+     * Constructor.

Review Comment:
   This is not a constructor



##########
modules/core/src/main/java/org/apache/ignite/client/ClientAtomicLong.java:
##########
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.client;
+
+import java.io.Closeable;
+import org.apache.ignite.IgniteException;
+
+/**
+ * Distributed atomic long API.
+ * <p>
+ * <h1 class="header">Functionality</h1>
+ * Distributed atomic long includes the following main functionality:
+ * <ul>
+ * <li>
+ * Method {@link #get()} gets current value of atomic long.
+ * </li>
+ * <li>
+ * Various {@code get..(..)} methods get current value of atomic long
+ * and increase or decrease value of atomic long.
+ * </li>
+ * <li>
+ * Method {@link #addAndGet(long l)} sums {@code l} with current value of atomic long
+ * and returns result.
+ * </li>
+ * <li>
+ * Method {@link #incrementAndGet()} increases value of atomic long and returns result.
+ * </li>
+ * <li>
+ * Method {@link #decrementAndGet()} decreases value of atomic long and returns result.
+ * </li>
+ * <li>
+ * Method {@link #getAndSet(long l)} gets current value of atomic long and sets {@code l}
+ * as value of atomic long.
+ * </li>
+ * <li>
+ * Method {@link #name()} gets name of atomic long.
+ * </li>
+ * </ul>
+ * <p>
+ * <h1 class="header">Creating Distributed Atomic Long</h1>
+ * Instance of distributed atomic long can be created by calling the following method:
+ * <ul>
+ *     <li>{@link IgniteClient#atomicLong(String, long, boolean)}</li>
+ * </ul>
+ * @see IgniteClient#atomicLong(String, long, boolean)
+ */
+
+public interface ClientAtomicLong extends Closeable {
+    /**
+     * Name of atomic long.
+     *
+     * @return Name of atomic long.
+     */
+    public String name();
+
+    /**
+     * Gets current value of atomic long.
+     *
+     * @return Current value of atomic long.
+     */
+    public long get() throws IgniteException;
+
+    /**
+     * Increments and gets current value of atomic long.
+     *
+     * @return Value.
+     */
+    public long incrementAndGet() throws IgniteException;
+
+    /**
+     * Gets and increments current value of atomic long.
+     *
+     * @return Value.
+     */
+    public long getAndIncrement() throws IgniteException;
+
+    /**
+     * Adds {@code l} and gets current value of atomic long.
+     *
+     * @param l Number which will be added.
+     * @return Value.
+     */
+    public long addAndGet(long l) throws IgniteException;
+
+    /**
+     * Gets current value of atomic long and adds {@code l}.
+     *
+     * @param l Number which will be added.
+     * @return Value.
+     */
+    public long getAndAdd(long l) throws IgniteException;
+
+    /**
+     * Decrements and gets current value of atomic long.
+     *
+     * @return Value.
+     */
+    public long decrementAndGet() throws IgniteException;
+
+    /**
+     * Gets and decrements current value of atomic long.
+     *
+     * @return Value.
+     */
+    public long getAndDecrement() throws IgniteException;
+
+    /**
+     * Gets current value of atomic long and sets new value {@code l} of atomic long.
+     *
+     * @param l New value of atomic long.
+     * @return Value.
+     */
+    public long getAndSet(long l) throws IgniteException;
+
+    /**
+     * Atomically compares current value to the expected value, and if they are equal, sets current value
+     * to new value.
+     *
+     * @param expVal Expected atomic long's value.
+     * @param newVal New atomic long's value to set if current value equal to expected value.
+     * @return {@code True} if comparison succeeded, {@code false} otherwise.
+     */
+    public boolean compareAndSet(long expVal, long newVal) throws IgniteException;
+
+    /**
+     * Gets status of atomic.
+     *
+     * @return {@code true} if atomic was removed from cache, {@code false} in other case.
+     */
+    public boolean removed();
+
+    /**
+     * Removes this atomic long.
+     *

Review Comment:
   Non-needed empty line



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@ignite.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org