GOLF(2gg)

NAME
write-array - (array)

PURPOSE
Store value into an array.

SYNTAX

        write-array <array> \
            key <key> \
            value <value> \
            [ old-value <old value> ]

DESCRIPTION
write-array will store a <value> (in "value" clause) under index <key> (in "key" clause) into <array>, which must be created with new-array. <key> is a number from 0 up to (excluding) the currently allocated array size (see new-array). The type of <value> is determined when <array> is created (see "type" clause), and can be either a string, number or a boolean.

<key> and <value> are collectively called an "element".

The old value associated under index <key> is returned in <old value> (in "old-value" clause) and <value> will replace the old value.

If an <array> was created with "process-scope" clause (see new-array), then the element <value> will not be freed when the current request ends, rather it will persist while the process runs, unless deleted (see read-array with delete clause).

EXAMPLES
Writing data to an array:

        new-array arr
        write-array arr key 100 value "some data"

Writing new value with the same key index and obtaining the previous value (which is "some data"):

        write-array arr key 100 value "new data" old-value od
        @Previous value for this key index is <<print-out od>>

The following is an array service, where a process-scoped array is created. It provides inserting, deleting and querying indexed keys. Maximum number of keys it holds is 10,000,000 (indexed from 0 to 9,999,999). Such a service process can run indefinitely. Create file arrsrv.golf:

        %% /arrsrv public
            do-once
            new-array arr max-size 10000000 process-scope type string
            end-do-once

            // Get input parameters
            get-param op
            get-param key
            get-param data
            // Convert string keye to number
            string-number key to key_n

            if-true op equal "add" // Add data to array
                write-array arr key key_n value data old-value old_data
                delete-string old_data
                @Added [<<print-out key>>]
            else-if op equal "delete" // Delete data and obtain the value deleted
                read-array arr key key_n value val delete
                @Deleted [<<print-out val>>]
                delete-string val
            else-if op equal "query" // Query hash based on key value
                read-array arr key key_n value val
                @Value [<<print-out val>>]
            end-if
        %%

Create and make the application, then run it as service:

        // Create application
        gg -k arr
        // Make application
        gg -q
        // Start application (single process key service)
        mgrg -w 1 arr

Try it from a command line client (see gg):

        // Add data
        gg -r --req="/arrsrv/op=add/key=15/data=15" --service --app="/arr" --exec
        // Query data
        gg -r --req="/arrsrv/op=query/key=15" --service --app="/arr" --exec
        // Delete data
        gg -r --req="/arrsrv/op=delete/key=15" --service --app="/arr" --exec

See read-array for more examples.

SEE ALSO
 Array

new-array purge-array read-array write-array See all documentation